From ab3e0f942546982a38abc1a8919fb85dd8cd4016 Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Wed, 24 Jul 2024 18:47:48 -0500 Subject: [PATCH 01/14] removed non-printable, outdated characters from email matcher --- src/web.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/web.js b/src/web.js index ff5fa1e..b45109f 100644 --- a/src/web.js +++ b/src/web.js @@ -61,6 +61,6 @@ export const fqDomainNameRE = lockdownRE(fqDomainNameREString, 'u') // based on https://stackoverflow.com/a/201378/929494; modified to allow uppercase characters and restrict to valid DNS // names in the domain portion -export const emailREString = `([a-zA-Z0-9!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+(?:\\.[a-zA-Z0-9!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+)*|"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*")@(${fqDomainNameREString})` +export const emailREString = `([a-zA-Z0-9!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+(?:\\.[a-zA-Z0-9!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+)*|"(?:[\\x20-\\x21\\x23-\\x5b\\x5d-\\x7e]|\\\\[\\x20-\\x7f])*")@(${fqDomainNameREString})` // Contact info: Match a valid email. Provides matching groups 1 (user name) and 2 (domain). When using the partial string to create a RE, you must use the 'u' flag. export const emailRE = lockdownRE(emailREString, 'u') From 16ab2e3475b2b3c8c16197cd1bce33e15102b1fd Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Thu, 25 Jul 2024 10:35:43 -0500 Subject: [PATCH 02/14] add newline at end of file --- src/doc/README.02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doc/README.02.md b/src/doc/README.02.md index 8055eb6..d8a1bc8 100644 --- a/src/doc/README.02.md +++ b/src/doc/README.02.md @@ -10,4 +10,4 @@ Unfortunately, there isn't clear consensus on what is allowed in a subdomain vs * the label must begin and end with an alpha-numeric character (any Uniced letter, 0-9; no hyphens), and * the label must not have consecutive hyphens in the 3rd and 4th position. E.g. 'xy--z' is invalid. -Also note, the base domain label REs do not support International Domain Names (IDNs; also called 'special character domain names'). \ No newline at end of file +Also note, the base domain label REs do not support International Domain Names (IDNs; also called 'special character domain names'). From 25db31cef008b8752787ff94e5c6ab75b0c82eb9 Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Thu, 25 Jul 2024 10:38:41 -0500 Subject: [PATCH 03/14] refactor i18n string; allow TLDs with numbers in them (theoretically possible); update email docs --- src/test/data/tlds.js | 2 +- src/web.js | 29 ++++++++++++++++------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/test/data/tlds.js b/src/test/data/tlds.js index 74e830a..b68732a 100644 --- a/src/test/data/tlds.js +++ b/src/test/data/tlds.js @@ -1,6 +1,7 @@ export const goodTLDs = [ 'com', 'cc', + 'a1b', '域', 'alongtld', 'abcdefghijklmnopqprsuvwxyzabcdefghijklmnopqprsuvwxyzabcdefghijk' // 63 characters OK @@ -8,7 +9,6 @@ export const goodTLDs = [ export const badTLDs = [ 'a', - 'a1b', '1a', 'a-z', '-az', diff --git a/src/web.js b/src/web.js index b45109f..bde0dff 100644 --- a/src/web.js +++ b/src/web.js @@ -27,6 +27,9 @@ export const ipFormatREString = `(?:${ipTuple}\\.){3}${ipTuple}` // Web: Matches a string in IP address format. Use 'ipRE' to match actually valid IP addresses. export const ipFormatRE = lockdownRE(ipFormatREString) + +const uniNonASCII = '\\u00a1-\\u{e007f}' + /* Base RE cribbed from: https://github.com/chriso/validator.js via https://stackoverflow.com/a/22648406/929494 Annotations cribbed from https://gist.github.com/dperini/729294 */ export const urlREString = @@ -40,27 +43,27 @@ export const urlREString = // excludes network & broacast addresses // (first & last IP address of each class) '(?:(?:' + ipREString + - '|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?' -// Web: Matches a valid URL. -export const urlRE = lockdownRE(urlREString, 'i') + `|(?:(?:[a-z${uniNonASCII}0-9]+-?)*[a-z${uniNonASCII}0-9]+)(?:\\.(?:[a-z${uniNonASCII}0-9]+-?)*[a-z${uniNonASCII}0-9]+)*(?:\\.(?:[a-z${uniNonASCII}]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?` +// Web: Matches a valid URL. When using the partial string to create a RE, you must use the 'u' or 'v' flag. +export const urlRE = lockdownRE(urlREString, 'ui') -// we want to do '[\p{L}--[a-zA-Z]]', but the 'v' flag breaks on Ubunto Node (weird) -export const tldNameREString = '(?:(?![a-zA-Z])\\p{L}|[a-zA-Z\\p{L}]{2,63})' +// note the 'v' flag breaks on Ubuntu +export const tldNameREString = `(?:(?![0-9])(?:[${uniNonASCII}]|[a-zA-Z${uniNonASCII}][a-zA-Z0-9${uniNonASCII}]{1,62}))` // Web: Matches a Top Level Domain (TLD). See [domain name rules](#domain-name-rules). When using the partial string to create a RE, you must use the 'u' or 'v' flag. export const tldNameRE = lockdownRE(tldNameREString, 'u') -export const subdomainLabelREString = '(?:(?![a-zA-Z])\\p{L}|[\\p{L}0-9]' + - '(?:[\\p{L}0-9]|' + // two letters only - '[\\p{L}0-9\\-](?!--)[\\p{L}0-9\\-]{0,60}[\\p{L}0-9]))' // otherwise, verify the 3rd and 4th positions are not '-' +export const subdomainLabelREString = `(?:[${uniNonASCII}]|[a-zA-Z0-9${uniNonASCII}]` + // allow single unicode + `(?:[a-zA-Z0-9${uniNonASCII}]|` + // two letters only + // otherwise, verify the 3rd and 4th positions are not '-' + `[a-zA-Z0-9${uniNonASCII}\\-](?!--)[a-zA-Z0-9${uniNonASCII}\\-]{0,60}[\\p{L}0-9]))` // Web: Matches a registerable domain name. Partially enforces the 63 byte domain label limit, but this is only valid for non-international (all ASCII) labels because we can only count characters. See [domain name rules](#domain-name-rules). When using the partial string to create a RE, you must use the 'u' or 'v' flag. export const subdomainLabelRE = lockdownRE(subdomainLabelREString, 'u') -export const fqDomainNameREString = `(?![0-9\\p{L}.\\-]{256,})(?:${subdomainLabelREString}\\.)+${tldNameREString}` +// export const fqDomainNameREString = `(?![0-9\\p{L}.\\-]{256,})(?:${subdomainLabelREString}\\.)+${tldNameREString}` +export const fqDomainNameREString = `(?!.{256,})(?:${subdomainLabelREString}\\.)+${tldNameREString}` // Web: Matches fully qualified domain name (one or more subdomains + TLD). Partially enforces the 255 byte FQ domain name limit, but this is only valid for non-international (all ASCII) domain names because we can only count characters. When using the partial string to create a RE, you must use the 'u' or 'v' flag. export const fqDomainNameRE = lockdownRE(fqDomainNameREString, 'u') -// based on https://stackoverflow.com/a/201378/929494; modified to allow uppercase characters and restrict to valid DNS -// names in the domain portion -export const emailREString = `([a-zA-Z0-9!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+(?:\\.[a-zA-Z0-9!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+)*|"(?:[\\x20-\\x21\\x23-\\x5b\\x5d-\\x7e]|\\\\[\\x20-\\x7f])*")@(${fqDomainNameREString})` -// Contact info: Match a valid email. Provides matching groups 1 (user name) and 2 (domain). When using the partial string to create a RE, you must use the 'u' flag. +export const emailREString = `([a-zA-Z0-9${uniNonASCII}!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+(?:\\.[a-zA-Z0-9${uniNonASCII}!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+)*|"(?:[\\x20-\\x21\\x23-\\x5b\\x5d-\\x7e${uniNonASCII}]|\\\\[\\x20-\\x7e${uniNonASCII}])*")@(${fqDomainNameREString})` +// Contact info: Match most valid emails. Provides matching groups 1 (user name) and 2 (domain). When using the partial string to create a RE, you must use the 'u' flag. export const emailRE = lockdownRE(emailREString, 'u') From 78c9b944ba71fae14d84e61bc1ab21ecf793a1bd Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Thu, 25 Jul 2024 11:02:05 -0500 Subject: [PATCH 04/14] move email from web to contacts; abstract non-ascii range --- src/contacts.js | 5 +++++ src/lib/uni-non-ascii.mjs | 1 + src/web.js | 8 +------- 3 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 src/lib/uni-non-ascii.mjs diff --git a/src/contacts.js b/src/contacts.js index 40e33d3..2d29a52 100644 --- a/src/contacts.js +++ b/src/contacts.js @@ -15,6 +15,7 @@ limitations under the License. */ import { lockdownRE } from './lib/lockdown-re' +import { uniNonASCII } from './lib/uni-non-ascii' export const usPhoneREString = '(\\+?1[._ -]?)?(\\(\\d{3}\\)|\\d{3})[._ -]?\\d{3}[._ -]?\\d{4}' // Contact info: Matches US phone numbers with optional country code and area code. @@ -23,3 +24,7 @@ export const usPhoneRE = lockdownRE(usPhoneREString) export const zipCodeREString = '\\d{5}([._ -]?\\d{4})?' // Contact info: Matches 5 or 9 digit US zip codes. export const zipCodeRE = lockdownRE(zipCodeREString) + +export const emailREString = `([a-zA-Z0-9${uniNonASCII}!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+(?:\\.[a-zA-Z0-9${uniNonASCII}!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+)*|"(?:[\\x20-\\x21\\x23-\\x5b\\x5d-\\x7e${uniNonASCII}]|\\\\[\\x20-\\x7e${uniNonASCII}])*")@(${fqDomainNameREString})` +// Contact info: Match most valid emails. Provides matching groups 1 (user name) and 2 (domain). When using the partial string to create a RE, you must use the 'u' flag. +export const emailRE = lockdownRE(emailREString, 'u') \ No newline at end of file diff --git a/src/lib/uni-non-ascii.mjs b/src/lib/uni-non-ascii.mjs new file mode 100644 index 0000000..4cc5c8b --- /dev/null +++ b/src/lib/uni-non-ascii.mjs @@ -0,0 +1 @@ +export const uniNonASCII = '\\u00a1-\\u{e007f}' \ No newline at end of file diff --git a/src/web.js b/src/web.js index bde0dff..3d26400 100644 --- a/src/web.js +++ b/src/web.js @@ -15,6 +15,7 @@ limitations under the License. */ import { lockdownRE } from './lib/lockdown-re' +import { uniNonASCII } from './lib/uni-non-ascii' export const ipREString = '(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])' + '(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}' + @@ -27,9 +28,6 @@ export const ipFormatREString = `(?:${ipTuple}\\.){3}${ipTuple}` // Web: Matches a string in IP address format. Use 'ipRE' to match actually valid IP addresses. export const ipFormatRE = lockdownRE(ipFormatREString) - -const uniNonASCII = '\\u00a1-\\u{e007f}' - /* Base RE cribbed from: https://github.com/chriso/validator.js via https://stackoverflow.com/a/22648406/929494 Annotations cribbed from https://gist.github.com/dperini/729294 */ export const urlREString = @@ -63,7 +61,3 @@ export const subdomainLabelRE = lockdownRE(subdomainLabelREString, 'u') export const fqDomainNameREString = `(?!.{256,})(?:${subdomainLabelREString}\\.)+${tldNameREString}` // Web: Matches fully qualified domain name (one or more subdomains + TLD). Partially enforces the 255 byte FQ domain name limit, but this is only valid for non-international (all ASCII) domain names because we can only count characters. When using the partial string to create a RE, you must use the 'u' or 'v' flag. export const fqDomainNameRE = lockdownRE(fqDomainNameREString, 'u') - -export const emailREString = `([a-zA-Z0-9${uniNonASCII}!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+(?:\\.[a-zA-Z0-9${uniNonASCII}!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+)*|"(?:[\\x20-\\x21\\x23-\\x5b\\x5d-\\x7e${uniNonASCII}]|\\\\[\\x20-\\x7e${uniNonASCII}])*")@(${fqDomainNameREString})` -// Contact info: Match most valid emails. Provides matching groups 1 (user name) and 2 (domain). When using the partial string to create a RE, you must use the 'u' flag. -export const emailRE = lockdownRE(emailREString, 'u') From 299370ebe7ac9d40a8391bef7eea951d011c2fb8 Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Thu, 25 Jul 2024 11:40:39 -0500 Subject: [PATCH 05/14] update CATALYST to SDLC --- make/10-resources.mk | 16 +++++++-------- make/15-data-finder.mk | 6 +++--- make/20-js-src-finder.mk | 10 +++++----- make/50-readme.mk | 4 ++-- make/50-regex-repo-js.mk | 12 ++++++------ make/55-lint.mk | 26 ++++++++++++------------- make/55-test.mk | 42 ++++++++++++++++++++-------------------- 7 files changed, 58 insertions(+), 58 deletions(-) diff --git a/make/10-resources.mk b/make/10-resources.mk index 63cf830..9b846ae 100644 --- a/make/10-resources.mk +++ b/make/10-resources.mk @@ -1,14 +1,14 @@ # This file was generated by @liquid-labs/catalyst-builder-node. Refer to # https://npmjs.com/package/@liquid-labs/catalyst-builder-node for further details -CATALYST_BABEL:=npx babel -CATALYST_BABEL_CONFIG:=$(shell npm explore @liquid-labs/sdlc-resource-babel-and-rollup -- pwd)/dist/babel/babel.config.cjs +SDLC_BABEL:=npx babel +SDLC_BABEL_CONFIG:=$(shell npm explore @liquid-labs/sdlc-resource-babel-and-rollup -- pwd)/dist/babel/babel.config.cjs -CATALYST_ROLLUP:=npx rollup -CATALYST_ROLLUP_CONFIG:=$(shell npm explore @liquid-labs/sdlc-resource-babel-and-rollup -- pwd)/dist/rollup/rollup.config.mjs +SDLC_ROLLUP:=npx rollup +SDLC_ROLLUP_CONFIG:=$(shell npm explore @liquid-labs/sdlc-resource-babel-and-rollup -- pwd)/dist/rollup/rollup.config.mjs -CATALYST_JEST:=npx jest -CATALYST_JEST_CONFIG:=$(shell npm explore @liquid-labs/sdlc-resource-jest -- pwd)/dist/jest.config.js +SDLC_JEST:=npx jest +SDLC_JEST_CONFIG:=$(shell npm explore @liquid-labs/sdlc-resource-jest -- pwd)/dist/jest.config.js -CATALYST_ESLINT:=npx eslint -CATALYST_ESLINT_CONFIG:=$(shell npm explore @liquid-labs/sdlc-resource-eslint -- pwd)/dist/eslint.config.cjs +SDLC_ESLINT:=npx eslint +SDLC_ESLINT_CONFIG:=$(shell npm explore @liquid-labs/sdlc-resource-eslint -- pwd)/dist/eslint.config.cjs diff --git a/make/15-data-finder.mk b/make/15-data-finder.mk index 66d1ee5..85c44ea 100644 --- a/make/15-data-finder.mk +++ b/make/15-data-finder.mk @@ -1,8 +1,8 @@ # This file was generated by @liquid-labs/catalyst-builder-node. Refer to # https://npmjs.com/package/@liquid-labs/catalyst-builder-node for further details -CATALYST_DATA_SELECTOR=\( -path "*/test/data/*" -o -path "*/test/data-*/*" -o -path "*/test-data/*" \) +SDLC_DATA_SELECTOR=\( -path "*/test/data/*" -o -path "*/test/data-*/*" -o -path "*/test-data/*" \) # all test data (cli and lib) -CATALYST_TEST_DATA_SRC:=$(shell find $(SRC) -type f $(CATALYST_DATA_SELECTOR)) -CATALYST_TEST_DATA_BUILT:=$(patsubst $(SRC)/%, $(TEST_STAGING)/%, $(CATALYST_TEST_DATA_SRC)) +SDLC_TEST_DATA_SRC:=$(shell find $(SRC) -type f $(SDLC_DATA_SELECTOR)) +SDLC_TEST_DATA_BUILT:=$(patsubst $(SRC)/%, $(TEST_STAGING)/%, $(SDLC_TEST_DATA_SRC)) diff --git a/make/20-js-src-finder.mk b/make/20-js-src-finder.mk index ed55cb1..fea420e 100644 --- a/make/20-js-src-finder.mk +++ b/make/20-js-src-finder.mk @@ -1,10 +1,10 @@ # This file was generated by @liquid-labs/catalyst-builder-node. Refer to # https://npmjs.com/package/@liquid-labs/catalyst-builder-node for further details -CATALYST_JS_SELECTOR=\( -name "*.js" -o -name "*.cjs" -o -name "*.mjs" \) -CATALYST_TEST_SELECTOR=\( -name "*.test.*js" -o -path "*/test/*" \) +SDLC_JS_SELECTOR=\( -name "*.js" -o -name "*.cjs" -o -name "*.mjs" \) +SDLC_TEST_SELECTOR=\( -name "*.test.*js" -o -path "*/test/*" \) # all source, non-test files (cli and lib) -CATALYST_ALL_JS_FILES_SRC:=$(shell find $(SRC) $(CATALYST_JS_SELECTOR) -not $(CATALYST_DATA_SELECTOR) -type f) -CATALYST_ALL_NON_TEST_JS_FILES_SRC:=$(shell find $(SRC) $(CATALYST_JS_SELECTOR) -not $(CATALYST_DATA_SELECTOR) -not $(CATALYST_TEST_SELECTOR) -type f) -CATALYST_JS_TEST_FILES_BUILT:=$(patsubst %.cjs, %.js, $(patsubst %.mjs, %.js, $(patsubst $(SRC)/%, test-staging/%, $(CATALYST_ALL_JS_FILES_SRC)))) +SDLC_ALL_JS_FILES_SRC:=$(shell find $(SRC) $(SDLC_JS_SELECTOR) -not $(SDLC_DATA_SELECTOR) -type f) +SDLC_ALL_NON_TEST_JS_FILES_SRC:=$(shell find $(SRC) $(SDLC_JS_SELECTOR) -not $(SDLC_DATA_SELECTOR) -not $(SDLC_TEST_SELECTOR) -type f) +SDLC_JS_TEST_FILES_BUILT:=$(patsubst %.cjs, %.js, $(patsubst %.mjs, %.js, $(patsubst $(SRC)/%, test-staging/%, $(SDLC_ALL_JS_FILES_SRC)))) diff --git a/make/50-readme.mk b/make/50-readme.mk index e7ad424..68942b6 100644 --- a/make/50-readme.mk +++ b/make/50-readme.mk @@ -2,10 +2,10 @@ README_SRC:=$(SRC)/doc/README.01.md $(SRC)/doc/README.02.md README_BUILT:=README.md DOC_EXTRACTOR:=$(SRC)/doc-extractor/doc-extractor.mjs -$(README_BUILT): $(README_SRC) $(DOC_EXTRACTOR) $(CATALYST_ALL_NON_TEST_JS_FILES_SRC) +$(README_BUILT): $(README_SRC) $(DOC_EXTRACTOR) $(SDLC_ALL_NON_TEST_JS_FILES_SRC) cp $< $@ node $(DOC_EXTRACTOR) cat $(SRC)/doc/README.02.md >> $@ -BUILD_TARGETS:=$(README_BUILT) \ No newline at end of file +BUILD_TARGETS+=$(README_BUILT) \ No newline at end of file diff --git a/make/50-regex-repo-js.mk b/make/50-regex-repo-js.mk index 893a8ca..3ea062b 100644 --- a/make/50-regex-repo-js.mk +++ b/make/50-regex-repo-js.mk @@ -5,14 +5,14 @@ # build dist/regex-repo.js ##### -CATALYST_REGEX_REPO_JS:=$(DIST)/regex-repo.js -CATALYST_REGEX_REPO_JS_ENTRY=$(SRC)/index.js -BUILD_TARGETS+=$(CATALYST_REGEX_REPO_JS) +SDLC_REGEX_REPO_JS:=$(DIST)/regex-repo.js +SDLC_REGEX_REPO_JS_ENTRY=$(SRC)/index.js +BUILD_TARGETS+=$(SDLC_REGEX_REPO_JS) -$(CATALYST_REGEX_REPO_JS): package.json $(CATALYST_ALL_NON_TEST_JS_FILES_SRC) - JS_BUILD_TARGET=$(CATALYST_REGEX_REPO_JS_ENTRY) \ +$(SDLC_REGEX_REPO_JS): package.json $(SDLC_ALL_NON_TEST_JS_FILES_SRC) + JS_BUILD_TARGET=$(SDLC_REGEX_REPO_JS_ENTRY) \ JS_OUT=$@ \ - $(CATALYST_ROLLUP) --config $(CATALYST_ROLLUP_CONFIG) + $(SDLC_ROLLUP) --config $(SDLC_ROLLUP_CONFIG) ##### # end dist/regex-repo.js diff --git a/make/55-lint.mk b/make/55-lint.mk index e8eee56..9a6e848 100644 --- a/make/55-lint.mk +++ b/make/55-lint.mk @@ -5,26 +5,26 @@ # lint rules ##### -CATALYST_LINT_REPORT:=$(QA)/lint.txt -CATALYST_LINT_PASS_MARKER:=$(QA)/.lint.passed -LINT_TARGETS+=$(CATALYST_LINT_REPORT) $(CATALYST_LINT_PASS_MARKER) -PRECIOUS_TARGETS+=$(CATALYST_LINT_REPORT) +SDLC_LINT_REPORT:=$(QA)/lint.txt +SDLC_LINT_PASS_MARKER:=$(QA)/.lint.passed +LINT_TARGETS+=$(SDLC_LINT_REPORT) $(SDLC_LINT_PASS_MARKER) +PRECIOUS_TARGETS+=$(SDLC_LINT_REPORT) -$(CATALYST_LINT_REPORT) $(CATALYST_LINT_PASS_MARKER): $(CATALYST_ALL_JS_FILES_SRC) +$(SDLC_LINT_REPORT) $(SDLC_LINT_PASS_MARKER): $(SDLC_ALL_JS_FILES_SRC) mkdir -p $(dir $@) - echo -n 'Test git rev: ' > $(CATALYST_LINT_REPORT) - git rev-parse HEAD >> $(CATALYST_LINT_REPORT) + echo -n 'Test git rev: ' > $(SDLC_LINT_REPORT) + git rev-parse HEAD >> $(SDLC_LINT_REPORT) ( set -e; set -o pipefail; \ - ESLINT_USE_FLAT_CONFIG=true $(CATALYST_ESLINT) \ - --config $(CATALYST_ESLINT_CONFIG) \ + ESLINT_USE_FLAT_CONFIG=true $(SDLC_ESLINT) \ + --config $(SDLC_ESLINT_CONFIG) \ . \ - | tee -a $(CATALYST_LINT_REPORT); \ - touch $(CATALYST_LINT_PASS_MARKER) ) + | tee -a $(SDLC_LINT_REPORT); \ + touch $(SDLC_LINT_PASS_MARKER) ) lint-fix: @( set -e; set -o pipefail; \ - ESLINT_USE_FLAT_CONFIG=true $(CATALYST_ESLINT) \ - --config $(CATALYST_ESLINT_CONFIG) \ + ESLINT_USE_FLAT_CONFIG=true $(SDLC_ESLINT) \ + --config $(SDLC_ESLINT_CONFIG) \ --fix . ) ##### diff --git a/make/55-test.mk b/make/55-test.mk index c56f39b..1d57346 100644 --- a/make/55-test.mk +++ b/make/55-test.mk @@ -5,48 +5,48 @@ # test rules ##### -CATALYST_TEST_REPORT:=$(QA)/unit-test.txt -CATALYST_TEST_PASS_MARKER:=$(QA)/.unit-test.passed -CATALYST_COVERAGE_REPORTS:=$(QA)/coverage -TEST_TARGETS+=$(CATALYST_TEST_REPORT) $(CATALYST_TEST_PASS_MARKER) $(CATALYST_COVERAGE_REPORTS) -PRECIOUS_TARGETS+=$(CATALYST_TEST_REPORT) +SDLC_TEST_REPORT:=$(QA)/unit-test.txt +SDLC_TEST_PASS_MARKER:=$(QA)/.unit-test.passed +SDLC_COVERAGE_REPORTS:=$(QA)/coverage +TEST_TARGETS+=$(SDLC_TEST_REPORT) $(SDLC_TEST_PASS_MARKER) $(SDLC_COVERAGE_REPORTS) +PRECIOUS_TARGETS+=$(SDLC_TEST_REPORT) -CATALYST_TEST_FILES_BUILT:=$(patsubst %.cjs, %.js, $(patsubst %.mjs, %.js, $(patsubst $(SRC)/%, $(TEST_STAGING)/%, $(CATALYST_ALL_JS_FILES_SRC)))) +SDLC_TEST_FILES_BUILT:=$(patsubst %.cjs, %.js, $(patsubst %.mjs, %.js, $(patsubst $(SRC)/%, $(TEST_STAGING)/%, $(SDLC_ALL_JS_FILES_SRC)))) -$(CATALYST_TEST_DATA_BUILT): $(TEST_STAGING)/%: $(SRC)/% +$(SDLC_TEST_DATA_BUILT): $(TEST_STAGING)/%: $(SRC)/% @echo "Copying test data..." @mkdir -p $(dir $@) @cp $< $@ # Jest is not picking up the external maps, so we inline them for the test. (As of?) -$(CATALYST_TEST_FILES_BUILT) &: $(CATALYST_ALL_JS_FILES_SRC) +$(SDLC_TEST_FILES_BUILT) &: $(SDLC_ALL_JS_FILES_SRC) rm -rf $(TEST_STAGING) mkdir -p $(TEST_STAGING) - NODE_ENV=test $(CATALYST_BABEL) \ - --config-file=$(CATALYST_BABEL_CONFIG) \ + NODE_ENV=test $(SDLC_BABEL) \ + --config-file=$(SDLC_BABEL_CONFIG) \ --out-dir=./$(TEST_STAGING) \ --source-maps=inline \ $(SRC) # remove because it's not really part of the test rm $(TEST_STAGING)/doc-extractor/doc-extractor.js -$(CATALYST_TEST_PASS_MARKER) $(CATALYST_TEST_REPORT) $(TEST_STAGING)/coverage &: package.json $(CATALYST_TEST_FILES_BUILT) $(CATALYST_TEST_DATA_BUILT) +$(SDLC_TEST_PASS_MARKER) $(SDLC_TEST_REPORT) $(TEST_STAGING)/coverage &: package.json $(SDLC_TEST_FILES_BUILT) $(SDLC_TEST_DATA_BUILT) rm -rf $@ mkdir -p $(dir $@) - echo -n 'Test git rev: ' > $(CATALYST_TEST_REPORT) - git rev-parse HEAD >> $(CATALYST_TEST_REPORT) + echo -n 'Test git rev: ' > $(SDLC_TEST_REPORT) + git rev-parse HEAD >> $(SDLC_TEST_REPORT) ( set -e; set -o pipefail; \ - ( cd $(TEST_STAGING) && $(CATALYST_JEST) \ - --config=$(CATALYST_JEST_CONFIG) \ + ( cd $(TEST_STAGING) && $(SDLC_JEST) \ + --config=$(SDLC_JEST_CONFIG) \ --runInBand \ $(TEST) 2>&1 ) \ - | tee -a $(CATALYST_TEST_REPORT); \ - touch $(CATALYST_TEST_PASS_MARKER) ) + | tee -a $(SDLC_TEST_REPORT); \ + touch $(SDLC_TEST_PASS_MARKER) ) -$(CATALYST_COVERAGE_REPORTS): $(CATALYST_TEST_PASS_MARKER) $(TEST_STAGING)/coverage - rm -rf $(CATALYST_COVERAGE_REPORTS) - mkdir -p $(CATALYST_COVERAGE_REPORTS) - cp -r $(TEST_STAGING)/coverage/* $(CATALYST_COVERAGE_REPORTS) +$(SDLC_COVERAGE_REPORTS): $(SDLC_TEST_PASS_MARKER) $(TEST_STAGING)/coverage + rm -rf $(SDLC_COVERAGE_REPORTS) + mkdir -p $(SDLC_COVERAGE_REPORTS) + cp -r $(TEST_STAGING)/coverage/* $(SDLC_COVERAGE_REPORTS) ##### # end test From 3035361ca7828711a9349e059c06921f1923e13b Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Thu, 25 Jul 2024 11:48:18 -0500 Subject: [PATCH 06/14] moved email stuff to contacts --- src/contacts.js | 1 + src/test/contacts.test.js | 4 ++++ src/test/web.test.js | 4 ---- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/contacts.js b/src/contacts.js index 2d29a52..d535edb 100644 --- a/src/contacts.js +++ b/src/contacts.js @@ -14,6 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +import { fqDomainNameREString } from './web' import { lockdownRE } from './lib/lockdown-re' import { uniNonASCII } from './lib/uni-non-ascii' diff --git a/src/test/contacts.test.js b/src/test/contacts.test.js index ba62c1c..16cfd74 100644 --- a/src/test/contacts.test.js +++ b/src/test/contacts.test.js @@ -16,6 +16,7 @@ limitations under the License. import { groupTest, groupTestPartial } from './lib/test-lib' import * as regex from '../contacts' +import { goodEmails, badEmails } from './data/emails' import { goodUsPhones, badUsPhones } from './data/usPhones' import { goodZipCodes, badZipCodes } from './data/zipCodes' @@ -24,3 +25,6 @@ groupTestPartial(regex.usPhoneREString, goodUsPhones, badUsPhones, 'US phones') groupTest(regex.zipCodeRE, goodZipCodes, badZipCodes, 'US zip codes') groupTestPartial(regex.zipCodeREString, goodZipCodes, badZipCodes, 'US zip codes') + +groupTest(regex.emailRE, goodEmails, badEmails, 'emails') +groupTestPartial(regex.emailREString, goodEmails, badEmails, 'emails', undefined, undefined, 'u') \ No newline at end of file diff --git a/src/test/web.test.js b/src/test/web.test.js index 19bee6e..e8c99fb 100644 --- a/src/test/web.test.js +++ b/src/test/web.test.js @@ -17,7 +17,6 @@ limitations under the License. import { groupTest, groupTestPartial } from './lib/test-lib' import * as regex from '../web' import { goodDomainNames, badDomainNames } from './data/domains' -import { goodEmails, badEmails } from './data/emails' import { goodFQDomainNames, badFQDomainNames } from './data/fq-domains' import { goodIPs, badIPs } from './data/ips' import { goodIPFormats, badIPFormats } from './data/ip-formats' @@ -27,9 +26,6 @@ import { goodUrls, badUrls } from './data/urls' groupTest(regex.subdomainLabelRE, goodDomainNames, badDomainNames, 'subdomain label') groupTestPartial(regex.subdomainLabelREString, goodDomainNames, badDomainNames, 'subdomain label', undefined, undefined, 'u') -groupTest(regex.emailRE, goodEmails, badEmails, 'emails') -groupTestPartial(regex.emailREString, goodEmails, badEmails, 'emails', undefined, undefined, 'u') - groupTest(regex.fqDomainNameRE, goodFQDomainNames, badFQDomainNames, 'FQ domain names') groupTestPartial(regex.fqDomainNameREString, goodFQDomainNames, badFQDomainNames, 'FQ domain names', undefined, undefined, 'u') From 1480fb81ad63ef8f08b64b4c726fbd7161168160 Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Thu, 25 Jul 2024 11:50:13 -0500 Subject: [PATCH 07/14] removed old note re i18n domain names; no longer true --- src/doc/README.02.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/doc/README.02.md b/src/doc/README.02.md index d8a1bc8..bd38376 100644 --- a/src/doc/README.02.md +++ b/src/doc/README.02.md @@ -9,5 +9,3 @@ Unfortunately, there isn't clear consensus on what is allowed in a subdomain vs * are composed of alpha-numeric characters (any Unicode letter plus 0-9) and hyphens ('-'), except * the label must begin and end with an alpha-numeric character (any Uniced letter, 0-9; no hyphens), and * the label must not have consecutive hyphens in the 3rd and 4th position. E.g. 'xy--z' is invalid. - -Also note, the base domain label REs do not support International Domain Names (IDNs; also called 'special character domain names'). From cc28ea0bf3595847656862f7f2311a04bdbb52a7 Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Thu, 25 Jul 2024 16:18:17 -0500 Subject: [PATCH 08/14] upgraded babel/rollup resource --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index dd2a298..e7985a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "3.0.0", "license": "Apache-2.0", "devDependencies": { - "@liquid-labs/sdlc-resource-babel-and-rollup": "^1.0.0-alpha.8", + "@liquid-labs/sdlc-resource-babel-and-rollup": "^1.0.0-alpha.9", "@liquid-labs/sdlc-resource-eslint": "^1.0.0-alpha.10", "@liquid-labs/sdlc-resource-jest": "^1.0.0-alpha.7" }, @@ -2969,9 +2969,9 @@ } }, "node_modules/@liquid-labs/sdlc-resource-babel-and-rollup": { - "version": "1.0.0-alpha.8", - "resolved": "https://registry.npmjs.org/@liquid-labs/sdlc-resource-babel-and-rollup/-/sdlc-resource-babel-and-rollup-1.0.0-alpha.8.tgz", - "integrity": "sha512-u4/s+Wojii9rLBHP/JGuwfh6MxoG5XpvoRJUwrKk9zFVawEvLhV63xu6NTxhktY9Gd6pHrUijNfHbEF5HMATUw==", + "version": "1.0.0-alpha.9", + "resolved": "https://registry.npmjs.org/@liquid-labs/sdlc-resource-babel-and-rollup/-/sdlc-resource-babel-and-rollup-1.0.0-alpha.9.tgz", + "integrity": "sha512-IEDiFYWok+mPyWcPRilOu9EhMcD1Y92OM3xqrjH113qjp/OtKOTMYqXNyU1xSsZWOSMU3ejCOH5n0S2yNtF/KQ==", "dev": true, "dependencies": { "@babel/cli": "^7.23.4", @@ -13262,9 +13262,9 @@ } }, "@liquid-labs/sdlc-resource-babel-and-rollup": { - "version": "1.0.0-alpha.8", - "resolved": "https://registry.npmjs.org/@liquid-labs/sdlc-resource-babel-and-rollup/-/sdlc-resource-babel-and-rollup-1.0.0-alpha.8.tgz", - "integrity": "sha512-u4/s+Wojii9rLBHP/JGuwfh6MxoG5XpvoRJUwrKk9zFVawEvLhV63xu6NTxhktY9Gd6pHrUijNfHbEF5HMATUw==", + "version": "1.0.0-alpha.9", + "resolved": "https://registry.npmjs.org/@liquid-labs/sdlc-resource-babel-and-rollup/-/sdlc-resource-babel-and-rollup-1.0.0-alpha.9.tgz", + "integrity": "sha512-IEDiFYWok+mPyWcPRilOu9EhMcD1Y92OM3xqrjH113qjp/OtKOTMYqXNyU1xSsZWOSMU3ejCOH5n0S2yNtF/KQ==", "dev": true, "requires": { "@babel/cli": "^7.23.4", diff --git a/package.json b/package.json index 7881a47..6a35a33 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "orgKey": "@liquid-labs" }, "devDependencies": { - "@liquid-labs/sdlc-resource-babel-and-rollup": "^1.0.0-alpha.8", + "@liquid-labs/sdlc-resource-babel-and-rollup": "^1.0.0-alpha.9", "@liquid-labs/sdlc-resource-eslint": "^1.0.0-alpha.10", "@liquid-labs/sdlc-resource-jest": "^1.0.0-alpha.7" } From f64c5608e4e8e7f3558156f5389c4b088516f286 Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Thu, 25 Jul 2024 16:21:06 -0500 Subject: [PATCH 09/14] abstracted Unicode match --- src/lib/uni-non-ascii.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/uni-non-ascii.mjs b/src/lib/uni-non-ascii.mjs index 4cc5c8b..890137a 100644 --- a/src/lib/uni-non-ascii.mjs +++ b/src/lib/uni-non-ascii.mjs @@ -1 +1 @@ -export const uniNonASCII = '\\u00a1-\\u{e007f}' \ No newline at end of file +export const uniNonASCII = '\\u0080-\\u{e007f}' \ No newline at end of file From 04da0259ab0b52ea65d6964f6bed055974f1724b Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Thu, 25 Jul 2024 16:21:37 -0500 Subject: [PATCH 10/14] added tests --- src/test/data/emails.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/test/data/emails.js b/src/test/data/emails.js index 8a4249a..9a1085f 100644 --- a/src/test/data/emails.js +++ b/src/test/data/emails.js @@ -22,7 +22,8 @@ export const goodEmails = [ 'foo-_18+Z.t%c@Bart-teg38w.co', 'foo@some.reallylongtld', 'foo@subb-sub.sub.com', - 'foo@some.reallylongtld' + 'foo@some.reallylongtld', + '"quote@username"@foo.com' ] export const badEmails = [ @@ -33,3 +34,12 @@ export const badEmails = [ const badDomainChars = ['_', '@', '+', '%'] badDomainChars.forEach((c) => badEmails.push(`foo@bar${c}baz.com`)) + +export const goodEmailsRFC5322 = [ + ...goodEmails, + '(comment)foo(comment2)@(comment3)[123.123.123.123](comment4)' +] + +export const badEmailsRFC5322 = [ + ...badEmails +] \ No newline at end of file From 5294f7bb58f67e1f4ded9f34598a3c4037ee051f Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Thu, 25 Jul 2024 16:21:54 -0500 Subject: [PATCH 11/14] updated docs --- README.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c6db161..f60a274 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,8 @@ const allColors = cssContent ### Contact info -- __`emailRE`__: Match a valid email. Provides matching groups 1 (user name) and 2 (domain). When using the partial string to create a RE, you must use the 'u' flag. +- __`emailRE`__: Match most valid emails. Provides matching groups 1 (user name) and 2 (domain). When using the partial string to create a RE, you must use the 'u' flag. +- __`emailRFC5322RE`__: Match any valid email address as defined by [RFC 5322](https://www.rfc-editor.org/rfc/rfc5322). This is a large, complicated RE, you may want to use [`emailRE`](#emailre) in most cases. - __`usPhoneRE`__: Matches US phone numbers with optional country code and area code. - __`zipCodeRE`__: Matches 5 or 9 digit US zip codes. @@ -114,7 +115,11 @@ const allColors = cssContent - __`ipRE`__: Matches a valid, non-localhost IP address. - __`subdomainLabelRE`__: Matches a registerable domain name. Partially enforces the 63 byte domain label limit, but this is only valid for non-international (all ASCII) labels because we can only count characters. See [domain name rules](#domain-name-rules). When using the partial string to create a RE, you must use the 'u' or 'v' flag. - __`tldNameRE`__: Matches a Top Level Domain (TLD). See [domain name rules](#domain-name-rules). When using the partial string to create a RE, you must use the 'u' or 'v' flag. -- __`urlRE`__: Matches a valid URL. +- __`urlRE`__: Matches a valid URL. When using the partial string to create a RE, you must use the 'u' or 'v' flag. + +### export const fqDomainNameREString = `(?![0-9\\p{L}.\\-]{256,})(? + +- __`fqDomainNameREString`__: ${subdomainLabelREString}\\.)+${tldNameREString}` ## Domain name rules @@ -127,5 +132,3 @@ Unfortunately, there isn't clear consensus on what is allowed in a subdomain vs * are composed of alpha-numeric characters (any Unicode letter plus 0-9) and hyphens ('-'), except * the label must begin and end with an alpha-numeric character (any Uniced letter, 0-9; no hyphens), and * the label must not have consecutive hyphens in the 3rd and 4th position. E.g. 'xy--z' is invalid. - -Also note, the base domain label REs do not support International Domain Names (IDNs; also called 'special character domain names'). \ No newline at end of file From 63588c0093e0b44d39f11e9df38c0987662e6d45 Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Thu, 25 Jul 2024 16:24:44 -0500 Subject: [PATCH 12/14] lint formatting --- src/contacts.js | 2 +- src/lib/uni-non-ascii.mjs | 2 +- src/test/contacts.test.js | 2 +- src/test/data/emails.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/contacts.js b/src/contacts.js index d535edb..15941eb 100644 --- a/src/contacts.js +++ b/src/contacts.js @@ -28,4 +28,4 @@ export const zipCodeRE = lockdownRE(zipCodeREString) export const emailREString = `([a-zA-Z0-9${uniNonASCII}!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+(?:\\.[a-zA-Z0-9${uniNonASCII}!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+)*|"(?:[\\x20-\\x21\\x23-\\x5b\\x5d-\\x7e${uniNonASCII}]|\\\\[\\x20-\\x7e${uniNonASCII}])*")@(${fqDomainNameREString})` // Contact info: Match most valid emails. Provides matching groups 1 (user name) and 2 (domain). When using the partial string to create a RE, you must use the 'u' flag. -export const emailRE = lockdownRE(emailREString, 'u') \ No newline at end of file +export const emailRE = lockdownRE(emailREString, 'u') diff --git a/src/lib/uni-non-ascii.mjs b/src/lib/uni-non-ascii.mjs index 890137a..ea06cc9 100644 --- a/src/lib/uni-non-ascii.mjs +++ b/src/lib/uni-non-ascii.mjs @@ -1 +1 @@ -export const uniNonASCII = '\\u0080-\\u{e007f}' \ No newline at end of file +export const uniNonASCII = '\\u0080-\\u{e007f}' diff --git a/src/test/contacts.test.js b/src/test/contacts.test.js index 16cfd74..e714cc3 100644 --- a/src/test/contacts.test.js +++ b/src/test/contacts.test.js @@ -27,4 +27,4 @@ groupTest(regex.zipCodeRE, goodZipCodes, badZipCodes, 'US zip codes') groupTestPartial(regex.zipCodeREString, goodZipCodes, badZipCodes, 'US zip codes') groupTest(regex.emailRE, goodEmails, badEmails, 'emails') -groupTestPartial(regex.emailREString, goodEmails, badEmails, 'emails', undefined, undefined, 'u') \ No newline at end of file +groupTestPartial(regex.emailREString, goodEmails, badEmails, 'emails', undefined, undefined, 'u') diff --git a/src/test/data/emails.js b/src/test/data/emails.js index 9a1085f..014a10d 100644 --- a/src/test/data/emails.js +++ b/src/test/data/emails.js @@ -42,4 +42,4 @@ export const goodEmailsRFC5322 = [ export const badEmailsRFC5322 = [ ...badEmails -] \ No newline at end of file +] From 85f1d0db7cb9e908f463ce7c7e9c8f1b03242978 Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Thu, 25 Jul 2024 16:25:48 -0500 Subject: [PATCH 13/14] Save QA files. --- qa/coverage/base.css | 224 +++++++ qa/coverage/block-navigation.js | 87 +++ qa/coverage/clover.xml | 208 +++++++ qa/coverage/coverage-final.json | 14 + qa/coverage/favicon.png | Bin 0 -> 445 bytes qa/coverage/index.html | 131 +++++ qa/coverage/prettify.css | 1 + qa/coverage/prettify.js | 2 + qa/coverage/sort-arrow-sprite.png | Bin 0 -> 138 bytes qa/coverage/sorter.js | 196 +++++++ qa/coverage/src/aws.js.html | 169 ++++++ qa/coverage/src/contacts.js.html | 178 ++++++ qa/coverage/src/css.js.html | 409 +++++++++++++ qa/coverage/src/date-times.mjs.html | 304 ++++++++++ qa/coverage/src/ids.js.html | 181 ++++++ qa/coverage/src/index.html | 236 ++++++++ qa/coverage/src/javascript.js.html | 163 ++++++ qa/coverage/src/lib/css-color-data.js.html | 610 ++++++++++++++++++++ qa/coverage/src/lib/index.html | 161 ++++++ qa/coverage/src/lib/lockdown-re.js.html | 136 +++++ qa/coverage/src/lib/numbers-strings.js.html | 178 ++++++ qa/coverage/src/lib/uni-non-ascii.mjs.html | 88 +++ qa/coverage/src/npm.js.html | 148 +++++ qa/coverage/src/numbers.js.html | 271 +++++++++ qa/coverage/src/web.js.html | 274 +++++++++ qa/lint.txt | 1 + qa/unit-test.txt | 36 ++ 27 files changed, 4406 insertions(+) create mode 100644 qa/coverage/base.css create mode 100644 qa/coverage/block-navigation.js create mode 100644 qa/coverage/clover.xml create mode 100644 qa/coverage/coverage-final.json create mode 100644 qa/coverage/favicon.png create mode 100644 qa/coverage/index.html create mode 100644 qa/coverage/prettify.css create mode 100644 qa/coverage/prettify.js create mode 100644 qa/coverage/sort-arrow-sprite.png create mode 100644 qa/coverage/sorter.js create mode 100644 qa/coverage/src/aws.js.html create mode 100644 qa/coverage/src/contacts.js.html create mode 100644 qa/coverage/src/css.js.html create mode 100644 qa/coverage/src/date-times.mjs.html create mode 100644 qa/coverage/src/ids.js.html create mode 100644 qa/coverage/src/index.html create mode 100644 qa/coverage/src/javascript.js.html create mode 100644 qa/coverage/src/lib/css-color-data.js.html create mode 100644 qa/coverage/src/lib/index.html create mode 100644 qa/coverage/src/lib/lockdown-re.js.html create mode 100644 qa/coverage/src/lib/numbers-strings.js.html create mode 100644 qa/coverage/src/lib/uni-non-ascii.mjs.html create mode 100644 qa/coverage/src/npm.js.html create mode 100644 qa/coverage/src/numbers.js.html create mode 100644 qa/coverage/src/web.js.html create mode 100644 qa/lint.txt create mode 100644 qa/unit-test.txt diff --git a/qa/coverage/base.css b/qa/coverage/base.css new file mode 100644 index 0000000..f418035 --- /dev/null +++ b/qa/coverage/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/qa/coverage/block-navigation.js b/qa/coverage/block-navigation.js new file mode 100644 index 0000000..cc12130 --- /dev/null +++ b/qa/coverage/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/qa/coverage/clover.xml b/qa/coverage/clover.xml new file mode 100644 index 0000000..920f9f6 --- /dev/null +++ b/qa/coverage/clover.xml @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qa/coverage/coverage-final.json b/qa/coverage/coverage-final.json new file mode 100644 index 0000000..9f2e784 --- /dev/null +++ b/qa/coverage/coverage-final.json @@ -0,0 +1,14 @@ +{"/Users/zane/playground/regex-repo/src/aws.js": {"path":"/Users/zane/playground/regex-repo/src/aws.js","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":null}},"1":{"start":{"line":18,"column":27},"end":{"line":18,"column":90}},"2":{"start":{"line":21,"column":38},"end":{"line":21,"column":96}},"3":{"start":{"line":23,"column":32},"end":{"line":23,"column":72}},"4":{"start":{"line":25,"column":36},"end":{"line":25,"column":98}},"5":{"start":{"line":28,"column":30},"end":{"line":28,"column":68}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{},"b":{}} +,"/Users/zane/playground/regex-repo/src/contacts.js": {"path":"/Users/zane/playground/regex-repo/src/contacts.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":null}},"2":{"start":{"line":19,"column":0},"end":{"line":19,"column":null}},"3":{"start":{"line":21,"column":28},"end":{"line":21,"column":95}},"4":{"start":{"line":23,"column":22},"end":{"line":23,"column":52}},"5":{"start":{"line":25,"column":28},"end":{"line":25,"column":55}},"6":{"start":{"line":27,"column":22},"end":{"line":27,"column":52}},"7":{"start":{"line":29,"column":26},"end":{"line":29,"column":268}},"8":{"start":{"line":31,"column":20},"end":{"line":31,"column":53}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"f":{},"b":{}} +,"/Users/zane/playground/regex-repo/src/css.js": {"path":"/Users/zane/playground/regex-repo/src/css.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":null}},"2":{"start":{"line":19,"column":0},"end":{"line":19,"column":null}},"3":{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},"4":{"start":{"line":29,"column":36},"end":{"line":29,"column":73}},"5":{"start":{"line":31,"column":30},"end":{"line":31,"column":68}},"6":{"start":{"line":34,"column":34},"end":{"line":34,"column":88}},"7":{"start":{"line":36,"column":28},"end":{"line":36,"column":64}},"8":{"start":{"line":38,"column":34},"end":{"line":38,"column":91}},"9":{"start":{"line":40,"column":28},"end":{"line":40,"column":64}},"10":{"start":{"line":42,"column":34},"end":{"line":42,"column":91}},"11":{"start":{"line":44,"column":28},"end":{"line":44,"column":64}},"12":{"start":{"line":46,"column":34},"end":{"line":46,"column":91}},"13":{"start":{"line":48,"column":28},"end":{"line":48,"column":64}},"14":{"start":{"line":50,"column":33},"end":{"line":50,"column":89}},"15":{"start":{"line":52,"column":27},"end":{"line":52,"column":62}},"16":{"start":{"line":54,"column":18},"end":{"line":54,"column":62}},"17":{"start":{"line":55,"column":20},"end":{"line":55,"column":82}},"18":{"start":{"line":56,"column":21},"end":{"line":56,"column":97}},"19":{"start":{"line":57,"column":21},"end":{"line":57,"column":80}},"20":{"start":{"line":58,"column":22},"end":{"line":58,"column":88}},"21":{"start":{"line":60,"column":28},"end":{"line":60,"column":80}},"22":{"start":{"line":62,"column":22},"end":{"line":62,"column":52}},"23":{"start":{"line":64,"column":29},"end":{"line":64,"column":83}},"24":{"start":{"line":66,"column":23},"end":{"line":66,"column":54}},"25":{"start":{"line":71,"column":23},"end":{"line":71,"column":72}},"26":{"start":{"line":72,"column":23},"end":{"line":72,"column":114}},"27":{"start":{"line":73,"column":24},"end":{"line":73,"column":129}},"28":{"start":{"line":74,"column":24},"end":{"line":74,"column":110}},"29":{"start":{"line":75,"column":25},"end":{"line":75,"column":125}},"30":{"start":{"line":77,"column":24},"end":{"line":77,"column":117}},"31":{"start":{"line":79,"column":18},"end":{"line":79,"column":44}},"32":{"start":{"line":81,"column":21},"end":{"line":81,"column":84}},"33":{"start":{"line":82,"column":17},"end":{"line":82,"column":78}},"34":{"start":{"line":84,"column":25},"end":{"line":84,"column":60}},"35":{"start":{"line":86,"column":19},"end":{"line":86,"column":46}},"36":{"start":{"line":88,"column":24},"end":{"line":89,"column":97}},"37":{"start":{"line":91,"column":18},"end":{"line":91,"column":44}},"38":{"start":{"line":93,"column":30},"end":{"line":98,"column":5}},"39":{"start":{"line":100,"column":24},"end":{"line":100,"column":56}},"40":{"start":{"line":102,"column":29},"end":{"line":106,"column":5}},"41":{"start":{"line":108,"column":23},"end":{"line":108,"column":54}}},"fnMap":{"0":{"name":"_getRequireWildcardCache","decl":{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},"loc":{"start":{"line":27,"column":30},"end":{"line":27,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":30},"end":{"line":27,"column":null}}]},"1":{"loc":{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},"type":"cond-expr","locations":[{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},{"start":{"line":27,"column":30},"end":{"line":27,"column":null}}]},"2":{"loc":{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},"type":"binary-expr","locations":[{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},{"start":{"line":27,"column":30},"end":{"line":27,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":2,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1},"f":{"0":1},"b":{"0":[1],"1":[0,0],"2":[1,1,1]}} +,"/Users/zane/playground/regex-repo/src/date-times.mjs": {"path":"/Users/zane/playground/regex-repo/src/date-times.mjs","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":null}},"1":{"start":{"line":22,"column":31},"end":{"line":22,"column":195}},"2":{"start":{"line":24,"column":12},"end":{"line":24,"column":46}},"3":{"start":{"line":25,"column":13},"end":{"line":25,"column":29}},"4":{"start":{"line":26,"column":12},"end":{"line":26,"column":41}},"5":{"start":{"line":27,"column":13},"end":{"line":27,"column":36}},"6":{"start":{"line":28,"column":13},"end":{"line":28,"column":39}},"7":{"start":{"line":29,"column":11},"end":{"line":29,"column":76}},"8":{"start":{"line":32,"column":32},"end":{"line":32,"column":111}},"9":{"start":{"line":34,"column":32},"end":{"line":34,"column":86}},"10":{"start":{"line":36,"column":26},"end":{"line":36,"column":60}},"11":{"start":{"line":38,"column":36},"end":{"line":38,"column":85}},"12":{"start":{"line":40,"column":30},"end":{"line":40,"column":68}},"13":{"start":{"line":43,"column":31},"end":{"line":43,"column":172}},"14":{"start":{"line":45,"column":29},"end":{"line":45,"column":89}},"15":{"start":{"line":47,"column":32},"end":{"line":47,"column":122}},"16":{"start":{"line":49,"column":32},"end":{"line":49,"column":84}},"17":{"start":{"line":51,"column":26},"end":{"line":51,"column":60}},"18":{"start":{"line":53,"column":13},"end":{"line":53,"column":20}},"19":{"start":{"line":55,"column":27},"end":{"line":55,"column":105}},"20":{"start":{"line":57,"column":21},"end":{"line":57,"column":50}},"21":{"start":{"line":59,"column":29},"end":{"line":59,"column":107}},"22":{"start":{"line":61,"column":23},"end":{"line":61,"column":54}},"23":{"start":{"line":63,"column":33},"end":{"line":63,"column":78}},"24":{"start":{"line":65,"column":27},"end":{"line":65,"column":62}},"25":{"start":{"line":67,"column":25},"end":{"line":67,"column":112}},"26":{"start":{"line":69,"column":19},"end":{"line":69,"column":46}},"27":{"start":{"line":71,"column":39},"end":{"line":71,"column":133}},"28":{"start":{"line":73,"column":33},"end":{"line":73,"column":74}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1},"f":{},"b":{}} +,"/Users/zane/playground/regex-repo/src/ids.js": {"path":"/Users/zane/playground/regex-repo/src/ids.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":19,"column":25},"end":{"line":19,"column":118}},"2":{"start":{"line":21,"column":19},"end":{"line":21,"column":46}},"3":{"start":{"line":23,"column":24},"end":{"line":23,"column":84}},"4":{"start":{"line":25,"column":18},"end":{"line":25,"column":44}},"5":{"start":{"line":28,"column":23},"end":{"line":28,"column":397}},"6":{"start":{"line":28,"column":366},"end":{"line":28,"column":396}},"7":{"start":{"line":30,"column":24},"end":{"line":30,"column":73}},"8":{"start":{"line":32,"column":18},"end":{"line":32,"column":44}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":28,"column":355},"end":{"line":28,"column":361}},"loc":{"start":{"line":28,"column":366},"end":{"line":28,"column":396}}}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":83,"7":1,"8":1},"f":{"0":83},"b":{}} +,"/Users/zane/playground/regex-repo/src/javascript.js": {"path":"/Users/zane/playground/regex-repo/src/javascript.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":19,"column":35},"end":{"line":19,"column":346}},"2":{"start":{"line":21,"column":29},"end":{"line":21,"column":66}},"3":{"start":{"line":24,"column":31},"end":{"line":24,"column":12997}},"4":{"start":{"line":26,"column":25},"end":{"line":26,"column":58}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{},"b":{}} +,"/Users/zane/playground/regex-repo/src/npm.js": {"path":"/Users/zane/playground/regex-repo/src/npm.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":19,"column":35},"end":{"line":19,"column":93}},"2":{"start":{"line":21,"column":29},"end":{"line":21,"column":66}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} +,"/Users/zane/playground/regex-repo/src/numbers.js": {"path":"/Users/zane/playground/regex-repo/src/numbers.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":46}},"2":{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},"3":{"start":{"line":20,"column":28},"end":{"line":20,"column":50}},"4":{"start":{"line":22,"column":22},"end":{"line":22,"column":52}},"5":{"start":{"line":24,"column":31},"end":{"line":24,"column":55}},"6":{"start":{"line":26,"column":25},"end":{"line":26,"column":58}},"7":{"start":{"line":28,"column":36},"end":{"line":28,"column":65}},"8":{"start":{"line":30,"column":30},"end":{"line":30,"column":68}},"9":{"start":{"line":32,"column":26},"end":{"line":32,"column":45}},"10":{"start":{"line":34,"column":20},"end":{"line":34,"column":48}},"11":{"start":{"line":36,"column":33},"end":{"line":36,"column":59}},"12":{"start":{"line":38,"column":27},"end":{"line":38,"column":62}},"13":{"start":{"line":40,"column":37},"end":{"line":40,"column":67}},"14":{"start":{"line":42,"column":31},"end":{"line":42,"column":70}},"15":{"start":{"line":44,"column":42},"end":{"line":44,"column":77}},"16":{"start":{"line":46,"column":36},"end":{"line":46,"column":80}},"17":{"start":{"line":48,"column":30},"end":{"line":48,"column":53}},"18":{"start":{"line":50,"column":24},"end":{"line":50,"column":56}},"19":{"start":{"line":52,"column":35},"end":{"line":52,"column":63}},"20":{"start":{"line":54,"column":29},"end":{"line":54,"column":66}},"21":{"start":{"line":56,"column":30},"end":{"line":56,"column":53}},"22":{"start":{"line":58,"column":24},"end":{"line":58,"column":56}},"23":{"start":{"line":60,"column":35},"end":{"line":60,"column":63}},"24":{"start":{"line":62,"column":29},"end":{"line":62,"column":66}}},"fnMap":{"0":{"name":"_getRequireWildcardCache","decl":{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},"loc":{"start":{"line":18,"column":46},"end":{"line":18,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},"type":"if","locations":[{"start":{"line":18,"column":46},"end":{"line":18,"column":null}}]},"1":{"loc":{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},"type":"cond-expr","locations":[{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},{"start":{"line":18,"column":46},"end":{"line":18,"column":null}}]},"2":{"loc":{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},"type":"binary-expr","locations":[{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},{"start":{"line":18,"column":46},"end":{"line":18,"column":null}}]}},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1},"f":{"0":1},"b":{"0":[1],"1":[0,0],"2":[1,1,1]}} +,"/Users/zane/playground/regex-repo/src/web.js": {"path":"/Users/zane/playground/regex-repo/src/web.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":null}},"2":{"start":{"line":20,"column":23},"end":{"line":22,"column":50}},"3":{"start":{"line":24,"column":17},"end":{"line":24,"column":42}},"4":{"start":{"line":26,"column":16},"end":{"line":26,"column":52}},"5":{"start":{"line":27,"column":29},"end":{"line":27,"column":64}},"6":{"start":{"line":29,"column":23},"end":{"line":29,"column":54}},"7":{"start":{"line":33,"column":24},"end":{"line":44,"column":204}},"8":{"start":{"line":46,"column":18},"end":{"line":46,"column":50}},"9":{"start":{"line":49,"column":28},"end":{"line":49,"column":120}},"10":{"start":{"line":51,"column":22},"end":{"line":51,"column":57}},"11":{"start":{"line":53,"column":35},"end":{"line":56,"column":85}},"12":{"start":{"line":58,"column":29},"end":{"line":58,"column":71}},"13":{"start":{"line":61,"column":33},"end":{"line":61,"column":100}},"14":{"start":{"line":63,"column":27},"end":{"line":63,"column":67}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":3,"9":3,"10":3,"11":3,"12":3,"13":3,"14":3},"f":{},"b":{}} +,"/Users/zane/playground/regex-repo/src/lib/css-color-data.js": {"path":"/Users/zane/playground/regex-repo/src/lib/css-color-data.js","statementMap":{"0":{"start":{"line":17,"column":26},"end":{"line":34,"column":1}},"1":{"start":{"line":36,"column":26},"end":{"line":38,"column":17}},"2":{"start":{"line":40,"column":26},"end":{"line":171,"column":17}},"3":{"start":{"line":173,"column":25},"end":{"line":175,"column":17}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1},"f":{},"b":{}} +,"/Users/zane/playground/regex-repo/src/lib/lockdown-re.js": {"path":"/Users/zane/playground/regex-repo/src/lib/lockdown-re.js","statementMap":{"0":{"start":{"line":17,"column":26},"end":{"line":17,"column":71}},"1":{"start":{"line":17,"column":42},"end":{"line":17,"column":71}},"2":{"start":{"line":17,"column":71},"end":{"line":17,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":26},"end":{"line":17,"column":27}},"loc":{"start":{"line":17,"column":42},"end":{"line":17,"column":71}}}},"branchMap":{},"s":{"0":9,"1":59,"2":9},"f":{"0":59},"b":{}} +,"/Users/zane/playground/regex-repo/src/lib/numbers-strings.js": {"path":"/Users/zane/playground/regex-repo/src/lib/numbers-strings.js","statementMap":{"0":{"start":{"line":19,"column":26},"end":{"line":19,"column":75}},"1":{"start":{"line":20,"column":31},"end":{"line":20,"column":72}},"2":{"start":{"line":21,"column":21},"end":{"line":21,"column":65}},"3":{"start":{"line":22,"column":28},"end":{"line":22,"column":58}},"4":{"start":{"line":23,"column":32},"end":{"line":23,"column":62}},"5":{"start":{"line":24,"column":37},"end":{"line":25,"column":51}},"6":{"start":{"line":26,"column":25},"end":{"line":26,"column":80}},"7":{"start":{"line":27,"column":30},"end":{"line":28,"column":80}},"8":{"start":{"line":29,"column":25},"end":{"line":29,"column":80}},"9":{"start":{"line":30,"column":30},"end":{"line":31,"column":76}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2},"f":{},"b":{}} +,"/Users/zane/playground/regex-repo/src/lib/uni-non-ascii.mjs": {"path":"/Users/zane/playground/regex-repo/src/lib/uni-non-ascii.mjs","statementMap":{"0":{"start":{"line":1,"column":24},"end":{"line":1,"column":47}}},"fnMap":{},"branchMap":{},"s":{"0":3},"f":{},"b":{}} +} diff --git a/qa/coverage/favicon.png b/qa/coverage/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 100% + Statements + 161/161 +
+ + +
+ 66.66% + Branches + 8/12 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 157/157 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
src +
+
100%143/14366.66%8/12100%3/3100%141/141
src/lib +
+
100%18/18100%0/0100%1/1100%16/16
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/prettify.css b/qa/coverage/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/qa/coverage/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/qa/coverage/prettify.js b/qa/coverage/prettify.js new file mode 100644 index 0000000..b322523 --- /dev/null +++ b/qa/coverage/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/qa/coverage/sort-arrow-sprite.png b/qa/coverage/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/qa/coverage/sorter.js b/qa/coverage/sorter.js new file mode 100644 index 0000000..2bb296a --- /dev/null +++ b/qa/coverage/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/qa/coverage/src/aws.js.html b/qa/coverage/src/aws.js.html new file mode 100644 index 0000000..929fdf6 --- /dev/null +++ b/qa/coverage/src/aws.js.html @@ -0,0 +1,169 @@ + + + + + + Code coverage report for src/aws.js + + + + + + + + + +
+
+

All files / src aws.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +1x +  +  +1x +  +1x +  +1x +  +  +1x + 
/*
+Copyright 2023 Liquid Labs LLC
+ 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ 
+    http://www.apache.org/licenses/LICENSE-2.0
+ 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+import { ipFormatREString } from './web'
+ 
+const invalidS3Partials = `(?!^${ipFormatREString}|^xn--|^sthree-|.+-s3alias$|.+--ol-s3$)`
+// const invalidS3Partials = `(?!^${ipFormatREString}|^xn--|^sthree-)`
+ 
+export const awsS3TABucketNameREString = invalidS3Partials + '^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$'
+// AWS: Matches (most) S3 Transfer Acceleration compatible S3 bucket name. Note `awsS3TABucketNameREString` cannot be used for partial matches.
+export const awsS3TABucketNameRE = new RegExp(awsS3TABucketNameREString)
+ 
+export const awsS3BucketNameREString = invalidS3Partials + '^[a-z0-9](?:\\.?[a-z0-9-]+)+[a-z0-9]$'
+// export const awsS3BucketNameREString = '^[a-z0-9](?:\\.?[a-z0-9-]+)+[a-z0-9]$'
+// AWS: Matches (most) valid S3 bucket name. Note `awsS3BucketNameREString` cannot be used for partial matches. Does not enforce 63 character limit.
+export const awsS3BucketNameRE = new RegExp(awsS3BucketNameREString)
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/contacts.js.html b/qa/coverage/src/contacts.js.html new file mode 100644 index 0000000..4b109c4 --- /dev/null +++ b/qa/coverage/src/contacts.js.html @@ -0,0 +1,178 @@ + + + + + + Code coverage report for src/contacts.js + + + + + + + + + +
+
+

All files / src contacts.js

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x + 
/*
+Copyright 2023 Liquid Labs LLC
+ 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ 
+    http://www.apache.org/licenses/LICENSE-2.0
+ 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+ 
+import { fqDomainNameREString } from './web'
+import { lockdownRE } from './lib/lockdown-re'
+import { uniNonASCII } from './lib/uni-non-ascii'
+ 
+export const usPhoneREString = '(\\+?1[._ -]?)?(\\(\\d{3}\\)|\\d{3})[._ -]?\\d{3}[._ -]?\\d{4}'
+// Contact info: Matches US phone numbers with optional country code and area code.
+export const usPhoneRE = lockdownRE(usPhoneREString)
+ 
+export const zipCodeREString = '\\d{5}([._ -]?\\d{4})?'
+// Contact info: Matches 5 or 9 digit US zip codes.
+export const zipCodeRE = lockdownRE(zipCodeREString)
+ 
+export const emailREString = `([a-zA-Z0-9${uniNonASCII}!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+(?:\\.[a-zA-Z0-9${uniNonASCII}!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+)*|"(?:[\\x20-\\x21\\x23-\\x5b\\x5d-\\x7e${uniNonASCII}]|\\\\[\\x20-\\x7e${uniNonASCII}])*")@(${fqDomainNameREString})`
+// Contact info: Match most valid emails. Provides matching groups 1 (user name) and 2 (domain). When using the partial string to create a RE, you must use the 'u' flag.
+export const emailRE = lockdownRE(emailREString, 'u')
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/css.js.html b/qa/coverage/src/css.js.html new file mode 100644 index 0000000..b78427a --- /dev/null +++ b/qa/coverage/src/css.js.html @@ -0,0 +1,409 @@ + + + + + + Code coverage report for src/css.js + + + + + + + + + +
+
+

All files / src css.js

+
+ +
+ 100% + Statements + 42/42 +
+ + +
+ 66.66% + Branches + 4/6 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 42/42 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +  +  +  +  +  +  +  +2x +  +1x +  +1x +  +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +1x +1x +1x +1x +  +1x +  +1x +  +1x +  +1x +  +  +  +  +1x +1x +1x +1x +1x +  +1x +  +1x +  +1x +1x +  +1x +  +1x +  +1x +  +  +1x +  +1x +  +  +  +  +  +  +1x +  +1x +  +  +  +  +  +1x + 
/*
+Copyright 2023 Liquid Labs LLC
+ 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ 
+    http://www.apache.org/licenses/LICENSE-2.0
+ 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+ 
+import * as pre from './lib/css-color-data'
+import { lockdownRE } from './lib/lockdown-re'
+import {
+  floatStr,
+  zeroTo255Str,
+  zeroTo1FloatStr,
+  zeroTo100PercentStr,
+  zeroTo100FloatPercentStr,
+  zeroTo255FloatStr,
+  zeroTo360Str
+} from './lib/numbers-strings'
+ 
+export const hexColorNoAlphaREString = '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'
+// Colors/CSS: Matches hex specified RGB colors with no alpha channel.
+export const hexColorNoAlphaRE = lockdownRE(hexColorNoAlphaREString)
+ 
+// level 4 adds alpha hex support
+export const hexColorAlphaREString = '#([a-fA-F0-9]{6}|[a-fA-F0-9]{8}|[a-fA-F0-9]{3,4})'
+// Colors/CSS: Matches hex specified RGBA colors with an alpha channel.
+export const hexColorAlphaRE = lockdownRE(hexColorAlphaREString)
+ 
+export const cssPreColors1REString = '(?:' + Object.keys(pre.cssPreColors1).join('|') + ')'
+// Colors/CSS: Matches CSS1 predefined color names.
+export const cssPreColors1RE = lockdownRE(cssPreColors1REString)
+ 
+export const cssPreColors2REString = '(?:' + Object.keys(pre.cssPreColors2).join('|') + ')'
+// Colors/CSS: Matches CSS2 predefined color names.
+export const cssPreColors2RE = lockdownRE(cssPreColors2REString)
+ 
+export const cssPreColors3REString = '(?:' + Object.keys(pre.cssPreColors3).join('|') + ')'
+// Colors/CSS: Matches CSS3 predefined color names.
+export const cssPreColors3RE = lockdownRE(cssPreColors3REString)
+ 
+export const cssPreColorsREString = '(?:' + Object.keys(pre.cssPreColors).join('|') + ')'
+// Colors/CSS: Matches CSS4 predefined color names.
+export const cssPreColorsRE = lockdownRE(cssPreColorsREString)
+ 
+const alphaStr = `(${zeroTo1FloatStr}|${zeroTo100PercentStr})`
+const rgb1IntStr = `rgb\\((\\s*${zeroTo255Str}\\s*,){2}\\s*${zeroTo255Str}\\s*\\)`
+const rgb1PercStr = `rgb\\((\\s*${zeroTo100PercentStr}\\s*,){2}\\s*${zeroTo100PercentStr}\\s*\\)`
+const rgba3IntStr = `rgba\\((\\s*${zeroTo255Str}\\s*,){3}\\s*${alphaStr}\\s*\\)`
+const rgba3PercStr = `rgba\\((\\s*${zeroTo100PercentStr}\\s*,){3}\\s*${alphaStr}\\s*\\)`
+ 
+export const rgbFuncREString = '(?:' + [rgb1IntStr, rgb1PercStr].join('|') + ')'
+// Colors/CSS: Matches CSS1 'rgb(...) using '0...255 and percent (integer) notation.
+export const rgbFuncRE = lockdownRE(rgbFuncREString)
+ 
+export const rgbaFuncREString = '(?:' + [rgba3IntStr, rgba3PercStr].join('|') + ')'
+// Colors/CSS: Matches CSS3 'rgba(...) using '0...255 and percent (integer) notation.
+export const rgbaFuncRE = lockdownRE(rgbaFuncREString)
+ 
+// In level 4, rgba is an alias for rgb, supports floats, and space notation
+// NOTE: The spec allows float values like '+.25e2%', which cannot be recognized
+// via RE and are not supported.
+const alphaFloatStr = `(${zeroTo1FloatStr}|${zeroTo100FloatPercentStr})`
+const rgbDecFuncStr = `(\\s*${zeroTo255FloatStr}\\s*,){2}\\s*${zeroTo255FloatStr}\\s*(,\\s*${alphaFloatStr}\\s*)?`
+const rgbPercFuncStr = `(\\s*${zeroTo100FloatPercentStr}\\s*,){2}\\s*${zeroTo100FloatPercentStr}\\s*(,\\s*${alphaFloatStr}\\s*)?`
+const rgbDecSpaceStr = `(\\s*${zeroTo255FloatStr}\\s+){2}${zeroTo255FloatStr}\\s*(/\\s*${alphaFloatStr}\\s*)?`
+const rgbPercSpaceStr = `(\\s*${zeroTo100FloatPercentStr}\\s+){2}${zeroTo100FloatPercentStr}\\s*(/\\s*${alphaFloatStr}\\s*)?`
+ 
+export const rgbREString = `rgba?\\((${rgbDecFuncStr}|${rgbPercFuncStr}|${rgbDecSpaceStr}|${rgbPercSpaceStr})\\s*\\)`
+// Colors/CSS: Matches CSS4 'rgb(...) and rgba(...) functios  using '0...255 and percent (float) notation.
+export const rgbRE = lockdownRE(rgbREString)
+ 
+const hsl3BaseStr = `\\s*${zeroTo360Str}(deg)?\\s*(,\\s*${zeroTo100PercentStr}\\s*)`
+const hsl3Opts = [`hsl\\(${hsl3BaseStr}{2}\\)`, `hsla\\(${hsl3BaseStr}{3}\\)`]
+ 
+export const hsl3REString = '(?:' + hsl3Opts.join('|') + ')'
+// Colors/CSS: Matches CSS3 'hsl(...) and hsla(...) deg and percent notation.
+export const hsl3RE = lockdownRE(hsl3REString)
+ 
+export const hslREString =
+  `hsla?\\(\\s*${floatStr}(deg|grad|rad|turn)?\\s*(,\\s*${zeroTo100FloatPercentStr}\\s*){2,3}\\)`
+// Colors/CSS: Matches CSS4 'hsl(...) and hsla(...) deg, grad, rad, turn and percent notation.
+export const hslRE = lockdownRE(hslREString)
+ 
+export const cssColor3REString = '(?:' +
+  [hexColorNoAlphaREString, rgb1IntStr, rgb1PercStr, rgba3IntStr, rgba3PercStr]
+    .concat(Object.keys(pre.cssPreColors3))
+    .concat(hsl3Opts)
+    .join('|') +
+  ')'
+// Colors/CSS: Matches CSS3 'hex, rgb, rgba, hsl, and predefined colors.
+export const cssColor3RE = lockdownRE(cssColor3REString)
+ 
+export const cssColorREString = '(?:' +
+  [hexColorAlphaREString, rgbREString, hslREString]
+    .concat(Object.keys(pre.cssPreColors))
+    .join('|') +
+  ')'
+// Colors/CSS: Matches CSS4 'hex, rgb, rgba, hsl, and predefined colors.
+export const cssColorRE = lockdownRE(cssColorREString)
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/date-times.mjs.html b/qa/coverage/src/date-times.mjs.html new file mode 100644 index 0000000..7dd62e4 --- /dev/null +++ b/qa/coverage/src/date-times.mjs.html @@ -0,0 +1,304 @@ + + + + + + Code coverage report for src/date-times.mjs + + + + + + + + + +
+
+

All files / src date-times.mjs

+
+ +
+ 100% + Statements + 29/29 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 29/29 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +1x +1x +1x +1x +1x +1x +  +  +1x +  +1x +  +1x +  +1x +  +1x +  +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x + 
/*
+Copyright 2023 Liquid Labs LLC
+ 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ 
+    http://www.apache.org/licenses/LICENSE-2.0
+ 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+import { lockdownRE } from './lib/lockdown-re'
+ 
+// Started RE based on https://www.myintervals.com/blog/2009/05/20/iso-8601-date-validation-that-doesnt-suck/
+// Made some corrections, rearranged capture groups.
+ 
+// Date/Time: (string only) Matches the day designation portion of an ISO 8601 date+time. Provides matching groups 1 (year), 3 (month), and 4 (day of month), 5 (week of year), 6 (day of week date), and 7 (ordinal or Julian date).
+export const iso8601DayREString = '(?:([+-]?\\d{4})(?:(-?)(?:(0[1-9]|1[0-2])(?:\\2([12]\\d|0[1-9]|3[01])?)?|W([0-4]\\d|5[0-3])\\2([1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[1-6])))?)?)'
+ 
+const eod = '(24(?<endSep>:?)00\\k<endSep>00)'
+const frac = '(?:[.,](\\d+))'
+const hr = `(?:([01]\\d|2[0-3])${frac}?)`
+const min = `(?:([0-5]\\d)${frac}?)`
+const sec = `(?:([0-5]\\d|60)${frac}?)`
+const tz = '([zZ]|(?:[+-](?!00(?::?00)?)(?:[01]\\d|2[0-3])(?::?[0-5]\\d)?))'
+ 
+// Date/Time: (string only) Matches the time designation portion of an ISO 8601 date+time. Provides matching groups 1 (special end of day time), 3 (hours), 3 (fraction of hour), 5 (minutes), 6 (fraction of minute), 7 (seconds), and 8 (fraction of seconds).
+export const iso8601TimeREString = `(?:(?:${eod}|${hr}(?:(?<timeSep>:?)${min}(?:\\k<timeSep>${sec})?)?)${tz}?)`
+ 
+export const iso8601DateREString = `${iso8601DayREString}(?:T${iso8601TimeREString})?`
+// Date/Time: Matches an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date time like '20240101T1212Z. Provides matching groups 1 (year), 3 (month), and 4 (day of month), 5 (week of year), 6 (day of week date), and 7 (ordinal or Julian date), 8 (special end of day time), 10 (hour), 11 (decimal fraction of hour), 13 (minute), 14 (decimal fraction of minute), 15 (seconds), 16 (decimal fraction of a second), and 17 (timezone designation). (Groups 2, 11, and 13 are internal back references.)
+export const iso8601DateRE = lockdownRE(iso8601DateREString)
+ 
+export const iso8601DateTimeREString = `${iso8601DayREString}T${iso8601TimeREString}`
+// Date/Time: Matches an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) _requiring_ both date and time components. See [`iso8601DateRE`](#iso8601datere) for matching groups.
+export const iso8601DateTimeRE = lockdownRE(iso8601DateTimeREString)
+ 
+// Date/Time: (string only) Matches the day designation portion of an RFC 2822 date+time. Provides matching groups 1 (day of week name), 2 (day of month), 3 (month name), 4 (year).
+export const rfc2822DayREString = '(?:(?:(Sun|Mon|Tue|Wed|Thu|Fri|Sat),\\s+)?(0[1-9]|[1-2]?[0-9]|3[01])\\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s+(\\d{2,4}))'
+// Date/Time: (string only) Matches a general timezone designation; compliant with RFC 2822 timezone portion. Provides matching groups 1 (timezone).
+export const timezoneREString = '([+-][0-9]{2}[0-5][0-9]|(?:UT|GMT|[A-Z]{3,5}|[A-IK-Z]))'
+// Date/Time: (string only) Matches the time designation portion of an RFC 2822 date+time. Provides matching groups 1 (hour), 2 (minutes), 3 (seconds), and 4 (timezone).
+export const rfc2822TimeREString = `(?:(2[0-3]|[0-1][0-9]):([0-5][0-9])(?::(60|[0-5][0-9]))?(?:\\s+${timezoneREString})?)`
+ 
+export const rfc2822DateREString = `${rfc2822DayREString}\\s+${rfc2822TimeREString}`
+// Date/Time: Matches an [RFC 2822](https://datatracker.ietf.org/doc/html/rfc2822#section-3.3) style date like 'Mon, 6 Jan 1992 12:12 UTC'. Provides matching groups 1 (day of week), 2 (day of month), 3 (month name), and 4 (year), 5 (hour), 6 (min), 7 (second), and 8 (time zone).
+export const rfc2822DateRE = lockdownRE(rfc2822DateREString)
+ 
+const seps = '[./-]'
+ 
+export const usDateREString = `(0?[1-9]|1[0-2])${seps}(0?[1-9]|[1-2][0-9]|3[0-1])${seps}([+-])?(\\d{1,})`
+// Date/Time: Matches a US style 'MM/DD/YYYY' string. Accepts separators '.', '/', '-'. Will except 1 or 2 digits for month and day and 1-4 digits for the year. Also accepts a + or - before the year. Provides capture groups 1 (month), 2 (day of month), 3 (BCE/CE indicator), and 4 (year).
+export const usDateRE = lockdownRE(usDateREString)
+ 
+export const intlDateREString = `([+-])?(\\d{1,})${seps}(0?[1-9]|1[0-2])${seps}(0?[1-9]|[1-2][0-9]|3[0-1])`
+// Date/Time: Matches an international style 'YYYY/MM/DD' string. Accepts separators '.', '/', '-'. Will except 1 or 2 digits for month and day and 1-4 digits for the year. Also accepts a + or - before the year. Provides capture groups 1 (BCE/CE indicator), 2 (year), 3 (month), 4 (day).
+export const intlDateRE = lockdownRE(intlDateREString)
+ 
+export const militaryTimeREString = '(?:(2400)|([0-1][0-9]|2[0-3])([0-5]\\d))'
+// Date/Time: Matches military time style 'HHMM' string. Provides capture groups 1 (special 2400 time), 2 (hour), and 3 (minutes).
+export const militaryTimeRE = lockdownRE(militaryTimeREString)
+ 
+export const timeREString = '(?:(0?[1-9]|1[0-2]):([0-5][0-9])(?::([0-5][0-9])(?:[.,](\\d+))?)?\\s*([aApP][mM]))'
+// Date/Time: Matches a twelve hour time designation, requires AM or PM designation. Allows optional leading 0 in hour. Provides matching groups 1 (hour), 2 (minutes), 3 (seconds, without decimal fractions), 4 (decimal fraction seconds), and 5 (AM/PM indicator).
+export const timeRE = lockdownRE(timeREString)
+ 
+export const twentyFourHourTimeREString = '(?:(24:00(?::00)?)|(0?[1-9]|1[0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9])(?:[.,](\\d+))?)?)'
+// Date/Time: Matches a twenty-four hour time designationAllows optional leading 0 in hour. Provides matching groups 1 (special 24:00 designation with optional seconds), 2 (hour), 3 (minutes), 4 (seconds, without decimal fractions), 5 (decimal fraction seconds).
+export const twentyFourHourTimeRE = lockdownRE(twentyFourHourTimeREString)
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/ids.js.html b/qa/coverage/src/ids.js.html new file mode 100644 index 0000000..5c84d92 --- /dev/null +++ b/qa/coverage/src/ids.js.html @@ -0,0 +1,181 @@ + + + + + + Code coverage report for src/ids.js + + + + + + + + + +
+
+

All files / src ids.js

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +1x +  +1x +  +1x +  +1x +  +  +83x +  +1x +  +1x + 
/*
+Copyright 2023 Liquid Labs LLC
+ 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ 
+    http://www.apache.org/licenses/LICENSE-2.0
+ 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+ 
+import { lockdownRE } from './lib/lockdown-re'
+ 
+export const uuidREString = '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}'
+// Identifiers: Matches a UUID.
+export const uuidRE = lockdownRE(uuidREString)
+ 
+export const ssnREString = '(?!000|666|9\\d\\d)(\\d{3})-?(\\d\\d)-?(?!0000)(\\d{4})'
+// Identifiers: Matches a valid SSN. Provides 3 matching groups, 1 (area number), 2 (group number), and 3 (serial number).
+export const ssnRE = lockdownRE(ssnREString)
+ 
+// https://www.irs.gov/businesses/small-businesses-self-employed/how-eins-are-assigned-and-valid-ein-prefixes
+const validEINPrefix = [10, 12, 60, 67, 50, 53, 1, 2, 3, 4, 5, 6, 11, 13, 14, 16, 21, 22, 23, 25, 34, 51, 52, 54, 55, 56, 57, 58, 59, 65, 30, 32, 35, 36, 37, 38, 61, 15, 24, 40, 44, 94, 95, 80, 90, 33, 39, 41, 42, 43, 48, 62, 63, 64, 66, 68, 71, 72, 73, 74, 75, 76, 77, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 98, 99, 20, 26, 27, 45, 46, 47, 81, 31].map((prefix) => ('' + prefix).padStart(2, '0'))
+ 
+export const einREString = '(?:' + validEINPrefix.join('|') + ')-?\\d{7}'
+// Identifiers: Matches a valid EIN number.
+export const einRE = lockdownRE(einREString)
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/index.html b/qa/coverage/src/index.html new file mode 100644 index 0000000..a583300 --- /dev/null +++ b/qa/coverage/src/index.html @@ -0,0 +1,236 @@ + + + + + + Code coverage report for src + + + + + + + + + +
+
+

All files src

+
+ +
+ 100% + Statements + 143/143 +
+ + +
+ 66.66% + Branches + 8/12 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 141/141 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
aws.js +
+
100%6/6100%0/0100%0/0100%6/6
contacts.js +
+
100%9/9100%0/0100%0/0100%9/9
css.js +
+
100%42/4266.66%4/6100%1/1100%42/42
date-times.mjs +
+
100%29/29100%0/0100%0/0100%29/29
ids.js +
+
100%9/9100%0/0100%1/1100%8/8
javascript.js +
+
100%5/5100%0/0100%0/0100%5/5
npm.js +
+
100%3/3100%0/0100%0/0100%3/3
numbers.js +
+
100%25/2566.66%4/6100%1/1100%24/24
web.js +
+
100%15/15100%0/0100%0/0100%15/15
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/javascript.js.html b/qa/coverage/src/javascript.js.html new file mode 100644 index 0000000..11680a0 --- /dev/null +++ b/qa/coverage/src/javascript.js.html @@ -0,0 +1,163 @@ + + + + + + Code coverage report for src/javascript.js + + + + + + + + + +
+
+

All files / src javascript.js

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +1x +  +1x +  +  +1x +  +1x + 
/*
+Copyright 2023 Liquid Labs LLC
+ 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ 
+    http://www.apache.org/licenses/LICENSE-2.0
+ 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+ 
+import { lockdownRE } from './lib/lockdown-re'
+ 
+export const jsReservedWordREString = '(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)'
+// JavaScript: Matches a JS resereved word.
+export const jsReservedWordRE = lockdownRE(jsReservedWordREString)
+ 
+/* credit to: https://stackoverflow.com/questions/1661197/what-characters-are-valid-for-javascript-variable-names */
+export const jsVariableREString = '(?!(?:(?:^| |;)do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)(?: |;|$))[$A-Z_a-z\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc][$A-Z_a-z\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc0-9\\u0300-\\u036f\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08e4-\\u08fe\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c01-\\u0c03\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d02\\u0d03\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19b0-\\u19c0\\u19c8\\u19c9\\u19d0-\\u19d9\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf2-\\u1cf4\\u1dc0-\\u1de6\\u1dfc-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua880\\ua881\\ua8b4-\\ua8c4\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua900-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f]*'
+// JavaScript: Matches a valid JS variable name.
+export const jsVariableRE = lockdownRE(jsVariableREString)
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/lib/css-color-data.js.html b/qa/coverage/src/lib/css-color-data.js.html new file mode 100644 index 0000000..a85717c --- /dev/null +++ b/qa/coverage/src/lib/css-color-data.js.html @@ -0,0 +1,610 @@ + + + + + + Code coverage report for src/lib/css-color-data.js + + + + + + + + + +
+
+

All files / src/lib css-color-data.js

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  + 
/*
+Copyright 2023 Liquid Labs LLC
+ 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ 
+    http://www.apache.org/licenses/LICENSE-2.0
+ 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+ 
+export const cssPreColors1 = {
+  black   : '#000000',
+  silver  : '#c0c0c0',
+  gray    : '#808080',
+  white   : '#ffffff',
+  maroon  : '#800000',
+  red     : '#ff0000',
+  purple  : '#800080',
+  fuchsia : '#ff00ff',
+  green   : '#008000',
+  lime    : '#00ff00',
+  olive   : '#808000',
+  yellow  : '#ffff00',
+  navy    : '#000080',
+  blue    : '#0000ff',
+  teal    : '#008080',
+  aqua    : '#00ffff'
+}
+ 
+export const cssPreColors2 = Object.assign({
+  orange : '#ffa500'
+}, cssPreColors1)
+ 
+export const cssPreColors3 = Object.assign({
+  aliceblue            : '#f0f8ff',
+  antiquewhite         : '#faebd7',
+  aquamarine           : '#7fffd4',
+  azure                : '#f0ffff',
+  beige                : '#f5f5dc',
+  bisque               : '#ffe4c4',
+  blanchedalmond       : '#ffebcd',
+  blueviolet           : '#8a2be2',
+  brown                : '#a52a2a',
+  burlywood            : '#deb887',
+  cadetblue            : '#5f9ea0',
+  chartreuse           : '#7fff00',
+  chocolate            : '#d2691e',
+  coral                : '#ff7f50',
+  cornflowerblue       : '#6495ed',
+  cornsilk             : '#fff8dc',
+  crimson              : '#dc143c',
+  cyan                 : 'aqua',
+  darkblue             : '#00008b',
+  darkcyan             : '#008b8b',
+  darkgoldenrod        : '#b8860b',
+  darkgray             : '#a9a9a9',
+  darkgreen            : '#006400',
+  darkgrey             : '#a9a9a9',
+  darkkhaki            : '#bdb76b',
+  darkmagenta          : '#8b008b',
+  darkolivegreen       : '#556b2f',
+  darkorange           : '#ff8c00',
+  darkorchid           : '#9932cc',
+  darkred              : '#8b0000',
+  darksalmon           : '#e9967a',
+  darkseagreen         : '#8fbc8f',
+  darkslateblue        : '#483d8b',
+  darkslategray        : '#2f4f4f',
+  darkslategrey        : '#2f4f4f',
+  darkturquoise        : '#00ced1',
+  darkviolet           : '#9400d3',
+  deeppink             : '#ff1493',
+  deepskyblue          : '#00bfff',
+  dimgray              : '#696969',
+  dimgrey              : '#696969',
+  dodgerblue           : '#1e90ff',
+  firebrick            : '#b22222',
+  floralwhite          : '#fffaf0',
+  forestgreen          : '#228b22',
+  gainsboro            : '#dcdcdc',
+  ghostwhite           : '#f8f8ff',
+  gold                 : '#ffd700',
+  goldenrod            : '#daa520',
+  greenyellow          : '#adff2f',
+  grey                 : '#808080',
+  honeydew             : '#f0fff0',
+  hotpink              : '#ff69b4',
+  indianred            : '#cd5c5c',
+  indigo               : '#4b0082',
+  ivory                : '#fffff0',
+  khaki                : '#f0e68c',
+  lavender             : '#e6e6fa',
+  lavenderblush        : '#fff0f5',
+  lawngreen            : '#7cfc00',
+  lemonchiffon         : '#fffacd',
+  lightblue            : '#add8e6',
+  lightcoral           : '#f08080',
+  lightcyan            : '#e0ffff',
+  lightgoldenrodyellow : '#fafad2',
+  lightgray            : '#d3d3d3',
+  lightgreen           : '#90ee90',
+  lightgrey            : '#d3d3d3',
+  lightpink            : '#ffb6c1',
+  lightsalmon          : '#ffa07a',
+  lightseagreen        : '#20b2aa',
+  lightskyblue         : '#87cefa',
+  lightslategray       : '#778899',
+  lightslategrey       : '#778899',
+  lightsteelblue       : '#b0c4de',
+  lightyellow          : '#ffffe0',
+  limegreen            : '#32cd32',
+  linen                : '#faf0e6',
+  magenta              : 'fuchsia',
+  mediumaquamarine     : '#66cdaa',
+  mediumblue           : '#0000cd',
+  mediumorchid         : '#ba55d3',
+  mediumpurple         : '#9370db',
+  mediumseagreen       : '#3cb371',
+  mediumslateblue      : '#7b68ee',
+  mediumspringgreen    : '#00fa9a',
+  mediumturquoise      : '#48d1cc',
+  mediumvioletred      : '#c71585',
+  midnightblue         : '#191970',
+  mintcream            : '#f5fffa',
+  mistyrose            : '#ffe4e1',
+  moccasin             : '#ffe4b5',
+  navajowhite          : '#ffdead',
+  oldlace              : '#fdf5e6',
+  olivedrab            : '#6b8e23',
+  orangered            : '#ff4500',
+  orchid               : '#da70d6',
+  palegoldenrod        : '#eee8aa',
+  palegreen            : '#98fb98',
+  paleturquoise        : '#afeeee',
+  palevioletred        : '#db7093',
+  papayawhip           : '#ffefd5',
+  peachpuff            : '#ffdab9',
+  peru                 : '#cd853f',
+  pink                 : '#ffc0cb',
+  plum                 : '#dda0dd',
+  powderblue           : '#b0e0e6',
+  rosybrown            : '#bc8f8f',
+  royalblue            : '#4169e1',
+  saddlebrown          : '#8b4513',
+  salmon               : '#fa8072',
+  sandybrown           : '#f4a460',
+  seagreen             : '#2e8b57',
+  seashell             : '#fff5ee',
+  sienna               : '#a0522d',
+  skyblue              : '#87ceeb',
+  slateblue            : '#6a5acd',
+  slategray            : '#708090',
+  slategrey            : '#708090',
+  snow                 : '#fffafa',
+  springgreen          : '#00ff7f',
+  steelblue            : '#4682b4',
+  tan                  : '#d2b48c',
+  thistle              : '#d8bfd8',
+  tomato               : '#ff6347',
+  turquoise            : '#40e0d0',
+  violet               : '#ee82ee',
+  wheat                : '#f5deb3',
+  whitesmoke           : '#f5f5f5',
+  yellowgreen          : '#9acd32'
+}, cssPreColors2)
+ 
+export const cssPreColors = Object.assign({
+  rebeccapurple : '#663399'
+}, cssPreColors3)
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/lib/index.html b/qa/coverage/src/lib/index.html new file mode 100644 index 0000000..9042ca8 --- /dev/null +++ b/qa/coverage/src/lib/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for src/lib + + + + + + + + + +
+
+

All files src/lib

+
+ +
+ 100% + Statements + 18/18 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 16/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
css-color-data.js +
+
100%4/4100%0/0100%0/0100%4/4
lockdown-re.js +
+
100%3/3100%0/0100%1/1100%1/1
numbers-strings.js +
+
100%10/10100%0/0100%0/0100%10/10
uni-non-ascii.mjs +
+
100%1/1100%0/0100%0/0100%1/1
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/lib/lockdown-re.js.html b/qa/coverage/src/lib/lockdown-re.js.html new file mode 100644 index 0000000..84dead6 --- /dev/null +++ b/qa/coverage/src/lib/lockdown-re.js.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for src/lib/lockdown-re.js + + + + + + + + + +
+
+

All files / src/lib lockdown-re.js

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +59x + 
/*
+Copyright 2023 Liquid Labs LLC
+ 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ 
+    http://www.apache.org/licenses/LICENSE-2.0
+ 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+ 
+export const lockdownRE = (str, flags) => new RegExp(`^${str}$`, flags)
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/lib/numbers-strings.js.html b/qa/coverage/src/lib/numbers-strings.js.html new file mode 100644 index 0000000..9d46ade --- /dev/null +++ b/qa/coverage/src/lib/numbers-strings.js.html @@ -0,0 +1,178 @@ + + + + + + Code coverage report for src/lib/numbers-strings.js + + + + + + + + + +
+
+

All files / src/lib numbers-strings.js

+
+ +
+ 100% + Statements + 10/10 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 10/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +2x +2x +2x +2x +  +2x +2x +  +2x +2x +  + 
/*
+Copyright 2023 Liquid Labs LLC
+ 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ 
+    http://www.apache.org/licenses/LICENSE-2.0
+ 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+ 
+// Note, this module is used internally, so these aStr exported to for other
+// modules to use, but the file is not Str-exported through index.
+export const plainFloatStr = '[+-]?(0(\\.[0-9]+)?|[1-9][0-9]*(\\.[0-9]+)?)'
+export const scientificFloatStr = `${plainFloatStr}[eE]${plainFloatStr}`
+export const floatStr = `${plainFloatStr}([eE]${plainFloatStr})?`
+export const zeroTo1FloatStr = '(0|0?\\.[0-9]+|1(\\.0+)?)'
+export const zeroTo100PercentStr = '([0-9]|[1-9][0-9]|100)\\%'
+export const zeroTo100FloatPercentStr =
+  '(([0-9]|[1-9][0-9])(\\.[0-9]+)?|100(\\.0+)?)\\%'
+export const zeroTo255Str = '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+export const zeroTo255FloatStr =
+  '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])(\\.[0-9]+)?|255(\\.0+)?)'
+export const zeroTo360Str = '([0-9]|[1-9][0-9]|[1-2][0-9][0-9]|3[0-5][0-9]|360)'
+export const zeroTo360FloatStr =
+  '(([0-9]|[1-9][0-9]|[1-2][0-9][0-9]|3[0-5][0-9])(\\.[0-9]+)?|360(\\.0+)?)'
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/lib/uni-non-ascii.mjs.html b/qa/coverage/src/lib/uni-non-ascii.mjs.html new file mode 100644 index 0000000..f57de3e --- /dev/null +++ b/qa/coverage/src/lib/uni-non-ascii.mjs.html @@ -0,0 +1,88 @@ + + + + + + Code coverage report for src/lib/uni-non-ascii.mjs + + + + + + + + + +
+
+

All files / src/lib uni-non-ascii.mjs

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +23x + 
export const uniNonASCII = '\\u0080-\\u{e007f}'
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/npm.js.html b/qa/coverage/src/npm.js.html new file mode 100644 index 0000000..216c4d8 --- /dev/null +++ b/qa/coverage/src/npm.js.html @@ -0,0 +1,148 @@ + + + + + + Code coverage report for src/npm.js + + + + + + + + + +
+
+

All files / src npm.js

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +1x +  +1x + 
/*
+Copyright 2023 Liquid Labs LLC
+ 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ 
+    http://www.apache.org/licenses/LICENSE-2.0
+ 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+ 
+import { lockdownRE } from './lib/lockdown-re'
+ 
+export const npmPackageNameREString = '(@[a-z0-9-~][a-z0-9-._~]*/)?([a-z0-9-~][a-z0-9-._~]*)'
+// NPM: Matches an NPM package name. Provides matching groups 1 (org name, if any) and 2 (package basename).
+export const npmPackageNameRE = lockdownRE(npmPackageNameREString)
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/numbers.js.html b/qa/coverage/src/numbers.js.html new file mode 100644 index 0000000..39d3318 --- /dev/null +++ b/qa/coverage/src/numbers.js.html @@ -0,0 +1,271 @@ + + + + + + Code coverage report for src/numbers.js + + + + + + + + + +
+
+

All files / src numbers.js

+
+ +
+ 100% + Statements + 25/25 +
+ + +
+ 66.66% + Branches + 4/6 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 24/24 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +2x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x + 
/*
+Copyright 2023 Liquid Labs LLC
+ 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ 
+    http://www.apache.org/licenses/LICENSE-2.0
+ 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+ 
+import * as numStrs from './lib/numbers-strings'
+import { lockdownRE } from './lib/lockdown-re'
+ 
+export const integerREString = '-?(?:0|[1-9]\\d*)'
+// Numbers: Matches an integer.
+export const integerRE = lockdownRE(integerREString)
+ 
+export const plainFloatREString = numStrs.plainFloatStr
+// Numbers: Matches a plain (non-scientific notation) float.
+export const plainFloatRE = lockdownRE(plainFloatREString)
+ 
+export const scientificFloatREString = numStrs.scientificFloatStr
+// Numbers: Matches a scientific notation float.
+export const scientificFloatRE = lockdownRE(scientificFloatREString)
+ 
+export const floatREString = numStrs.floatStr
+// Numbers: Matches a float in either plan or scientific format.
+export const floatRE = lockdownRE(floatREString)
+ 
+export const zeroTo1FloatREString = numStrs.zeroTo1FloatStr
+// CSS numbers: Matches a 0 to 1 float as used in CSS color specifications.
+export const zeroTo1FloatRE = lockdownRE(zeroTo1FloatREString)
+ 
+export const zeroTo100PercentREString = numStrs.zeroTo100PercentStr
+// CSS numbers: Matches a 0 to 100% integer as used in CSS color specifications.
+export const zeroTo100PercentRE = lockdownRE(zeroTo100PercentREString)
+ 
+export const zeroTo100FloatPercentREString = numStrs.zeroTo100FloatPercentStr
+// CSS numbers: Matches a 0 to 100% float as used in CSS color specifications.
+export const zeroTo100FloatPercentRE = lockdownRE(zeroTo100FloatPercentREString)
+ 
+export const zeroTo255REString = numStrs.zeroTo255Str
+// CSS numbers: Matches a 0 to 255 integer as used in CSS color specifications.
+export const zeroTo255RE = lockdownRE(zeroTo255REString)
+ 
+export const zeroTo255FloatREString = numStrs.zeroTo255FloatStr
+// CSS numbers: Matches a 0 to 255 float as used in CSS color specifications.
+export const zeroTo255FloatRE = lockdownRE(zeroTo255FloatREString)
+ 
+export const zeroTo360REString = numStrs.zeroTo360Str
+// CSS numbers: Matches a 0 to 360 integer as used in CSS color specifications.
+export const zeroTo360RE = lockdownRE(zeroTo360REString)
+ 
+export const zeroTo360FloatREString = numStrs.zeroTo360FloatStr
+// CSS numbers: Matches a 0 to 360 float as used in CSS color specifications.
+export const zeroTo360FloatRE = lockdownRE(zeroTo360FloatREString)
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/src/web.js.html b/qa/coverage/src/web.js.html new file mode 100644 index 0000000..9a89d6c --- /dev/null +++ b/qa/coverage/src/web.js.html @@ -0,0 +1,274 @@ + + + + + + Code coverage report for src/web.js + + + + + + + + + +
+
+

All files / src web.js

+
+ +
+ 100% + Statements + 15/15 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 15/15 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +3x +  +3x +  +  +  +3x +  +3x +3x +  +3x +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +3x +  +3x +  +3x +  +  +  +  +3x +  +  +3x +  +3x + 
/*
+Copyright 2023 Liquid Labs LLC
+ 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ 
+    http://www.apache.org/licenses/LICENSE-2.0
+ 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+ 
+import { lockdownRE } from './lib/lockdown-re'
+import { uniNonASCII } from './lib/uni-non-ascii'
+ 
+export const ipREString = '(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])' +
+  '(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}' +
+  '(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))'
+// Web: Matches a valid, non-localhost IP address.
+export const ipRE = lockdownRE(ipREString)
+ 
+const ipTuple = '(?:0|1?\\d{1,2}|2[0-4]\\d|25[0-5])'
+export const ipFormatREString = `(?:${ipTuple}\\.){3}${ipTuple}`
+// Web: Matches a string in IP address format. Use 'ipRE' to match actually valid IP addresses.
+export const ipFormatRE = lockdownRE(ipFormatREString)
+ 
+/* Base RE cribbed from: https://github.com/chriso/validator.js via https://stackoverflow.com/a/22648406/929494
+   Annotations cribbed from https://gist.github.com/dperini/729294 */
+export const urlREString =
+  // protocol ID
+  '(?!mailto:)(?:(?:http|https|ftp)://)' +
+  // user + pass
+  '(?:\\S+(?::\\S*)?@)?' +
+  // IP address dotted notation octets
+  // excludes loopback network 0.0.0.0
+  // excludes reserved space >= 224.0.0.0
+  // excludes network & broacast addresses
+  // (first & last IP address of each class)
+  '(?:(?:' + ipREString +
+  `|(?:(?:[a-z${uniNonASCII}0-9]+-?)*[a-z${uniNonASCII}0-9]+)(?:\\.(?:[a-z${uniNonASCII}0-9]+-?)*[a-z${uniNonASCII}0-9]+)*(?:\\.(?:[a-z${uniNonASCII}]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?`
+// Web: Matches a valid URL. When using the partial string to create a RE, you must use the 'u' or 'v' flag.
+export const urlRE = lockdownRE(urlREString, 'ui')
+ 
+// note the 'v' flag breaks on Ubuntu
+export const tldNameREString = `(?:(?![0-9])(?:[${uniNonASCII}]|[a-zA-Z${uniNonASCII}][a-zA-Z0-9${uniNonASCII}]{1,62}))`
+// Web: Matches a Top Level Domain (TLD). See [domain name rules](#domain-name-rules). When using the partial string to create a RE, you must use the 'u' or 'v' flag.
+export const tldNameRE = lockdownRE(tldNameREString, 'u')
+ 
+export const subdomainLabelREString = `(?:[${uniNonASCII}]|[a-zA-Z0-9${uniNonASCII}]` + // allow single unicode
+  `(?:[a-zA-Z0-9${uniNonASCII}]|` + // two letters only
+  // otherwise, verify the 3rd and 4th positions are not '-'
+  `[a-zA-Z0-9${uniNonASCII}\\-](?!--)[a-zA-Z0-9${uniNonASCII}\\-]{0,60}[\\p{L}0-9]))`
+// Web: Matches a registerable domain name. Partially enforces the 63 byte domain label limit, but this is only valid for non-international (all ASCII) labels because we can only count characters. See [domain name rules](#domain-name-rules). When using the partial string to create a RE, you must use the 'u' or 'v' flag.
+export const subdomainLabelRE = lockdownRE(subdomainLabelREString, 'u')
+ 
+// export const fqDomainNameREString = `(?![0-9\\p{L}.\\-]{256,})(?:${subdomainLabelREString}\\.)+${tldNameREString}`
+export const fqDomainNameREString = `(?!.{256,})(?:${subdomainLabelREString}\\.)+${tldNameREString}`
+// Web: Matches fully qualified domain name (one or more subdomains + TLD). Partially enforces the 255 byte FQ domain name limit, but this is only valid for non-international (all ASCII) domain names because we can only count characters. When using the partial string to create a RE, you must use the 'u' or 'v' flag.
+export const fqDomainNameRE = lockdownRE(fqDomainNameREString, 'u')
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/lint.txt b/qa/lint.txt new file mode 100644 index 0000000..d18b750 --- /dev/null +++ b/qa/lint.txt @@ -0,0 +1 @@ +Test git rev: 5294f7bb58f67e1f4ded9f34598a3c4037ee051f diff --git a/qa/unit-test.txt b/qa/unit-test.txt new file mode 100644 index 0000000..0e2435d --- /dev/null +++ b/qa/unit-test.txt @@ -0,0 +1,36 @@ +Test git rev: 63588c0093e0b44d39f11e9df38c0987662e6d45 +PASS test/web.test.js +PASS test/css.test.js +PASS test/date-time.test.js +PASS test/numbers.test.js +PASS test/contacts.test.js +PASS test/javascript.test.js +PASS test/ids.test.js +PASS test/aws.test.js +PASS test/npm.test.js +---------------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +---------------------|---------|----------|---------|---------|------------------- +All files | 100 | 66.66 | 100 | 100 | + src | 100 | 66.66 | 100 | 100 | + aws.js | 100 | 100 | 100 | 100 | + contacts.js | 100 | 100 | 100 | 100 | + css.js | 100 | 66.66 | 100 | 100 | 27 + date-times.mjs | 100 | 100 | 100 | 100 | + ids.js | 100 | 100 | 100 | 100 | + javascript.js | 100 | 100 | 100 | 100 | + npm.js | 100 | 100 | 100 | 100 | + numbers.js | 100 | 66.66 | 100 | 100 | 18 + web.js | 100 | 100 | 100 | 100 | + src/lib | 100 | 100 | 100 | 100 | + css-color-data.js | 100 | 100 | 100 | 100 | + lockdown-re.js | 100 | 100 | 100 | 100 | + numbers-strings.js | 100 | 100 | 100 | 100 | + uni-non-ascii.mjs | 100 | 100 | 100 | 100 | +---------------------|---------|----------|---------|---------|------------------- + +Test Suites: 9 passed, 9 total +Tests: 2158 passed, 2158 total +Snapshots: 0 total +Time: 0.565 s, estimated 1 s +Ran all test suites. From 8a2dc7ab5c2344668f6acf7a4f905426357e7ea9 Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Thu, 25 Jul 2024 16:25:49 -0500 Subject: [PATCH 14/14] removed QA files --- qa/coverage/base.css | 224 ------- qa/coverage/block-navigation.js | 87 --- qa/coverage/clover.xml | 208 ------- qa/coverage/coverage-final.json | 14 - qa/coverage/favicon.png | Bin 445 -> 0 bytes qa/coverage/index.html | 131 ----- qa/coverage/prettify.css | 1 - qa/coverage/prettify.js | 2 - qa/coverage/sort-arrow-sprite.png | Bin 138 -> 0 bytes qa/coverage/sorter.js | 196 ------- qa/coverage/src/aws.js.html | 169 ------ qa/coverage/src/contacts.js.html | 178 ------ qa/coverage/src/css.js.html | 409 ------------- qa/coverage/src/date-times.mjs.html | 304 ---------- qa/coverage/src/ids.js.html | 181 ------ qa/coverage/src/index.html | 236 -------- qa/coverage/src/javascript.js.html | 163 ------ qa/coverage/src/lib/css-color-data.js.html | 610 -------------------- qa/coverage/src/lib/index.html | 161 ------ qa/coverage/src/lib/lockdown-re.js.html | 136 ----- qa/coverage/src/lib/numbers-strings.js.html | 178 ------ qa/coverage/src/lib/uni-non-ascii.mjs.html | 88 --- qa/coverage/src/npm.js.html | 148 ----- qa/coverage/src/numbers.js.html | 271 --------- qa/coverage/src/web.js.html | 274 --------- qa/lint.txt | 1 - qa/unit-test.txt | 36 -- 27 files changed, 4406 deletions(-) delete mode 100644 qa/coverage/base.css delete mode 100644 qa/coverage/block-navigation.js delete mode 100644 qa/coverage/clover.xml delete mode 100644 qa/coverage/coverage-final.json delete mode 100644 qa/coverage/favicon.png delete mode 100644 qa/coverage/index.html delete mode 100644 qa/coverage/prettify.css delete mode 100644 qa/coverage/prettify.js delete mode 100644 qa/coverage/sort-arrow-sprite.png delete mode 100644 qa/coverage/sorter.js delete mode 100644 qa/coverage/src/aws.js.html delete mode 100644 qa/coverage/src/contacts.js.html delete mode 100644 qa/coverage/src/css.js.html delete mode 100644 qa/coverage/src/date-times.mjs.html delete mode 100644 qa/coverage/src/ids.js.html delete mode 100644 qa/coverage/src/index.html delete mode 100644 qa/coverage/src/javascript.js.html delete mode 100644 qa/coverage/src/lib/css-color-data.js.html delete mode 100644 qa/coverage/src/lib/index.html delete mode 100644 qa/coverage/src/lib/lockdown-re.js.html delete mode 100644 qa/coverage/src/lib/numbers-strings.js.html delete mode 100644 qa/coverage/src/lib/uni-non-ascii.mjs.html delete mode 100644 qa/coverage/src/npm.js.html delete mode 100644 qa/coverage/src/numbers.js.html delete mode 100644 qa/coverage/src/web.js.html delete mode 100644 qa/lint.txt delete mode 100644 qa/unit-test.txt diff --git a/qa/coverage/base.css b/qa/coverage/base.css deleted file mode 100644 index f418035..0000000 --- a/qa/coverage/base.css +++ /dev/null @@ -1,224 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/qa/coverage/block-navigation.js b/qa/coverage/block-navigation.js deleted file mode 100644 index cc12130..0000000 --- a/qa/coverage/block-navigation.js +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; - - // Elements to highlight in the file listing view - var fileListingElements = ['td.pct.low']; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = - fileListingElements.join(', ') + - ', ' + - notSelector + - missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements - .item(currentIndex) - .classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index).scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - if ( - document.getElementById('fileSearch') === document.activeElement && - document.activeElement != null - ) { - // if we're currently focused on the search input, we don't want to navigate - return; - } - - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -})(); -window.addEventListener('keydown', jumpToCode); diff --git a/qa/coverage/clover.xml b/qa/coverage/clover.xml deleted file mode 100644 index 920f9f6..0000000 --- a/qa/coverage/clover.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qa/coverage/coverage-final.json b/qa/coverage/coverage-final.json deleted file mode 100644 index 9f2e784..0000000 --- a/qa/coverage/coverage-final.json +++ /dev/null @@ -1,14 +0,0 @@ -{"/Users/zane/playground/regex-repo/src/aws.js": {"path":"/Users/zane/playground/regex-repo/src/aws.js","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":null}},"1":{"start":{"line":18,"column":27},"end":{"line":18,"column":90}},"2":{"start":{"line":21,"column":38},"end":{"line":21,"column":96}},"3":{"start":{"line":23,"column":32},"end":{"line":23,"column":72}},"4":{"start":{"line":25,"column":36},"end":{"line":25,"column":98}},"5":{"start":{"line":28,"column":30},"end":{"line":28,"column":68}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{},"b":{}} -,"/Users/zane/playground/regex-repo/src/contacts.js": {"path":"/Users/zane/playground/regex-repo/src/contacts.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":null}},"2":{"start":{"line":19,"column":0},"end":{"line":19,"column":null}},"3":{"start":{"line":21,"column":28},"end":{"line":21,"column":95}},"4":{"start":{"line":23,"column":22},"end":{"line":23,"column":52}},"5":{"start":{"line":25,"column":28},"end":{"line":25,"column":55}},"6":{"start":{"line":27,"column":22},"end":{"line":27,"column":52}},"7":{"start":{"line":29,"column":26},"end":{"line":29,"column":268}},"8":{"start":{"line":31,"column":20},"end":{"line":31,"column":53}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"f":{},"b":{}} -,"/Users/zane/playground/regex-repo/src/css.js": {"path":"/Users/zane/playground/regex-repo/src/css.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":null}},"2":{"start":{"line":19,"column":0},"end":{"line":19,"column":null}},"3":{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},"4":{"start":{"line":29,"column":36},"end":{"line":29,"column":73}},"5":{"start":{"line":31,"column":30},"end":{"line":31,"column":68}},"6":{"start":{"line":34,"column":34},"end":{"line":34,"column":88}},"7":{"start":{"line":36,"column":28},"end":{"line":36,"column":64}},"8":{"start":{"line":38,"column":34},"end":{"line":38,"column":91}},"9":{"start":{"line":40,"column":28},"end":{"line":40,"column":64}},"10":{"start":{"line":42,"column":34},"end":{"line":42,"column":91}},"11":{"start":{"line":44,"column":28},"end":{"line":44,"column":64}},"12":{"start":{"line":46,"column":34},"end":{"line":46,"column":91}},"13":{"start":{"line":48,"column":28},"end":{"line":48,"column":64}},"14":{"start":{"line":50,"column":33},"end":{"line":50,"column":89}},"15":{"start":{"line":52,"column":27},"end":{"line":52,"column":62}},"16":{"start":{"line":54,"column":18},"end":{"line":54,"column":62}},"17":{"start":{"line":55,"column":20},"end":{"line":55,"column":82}},"18":{"start":{"line":56,"column":21},"end":{"line":56,"column":97}},"19":{"start":{"line":57,"column":21},"end":{"line":57,"column":80}},"20":{"start":{"line":58,"column":22},"end":{"line":58,"column":88}},"21":{"start":{"line":60,"column":28},"end":{"line":60,"column":80}},"22":{"start":{"line":62,"column":22},"end":{"line":62,"column":52}},"23":{"start":{"line":64,"column":29},"end":{"line":64,"column":83}},"24":{"start":{"line":66,"column":23},"end":{"line":66,"column":54}},"25":{"start":{"line":71,"column":23},"end":{"line":71,"column":72}},"26":{"start":{"line":72,"column":23},"end":{"line":72,"column":114}},"27":{"start":{"line":73,"column":24},"end":{"line":73,"column":129}},"28":{"start":{"line":74,"column":24},"end":{"line":74,"column":110}},"29":{"start":{"line":75,"column":25},"end":{"line":75,"column":125}},"30":{"start":{"line":77,"column":24},"end":{"line":77,"column":117}},"31":{"start":{"line":79,"column":18},"end":{"line":79,"column":44}},"32":{"start":{"line":81,"column":21},"end":{"line":81,"column":84}},"33":{"start":{"line":82,"column":17},"end":{"line":82,"column":78}},"34":{"start":{"line":84,"column":25},"end":{"line":84,"column":60}},"35":{"start":{"line":86,"column":19},"end":{"line":86,"column":46}},"36":{"start":{"line":88,"column":24},"end":{"line":89,"column":97}},"37":{"start":{"line":91,"column":18},"end":{"line":91,"column":44}},"38":{"start":{"line":93,"column":30},"end":{"line":98,"column":5}},"39":{"start":{"line":100,"column":24},"end":{"line":100,"column":56}},"40":{"start":{"line":102,"column":29},"end":{"line":106,"column":5}},"41":{"start":{"line":108,"column":23},"end":{"line":108,"column":54}}},"fnMap":{"0":{"name":"_getRequireWildcardCache","decl":{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},"loc":{"start":{"line":27,"column":30},"end":{"line":27,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":30},"end":{"line":27,"column":null}}]},"1":{"loc":{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},"type":"cond-expr","locations":[{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},{"start":{"line":27,"column":30},"end":{"line":27,"column":null}}]},"2":{"loc":{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},"type":"binary-expr","locations":[{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},{"start":{"line":27,"column":30},"end":{"line":27,"column":null}},{"start":{"line":27,"column":30},"end":{"line":27,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":2,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1},"f":{"0":1},"b":{"0":[1],"1":[0,0],"2":[1,1,1]}} -,"/Users/zane/playground/regex-repo/src/date-times.mjs": {"path":"/Users/zane/playground/regex-repo/src/date-times.mjs","statementMap":{"0":{"start":{"line":16,"column":0},"end":{"line":16,"column":null}},"1":{"start":{"line":22,"column":31},"end":{"line":22,"column":195}},"2":{"start":{"line":24,"column":12},"end":{"line":24,"column":46}},"3":{"start":{"line":25,"column":13},"end":{"line":25,"column":29}},"4":{"start":{"line":26,"column":12},"end":{"line":26,"column":41}},"5":{"start":{"line":27,"column":13},"end":{"line":27,"column":36}},"6":{"start":{"line":28,"column":13},"end":{"line":28,"column":39}},"7":{"start":{"line":29,"column":11},"end":{"line":29,"column":76}},"8":{"start":{"line":32,"column":32},"end":{"line":32,"column":111}},"9":{"start":{"line":34,"column":32},"end":{"line":34,"column":86}},"10":{"start":{"line":36,"column":26},"end":{"line":36,"column":60}},"11":{"start":{"line":38,"column":36},"end":{"line":38,"column":85}},"12":{"start":{"line":40,"column":30},"end":{"line":40,"column":68}},"13":{"start":{"line":43,"column":31},"end":{"line":43,"column":172}},"14":{"start":{"line":45,"column":29},"end":{"line":45,"column":89}},"15":{"start":{"line":47,"column":32},"end":{"line":47,"column":122}},"16":{"start":{"line":49,"column":32},"end":{"line":49,"column":84}},"17":{"start":{"line":51,"column":26},"end":{"line":51,"column":60}},"18":{"start":{"line":53,"column":13},"end":{"line":53,"column":20}},"19":{"start":{"line":55,"column":27},"end":{"line":55,"column":105}},"20":{"start":{"line":57,"column":21},"end":{"line":57,"column":50}},"21":{"start":{"line":59,"column":29},"end":{"line":59,"column":107}},"22":{"start":{"line":61,"column":23},"end":{"line":61,"column":54}},"23":{"start":{"line":63,"column":33},"end":{"line":63,"column":78}},"24":{"start":{"line":65,"column":27},"end":{"line":65,"column":62}},"25":{"start":{"line":67,"column":25},"end":{"line":67,"column":112}},"26":{"start":{"line":69,"column":19},"end":{"line":69,"column":46}},"27":{"start":{"line":71,"column":39},"end":{"line":71,"column":133}},"28":{"start":{"line":73,"column":33},"end":{"line":73,"column":74}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1},"f":{},"b":{}} -,"/Users/zane/playground/regex-repo/src/ids.js": {"path":"/Users/zane/playground/regex-repo/src/ids.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":19,"column":25},"end":{"line":19,"column":118}},"2":{"start":{"line":21,"column":19},"end":{"line":21,"column":46}},"3":{"start":{"line":23,"column":24},"end":{"line":23,"column":84}},"4":{"start":{"line":25,"column":18},"end":{"line":25,"column":44}},"5":{"start":{"line":28,"column":23},"end":{"line":28,"column":397}},"6":{"start":{"line":28,"column":366},"end":{"line":28,"column":396}},"7":{"start":{"line":30,"column":24},"end":{"line":30,"column":73}},"8":{"start":{"line":32,"column":18},"end":{"line":32,"column":44}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":28,"column":355},"end":{"line":28,"column":361}},"loc":{"start":{"line":28,"column":366},"end":{"line":28,"column":396}}}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":83,"7":1,"8":1},"f":{"0":83},"b":{}} -,"/Users/zane/playground/regex-repo/src/javascript.js": {"path":"/Users/zane/playground/regex-repo/src/javascript.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":19,"column":35},"end":{"line":19,"column":346}},"2":{"start":{"line":21,"column":29},"end":{"line":21,"column":66}},"3":{"start":{"line":24,"column":31},"end":{"line":24,"column":12997}},"4":{"start":{"line":26,"column":25},"end":{"line":26,"column":58}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{},"b":{}} -,"/Users/zane/playground/regex-repo/src/npm.js": {"path":"/Users/zane/playground/regex-repo/src/npm.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":19,"column":35},"end":{"line":19,"column":93}},"2":{"start":{"line":21,"column":29},"end":{"line":21,"column":66}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} -,"/Users/zane/playground/regex-repo/src/numbers.js": {"path":"/Users/zane/playground/regex-repo/src/numbers.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":46}},"2":{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},"3":{"start":{"line":20,"column":28},"end":{"line":20,"column":50}},"4":{"start":{"line":22,"column":22},"end":{"line":22,"column":52}},"5":{"start":{"line":24,"column":31},"end":{"line":24,"column":55}},"6":{"start":{"line":26,"column":25},"end":{"line":26,"column":58}},"7":{"start":{"line":28,"column":36},"end":{"line":28,"column":65}},"8":{"start":{"line":30,"column":30},"end":{"line":30,"column":68}},"9":{"start":{"line":32,"column":26},"end":{"line":32,"column":45}},"10":{"start":{"line":34,"column":20},"end":{"line":34,"column":48}},"11":{"start":{"line":36,"column":33},"end":{"line":36,"column":59}},"12":{"start":{"line":38,"column":27},"end":{"line":38,"column":62}},"13":{"start":{"line":40,"column":37},"end":{"line":40,"column":67}},"14":{"start":{"line":42,"column":31},"end":{"line":42,"column":70}},"15":{"start":{"line":44,"column":42},"end":{"line":44,"column":77}},"16":{"start":{"line":46,"column":36},"end":{"line":46,"column":80}},"17":{"start":{"line":48,"column":30},"end":{"line":48,"column":53}},"18":{"start":{"line":50,"column":24},"end":{"line":50,"column":56}},"19":{"start":{"line":52,"column":35},"end":{"line":52,"column":63}},"20":{"start":{"line":54,"column":29},"end":{"line":54,"column":66}},"21":{"start":{"line":56,"column":30},"end":{"line":56,"column":53}},"22":{"start":{"line":58,"column":24},"end":{"line":58,"column":56}},"23":{"start":{"line":60,"column":35},"end":{"line":60,"column":63}},"24":{"start":{"line":62,"column":29},"end":{"line":62,"column":66}}},"fnMap":{"0":{"name":"_getRequireWildcardCache","decl":{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},"loc":{"start":{"line":18,"column":46},"end":{"line":18,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},"type":"if","locations":[{"start":{"line":18,"column":46},"end":{"line":18,"column":null}}]},"1":{"loc":{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},"type":"cond-expr","locations":[{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},{"start":{"line":18,"column":46},"end":{"line":18,"column":null}}]},"2":{"loc":{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},"type":"binary-expr","locations":[{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},{"start":{"line":18,"column":46},"end":{"line":18,"column":null}},{"start":{"line":18,"column":46},"end":{"line":18,"column":null}}]}},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1},"f":{"0":1},"b":{"0":[1],"1":[0,0],"2":[1,1,1]}} -,"/Users/zane/playground/regex-repo/src/web.js": {"path":"/Users/zane/playground/regex-repo/src/web.js","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"1":{"start":{"line":18,"column":0},"end":{"line":18,"column":null}},"2":{"start":{"line":20,"column":23},"end":{"line":22,"column":50}},"3":{"start":{"line":24,"column":17},"end":{"line":24,"column":42}},"4":{"start":{"line":26,"column":16},"end":{"line":26,"column":52}},"5":{"start":{"line":27,"column":29},"end":{"line":27,"column":64}},"6":{"start":{"line":29,"column":23},"end":{"line":29,"column":54}},"7":{"start":{"line":33,"column":24},"end":{"line":44,"column":204}},"8":{"start":{"line":46,"column":18},"end":{"line":46,"column":50}},"9":{"start":{"line":49,"column":28},"end":{"line":49,"column":120}},"10":{"start":{"line":51,"column":22},"end":{"line":51,"column":57}},"11":{"start":{"line":53,"column":35},"end":{"line":56,"column":85}},"12":{"start":{"line":58,"column":29},"end":{"line":58,"column":71}},"13":{"start":{"line":61,"column":33},"end":{"line":61,"column":100}},"14":{"start":{"line":63,"column":27},"end":{"line":63,"column":67}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":3,"9":3,"10":3,"11":3,"12":3,"13":3,"14":3},"f":{},"b":{}} -,"/Users/zane/playground/regex-repo/src/lib/css-color-data.js": {"path":"/Users/zane/playground/regex-repo/src/lib/css-color-data.js","statementMap":{"0":{"start":{"line":17,"column":26},"end":{"line":34,"column":1}},"1":{"start":{"line":36,"column":26},"end":{"line":38,"column":17}},"2":{"start":{"line":40,"column":26},"end":{"line":171,"column":17}},"3":{"start":{"line":173,"column":25},"end":{"line":175,"column":17}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1},"f":{},"b":{}} -,"/Users/zane/playground/regex-repo/src/lib/lockdown-re.js": {"path":"/Users/zane/playground/regex-repo/src/lib/lockdown-re.js","statementMap":{"0":{"start":{"line":17,"column":26},"end":{"line":17,"column":71}},"1":{"start":{"line":17,"column":42},"end":{"line":17,"column":71}},"2":{"start":{"line":17,"column":71},"end":{"line":17,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":26},"end":{"line":17,"column":27}},"loc":{"start":{"line":17,"column":42},"end":{"line":17,"column":71}}}},"branchMap":{},"s":{"0":9,"1":59,"2":9},"f":{"0":59},"b":{}} -,"/Users/zane/playground/regex-repo/src/lib/numbers-strings.js": {"path":"/Users/zane/playground/regex-repo/src/lib/numbers-strings.js","statementMap":{"0":{"start":{"line":19,"column":26},"end":{"line":19,"column":75}},"1":{"start":{"line":20,"column":31},"end":{"line":20,"column":72}},"2":{"start":{"line":21,"column":21},"end":{"line":21,"column":65}},"3":{"start":{"line":22,"column":28},"end":{"line":22,"column":58}},"4":{"start":{"line":23,"column":32},"end":{"line":23,"column":62}},"5":{"start":{"line":24,"column":37},"end":{"line":25,"column":51}},"6":{"start":{"line":26,"column":25},"end":{"line":26,"column":80}},"7":{"start":{"line":27,"column":30},"end":{"line":28,"column":80}},"8":{"start":{"line":29,"column":25},"end":{"line":29,"column":80}},"9":{"start":{"line":30,"column":30},"end":{"line":31,"column":76}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2},"f":{},"b":{}} -,"/Users/zane/playground/regex-repo/src/lib/uni-non-ascii.mjs": {"path":"/Users/zane/playground/regex-repo/src/lib/uni-non-ascii.mjs","statementMap":{"0":{"start":{"line":1,"column":24},"end":{"line":1,"column":47}}},"fnMap":{},"branchMap":{},"s":{"0":3},"f":{},"b":{}} -} diff --git a/qa/coverage/favicon.png b/qa/coverage/favicon.png deleted file mode 100644 index c1525b811a167671e9de1fa78aab9f5c0b61cef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
- -
- 100% - Statements - 161/161 -
- - -
- 66.66% - Branches - 8/12 -
- - -
- 100% - Functions - 4/4 -
- - -
- 100% - Lines - 157/157 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
src -
-
100%143/14366.66%8/12100%3/3100%141/141
src/lib -
-
100%18/18100%0/0100%1/1100%16/16
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/prettify.css b/qa/coverage/prettify.css deleted file mode 100644 index b317a7c..0000000 --- a/qa/coverage/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/qa/coverage/prettify.js b/qa/coverage/prettify.js deleted file mode 100644 index b322523..0000000 --- a/qa/coverage/prettify.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable */ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/qa/coverage/sort-arrow-sprite.png b/qa/coverage/sort-arrow-sprite.png deleted file mode 100644 index 6ed68316eb3f65dec9063332d2f69bf3093bbfab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc diff --git a/qa/coverage/sorter.js b/qa/coverage/sorter.js deleted file mode 100644 index 2bb296a..0000000 --- a/qa/coverage/sorter.js +++ /dev/null @@ -1,196 +0,0 @@ -/* eslint-disable */ -var addSorting = (function() { - 'use strict'; - var cols, - currentSort = { - index: 0, - desc: false - }; - - // returns the summary table element - function getTable() { - return document.querySelector('.coverage-summary'); - } - // returns the thead element of the summary table - function getTableHeader() { - return getTable().querySelector('thead tr'); - } - // returns the tbody element of the summary table - function getTableBody() { - return getTable().querySelector('tbody'); - } - // returns the th element for nth column - function getNthColumn(n) { - return getTableHeader().querySelectorAll('th')[n]; - } - - function onFilterInput() { - const searchValue = document.getElementById('fileSearch').value; - const rows = document.getElementsByTagName('tbody')[0].children; - for (let i = 0; i < rows.length; i++) { - const row = rows[i]; - if ( - row.textContent - .toLowerCase() - .includes(searchValue.toLowerCase()) - ) { - row.style.display = ''; - } else { - row.style.display = 'none'; - } - } - } - - // loads the search box - function addSearchBox() { - var template = document.getElementById('filterTemplate'); - var templateClone = template.content.cloneNode(true); - templateClone.getElementById('fileSearch').oninput = onFilterInput; - template.parentElement.appendChild(templateClone); - } - - // loads all columns - function loadColumns() { - var colNodes = getTableHeader().querySelectorAll('th'), - colNode, - cols = [], - col, - i; - - for (i = 0; i < colNodes.length; i += 1) { - colNode = colNodes[i]; - col = { - key: colNode.getAttribute('data-col'), - sortable: !colNode.getAttribute('data-nosort'), - type: colNode.getAttribute('data-type') || 'string' - }; - cols.push(col); - if (col.sortable) { - col.defaultDescSort = col.type === 'number'; - colNode.innerHTML = - colNode.innerHTML + ''; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll('td'), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute('data-value'); - if (col.type === 'number') { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll('tr'), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function(a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector('.coverage-summary tbody'), - rowNodes = tableBody.querySelectorAll('tr'), - rows = [], - i; - - if (desc) { - finalSorter = function(a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc - ? ' sorted-desc' - : ' sorted'; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function() { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i = 0; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector('.sorter').parentElement; - if (el.addEventListener) { - el.addEventListener('click', ithSorter(i)); - } else { - el.attachEvent('onclick', ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function() { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(); - addSearchBox(); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener('load', addSorting); diff --git a/qa/coverage/src/aws.js.html b/qa/coverage/src/aws.js.html deleted file mode 100644 index 929fdf6..0000000 --- a/qa/coverage/src/aws.js.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - Code coverage report for src/aws.js - - - - - - - - - -
-
-

All files / src aws.js

-
- -
- 100% - Statements - 6/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 6/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -1x -  -  -1x -  -1x -  -1x -  -  -1x - 
/*
-Copyright 2023 Liquid Labs LLC
- 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- 
-    http://www.apache.org/licenses/LICENSE-2.0
- 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-import { ipFormatREString } from './web'
- 
-const invalidS3Partials = `(?!^${ipFormatREString}|^xn--|^sthree-|.+-s3alias$|.+--ol-s3$)`
-// const invalidS3Partials = `(?!^${ipFormatREString}|^xn--|^sthree-)`
- 
-export const awsS3TABucketNameREString = invalidS3Partials + '^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$'
-// AWS: Matches (most) S3 Transfer Acceleration compatible S3 bucket name. Note `awsS3TABucketNameREString` cannot be used for partial matches.
-export const awsS3TABucketNameRE = new RegExp(awsS3TABucketNameREString)
- 
-export const awsS3BucketNameREString = invalidS3Partials + '^[a-z0-9](?:\\.?[a-z0-9-]+)+[a-z0-9]$'
-// export const awsS3BucketNameREString = '^[a-z0-9](?:\\.?[a-z0-9-]+)+[a-z0-9]$'
-// AWS: Matches (most) valid S3 bucket name. Note `awsS3BucketNameREString` cannot be used for partial matches. Does not enforce 63 character limit.
-export const awsS3BucketNameRE = new RegExp(awsS3BucketNameREString)
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/contacts.js.html b/qa/coverage/src/contacts.js.html deleted file mode 100644 index 4b109c4..0000000 --- a/qa/coverage/src/contacts.js.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - Code coverage report for src/contacts.js - - - - - - - - - -
-
-

All files / src contacts.js

-
- -
- 100% - Statements - 9/9 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 9/9 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x - 
/*
-Copyright 2023 Liquid Labs LLC
- 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- 
-    http://www.apache.org/licenses/LICENSE-2.0
- 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
- 
-import { fqDomainNameREString } from './web'
-import { lockdownRE } from './lib/lockdown-re'
-import { uniNonASCII } from './lib/uni-non-ascii'
- 
-export const usPhoneREString = '(\\+?1[._ -]?)?(\\(\\d{3}\\)|\\d{3})[._ -]?\\d{3}[._ -]?\\d{4}'
-// Contact info: Matches US phone numbers with optional country code and area code.
-export const usPhoneRE = lockdownRE(usPhoneREString)
- 
-export const zipCodeREString = '\\d{5}([._ -]?\\d{4})?'
-// Contact info: Matches 5 or 9 digit US zip codes.
-export const zipCodeRE = lockdownRE(zipCodeREString)
- 
-export const emailREString = `([a-zA-Z0-9${uniNonASCII}!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+(?:\\.[a-zA-Z0-9${uniNonASCII}!#$%&'*+\\/=?^_\`\\{\\|\\}~\\-]+)*|"(?:[\\x20-\\x21\\x23-\\x5b\\x5d-\\x7e${uniNonASCII}]|\\\\[\\x20-\\x7e${uniNonASCII}])*")@(${fqDomainNameREString})`
-// Contact info: Match most valid emails. Provides matching groups 1 (user name) and 2 (domain). When using the partial string to create a RE, you must use the 'u' flag.
-export const emailRE = lockdownRE(emailREString, 'u')
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/css.js.html b/qa/coverage/src/css.js.html deleted file mode 100644 index b78427a..0000000 --- a/qa/coverage/src/css.js.html +++ /dev/null @@ -1,409 +0,0 @@ - - - - - - Code coverage report for src/css.js - - - - - - - - - -
-
-

All files / src css.js

-
- -
- 100% - Statements - 42/42 -
- - -
- 66.66% - Branches - 4/6 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 42/42 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -2x -  -1x -  -1x -  -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -1x -1x -1x -1x -  -1x -  -1x -  -1x -  -1x -  -  -  -  -1x -1x -1x -1x -1x -  -1x -  -1x -  -1x -1x -  -1x -  -1x -  -1x -  -  -1x -  -1x -  -  -  -  -  -  -1x -  -1x -  -  -  -  -  -1x - 
/*
-Copyright 2023 Liquid Labs LLC
- 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- 
-    http://www.apache.org/licenses/LICENSE-2.0
- 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
- 
-import * as pre from './lib/css-color-data'
-import { lockdownRE } from './lib/lockdown-re'
-import {
-  floatStr,
-  zeroTo255Str,
-  zeroTo1FloatStr,
-  zeroTo100PercentStr,
-  zeroTo100FloatPercentStr,
-  zeroTo255FloatStr,
-  zeroTo360Str
-} from './lib/numbers-strings'
- 
-export const hexColorNoAlphaREString = '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'
-// Colors/CSS: Matches hex specified RGB colors with no alpha channel.
-export const hexColorNoAlphaRE = lockdownRE(hexColorNoAlphaREString)
- 
-// level 4 adds alpha hex support
-export const hexColorAlphaREString = '#([a-fA-F0-9]{6}|[a-fA-F0-9]{8}|[a-fA-F0-9]{3,4})'
-// Colors/CSS: Matches hex specified RGBA colors with an alpha channel.
-export const hexColorAlphaRE = lockdownRE(hexColorAlphaREString)
- 
-export const cssPreColors1REString = '(?:' + Object.keys(pre.cssPreColors1).join('|') + ')'
-// Colors/CSS: Matches CSS1 predefined color names.
-export const cssPreColors1RE = lockdownRE(cssPreColors1REString)
- 
-export const cssPreColors2REString = '(?:' + Object.keys(pre.cssPreColors2).join('|') + ')'
-// Colors/CSS: Matches CSS2 predefined color names.
-export const cssPreColors2RE = lockdownRE(cssPreColors2REString)
- 
-export const cssPreColors3REString = '(?:' + Object.keys(pre.cssPreColors3).join('|') + ')'
-// Colors/CSS: Matches CSS3 predefined color names.
-export const cssPreColors3RE = lockdownRE(cssPreColors3REString)
- 
-export const cssPreColorsREString = '(?:' + Object.keys(pre.cssPreColors).join('|') + ')'
-// Colors/CSS: Matches CSS4 predefined color names.
-export const cssPreColorsRE = lockdownRE(cssPreColorsREString)
- 
-const alphaStr = `(${zeroTo1FloatStr}|${zeroTo100PercentStr})`
-const rgb1IntStr = `rgb\\((\\s*${zeroTo255Str}\\s*,){2}\\s*${zeroTo255Str}\\s*\\)`
-const rgb1PercStr = `rgb\\((\\s*${zeroTo100PercentStr}\\s*,){2}\\s*${zeroTo100PercentStr}\\s*\\)`
-const rgba3IntStr = `rgba\\((\\s*${zeroTo255Str}\\s*,){3}\\s*${alphaStr}\\s*\\)`
-const rgba3PercStr = `rgba\\((\\s*${zeroTo100PercentStr}\\s*,){3}\\s*${alphaStr}\\s*\\)`
- 
-export const rgbFuncREString = '(?:' + [rgb1IntStr, rgb1PercStr].join('|') + ')'
-// Colors/CSS: Matches CSS1 'rgb(...) using '0...255 and percent (integer) notation.
-export const rgbFuncRE = lockdownRE(rgbFuncREString)
- 
-export const rgbaFuncREString = '(?:' + [rgba3IntStr, rgba3PercStr].join('|') + ')'
-// Colors/CSS: Matches CSS3 'rgba(...) using '0...255 and percent (integer) notation.
-export const rgbaFuncRE = lockdownRE(rgbaFuncREString)
- 
-// In level 4, rgba is an alias for rgb, supports floats, and space notation
-// NOTE: The spec allows float values like '+.25e2%', which cannot be recognized
-// via RE and are not supported.
-const alphaFloatStr = `(${zeroTo1FloatStr}|${zeroTo100FloatPercentStr})`
-const rgbDecFuncStr = `(\\s*${zeroTo255FloatStr}\\s*,){2}\\s*${zeroTo255FloatStr}\\s*(,\\s*${alphaFloatStr}\\s*)?`
-const rgbPercFuncStr = `(\\s*${zeroTo100FloatPercentStr}\\s*,){2}\\s*${zeroTo100FloatPercentStr}\\s*(,\\s*${alphaFloatStr}\\s*)?`
-const rgbDecSpaceStr = `(\\s*${zeroTo255FloatStr}\\s+){2}${zeroTo255FloatStr}\\s*(/\\s*${alphaFloatStr}\\s*)?`
-const rgbPercSpaceStr = `(\\s*${zeroTo100FloatPercentStr}\\s+){2}${zeroTo100FloatPercentStr}\\s*(/\\s*${alphaFloatStr}\\s*)?`
- 
-export const rgbREString = `rgba?\\((${rgbDecFuncStr}|${rgbPercFuncStr}|${rgbDecSpaceStr}|${rgbPercSpaceStr})\\s*\\)`
-// Colors/CSS: Matches CSS4 'rgb(...) and rgba(...) functios  using '0...255 and percent (float) notation.
-export const rgbRE = lockdownRE(rgbREString)
- 
-const hsl3BaseStr = `\\s*${zeroTo360Str}(deg)?\\s*(,\\s*${zeroTo100PercentStr}\\s*)`
-const hsl3Opts = [`hsl\\(${hsl3BaseStr}{2}\\)`, `hsla\\(${hsl3BaseStr}{3}\\)`]
- 
-export const hsl3REString = '(?:' + hsl3Opts.join('|') + ')'
-// Colors/CSS: Matches CSS3 'hsl(...) and hsla(...) deg and percent notation.
-export const hsl3RE = lockdownRE(hsl3REString)
- 
-export const hslREString =
-  `hsla?\\(\\s*${floatStr}(deg|grad|rad|turn)?\\s*(,\\s*${zeroTo100FloatPercentStr}\\s*){2,3}\\)`
-// Colors/CSS: Matches CSS4 'hsl(...) and hsla(...) deg, grad, rad, turn and percent notation.
-export const hslRE = lockdownRE(hslREString)
- 
-export const cssColor3REString = '(?:' +
-  [hexColorNoAlphaREString, rgb1IntStr, rgb1PercStr, rgba3IntStr, rgba3PercStr]
-    .concat(Object.keys(pre.cssPreColors3))
-    .concat(hsl3Opts)
-    .join('|') +
-  ')'
-// Colors/CSS: Matches CSS3 'hex, rgb, rgba, hsl, and predefined colors.
-export const cssColor3RE = lockdownRE(cssColor3REString)
- 
-export const cssColorREString = '(?:' +
-  [hexColorAlphaREString, rgbREString, hslREString]
-    .concat(Object.keys(pre.cssPreColors))
-    .join('|') +
-  ')'
-// Colors/CSS: Matches CSS4 'hex, rgb, rgba, hsl, and predefined colors.
-export const cssColorRE = lockdownRE(cssColorREString)
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/date-times.mjs.html b/qa/coverage/src/date-times.mjs.html deleted file mode 100644 index 7dd62e4..0000000 --- a/qa/coverage/src/date-times.mjs.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - Code coverage report for src/date-times.mjs - - - - - - - - - -
-
-

All files / src date-times.mjs

-
- -
- 100% - Statements - 29/29 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 29/29 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -1x -1x -1x -1x -1x -1x -  -  -1x -  -1x -  -1x -  -1x -  -1x -  -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x - 
/*
-Copyright 2023 Liquid Labs LLC
- 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- 
-    http://www.apache.org/licenses/LICENSE-2.0
- 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-import { lockdownRE } from './lib/lockdown-re'
- 
-// Started RE based on https://www.myintervals.com/blog/2009/05/20/iso-8601-date-validation-that-doesnt-suck/
-// Made some corrections, rearranged capture groups.
- 
-// Date/Time: (string only) Matches the day designation portion of an ISO 8601 date+time. Provides matching groups 1 (year), 3 (month), and 4 (day of month), 5 (week of year), 6 (day of week date), and 7 (ordinal or Julian date).
-export const iso8601DayREString = '(?:([+-]?\\d{4})(?:(-?)(?:(0[1-9]|1[0-2])(?:\\2([12]\\d|0[1-9]|3[01])?)?|W([0-4]\\d|5[0-3])\\2([1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[1-6])))?)?)'
- 
-const eod = '(24(?<endSep>:?)00\\k<endSep>00)'
-const frac = '(?:[.,](\\d+))'
-const hr = `(?:([01]\\d|2[0-3])${frac}?)`
-const min = `(?:([0-5]\\d)${frac}?)`
-const sec = `(?:([0-5]\\d|60)${frac}?)`
-const tz = '([zZ]|(?:[+-](?!00(?::?00)?)(?:[01]\\d|2[0-3])(?::?[0-5]\\d)?))'
- 
-// Date/Time: (string only) Matches the time designation portion of an ISO 8601 date+time. Provides matching groups 1 (special end of day time), 3 (hours), 3 (fraction of hour), 5 (minutes), 6 (fraction of minute), 7 (seconds), and 8 (fraction of seconds).
-export const iso8601TimeREString = `(?:(?:${eod}|${hr}(?:(?<timeSep>:?)${min}(?:\\k<timeSep>${sec})?)?)${tz}?)`
- 
-export const iso8601DateREString = `${iso8601DayREString}(?:T${iso8601TimeREString})?`
-// Date/Time: Matches an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date time like '20240101T1212Z. Provides matching groups 1 (year), 3 (month), and 4 (day of month), 5 (week of year), 6 (day of week date), and 7 (ordinal or Julian date), 8 (special end of day time), 10 (hour), 11 (decimal fraction of hour), 13 (minute), 14 (decimal fraction of minute), 15 (seconds), 16 (decimal fraction of a second), and 17 (timezone designation). (Groups 2, 11, and 13 are internal back references.)
-export const iso8601DateRE = lockdownRE(iso8601DateREString)
- 
-export const iso8601DateTimeREString = `${iso8601DayREString}T${iso8601TimeREString}`
-// Date/Time: Matches an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) _requiring_ both date and time components. See [`iso8601DateRE`](#iso8601datere) for matching groups.
-export const iso8601DateTimeRE = lockdownRE(iso8601DateTimeREString)
- 
-// Date/Time: (string only) Matches the day designation portion of an RFC 2822 date+time. Provides matching groups 1 (day of week name), 2 (day of month), 3 (month name), 4 (year).
-export const rfc2822DayREString = '(?:(?:(Sun|Mon|Tue|Wed|Thu|Fri|Sat),\\s+)?(0[1-9]|[1-2]?[0-9]|3[01])\\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s+(\\d{2,4}))'
-// Date/Time: (string only) Matches a general timezone designation; compliant with RFC 2822 timezone portion. Provides matching groups 1 (timezone).
-export const timezoneREString = '([+-][0-9]{2}[0-5][0-9]|(?:UT|GMT|[A-Z]{3,5}|[A-IK-Z]))'
-// Date/Time: (string only) Matches the time designation portion of an RFC 2822 date+time. Provides matching groups 1 (hour), 2 (minutes), 3 (seconds), and 4 (timezone).
-export const rfc2822TimeREString = `(?:(2[0-3]|[0-1][0-9]):([0-5][0-9])(?::(60|[0-5][0-9]))?(?:\\s+${timezoneREString})?)`
- 
-export const rfc2822DateREString = `${rfc2822DayREString}\\s+${rfc2822TimeREString}`
-// Date/Time: Matches an [RFC 2822](https://datatracker.ietf.org/doc/html/rfc2822#section-3.3) style date like 'Mon, 6 Jan 1992 12:12 UTC'. Provides matching groups 1 (day of week), 2 (day of month), 3 (month name), and 4 (year), 5 (hour), 6 (min), 7 (second), and 8 (time zone).
-export const rfc2822DateRE = lockdownRE(rfc2822DateREString)
- 
-const seps = '[./-]'
- 
-export const usDateREString = `(0?[1-9]|1[0-2])${seps}(0?[1-9]|[1-2][0-9]|3[0-1])${seps}([+-])?(\\d{1,})`
-// Date/Time: Matches a US style 'MM/DD/YYYY' string. Accepts separators '.', '/', '-'. Will except 1 or 2 digits for month and day and 1-4 digits for the year. Also accepts a + or - before the year. Provides capture groups 1 (month), 2 (day of month), 3 (BCE/CE indicator), and 4 (year).
-export const usDateRE = lockdownRE(usDateREString)
- 
-export const intlDateREString = `([+-])?(\\d{1,})${seps}(0?[1-9]|1[0-2])${seps}(0?[1-9]|[1-2][0-9]|3[0-1])`
-// Date/Time: Matches an international style 'YYYY/MM/DD' string. Accepts separators '.', '/', '-'. Will except 1 or 2 digits for month and day and 1-4 digits for the year. Also accepts a + or - before the year. Provides capture groups 1 (BCE/CE indicator), 2 (year), 3 (month), 4 (day).
-export const intlDateRE = lockdownRE(intlDateREString)
- 
-export const militaryTimeREString = '(?:(2400)|([0-1][0-9]|2[0-3])([0-5]\\d))'
-// Date/Time: Matches military time style 'HHMM' string. Provides capture groups 1 (special 2400 time), 2 (hour), and 3 (minutes).
-export const militaryTimeRE = lockdownRE(militaryTimeREString)
- 
-export const timeREString = '(?:(0?[1-9]|1[0-2]):([0-5][0-9])(?::([0-5][0-9])(?:[.,](\\d+))?)?\\s*([aApP][mM]))'
-// Date/Time: Matches a twelve hour time designation, requires AM or PM designation. Allows optional leading 0 in hour. Provides matching groups 1 (hour), 2 (minutes), 3 (seconds, without decimal fractions), 4 (decimal fraction seconds), and 5 (AM/PM indicator).
-export const timeRE = lockdownRE(timeREString)
- 
-export const twentyFourHourTimeREString = '(?:(24:00(?::00)?)|(0?[1-9]|1[0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9])(?:[.,](\\d+))?)?)'
-// Date/Time: Matches a twenty-four hour time designationAllows optional leading 0 in hour. Provides matching groups 1 (special 24:00 designation with optional seconds), 2 (hour), 3 (minutes), 4 (seconds, without decimal fractions), 5 (decimal fraction seconds).
-export const twentyFourHourTimeRE = lockdownRE(twentyFourHourTimeREString)
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/ids.js.html b/qa/coverage/src/ids.js.html deleted file mode 100644 index 5c84d92..0000000 --- a/qa/coverage/src/ids.js.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - Code coverage report for src/ids.js - - - - - - - - - -
-
-

All files / src ids.js

-
- -
- 100% - Statements - 9/9 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 8/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -1x -  -1x -  -1x -  -1x -  -  -83x -  -1x -  -1x - 
/*
-Copyright 2023 Liquid Labs LLC
- 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- 
-    http://www.apache.org/licenses/LICENSE-2.0
- 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
- 
-import { lockdownRE } from './lib/lockdown-re'
- 
-export const uuidREString = '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}'
-// Identifiers: Matches a UUID.
-export const uuidRE = lockdownRE(uuidREString)
- 
-export const ssnREString = '(?!000|666|9\\d\\d)(\\d{3})-?(\\d\\d)-?(?!0000)(\\d{4})'
-// Identifiers: Matches a valid SSN. Provides 3 matching groups, 1 (area number), 2 (group number), and 3 (serial number).
-export const ssnRE = lockdownRE(ssnREString)
- 
-// https://www.irs.gov/businesses/small-businesses-self-employed/how-eins-are-assigned-and-valid-ein-prefixes
-const validEINPrefix = [10, 12, 60, 67, 50, 53, 1, 2, 3, 4, 5, 6, 11, 13, 14, 16, 21, 22, 23, 25, 34, 51, 52, 54, 55, 56, 57, 58, 59, 65, 30, 32, 35, 36, 37, 38, 61, 15, 24, 40, 44, 94, 95, 80, 90, 33, 39, 41, 42, 43, 48, 62, 63, 64, 66, 68, 71, 72, 73, 74, 75, 76, 77, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 98, 99, 20, 26, 27, 45, 46, 47, 81, 31].map((prefix) => ('' + prefix).padStart(2, '0'))
- 
-export const einREString = '(?:' + validEINPrefix.join('|') + ')-?\\d{7}'
-// Identifiers: Matches a valid EIN number.
-export const einRE = lockdownRE(einREString)
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/index.html b/qa/coverage/src/index.html deleted file mode 100644 index a583300..0000000 --- a/qa/coverage/src/index.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - Code coverage report for src - - - - - - - - - -
-
-

All files src

-
- -
- 100% - Statements - 143/143 -
- - -
- 66.66% - Branches - 8/12 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 141/141 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
aws.js -
-
100%6/6100%0/0100%0/0100%6/6
contacts.js -
-
100%9/9100%0/0100%0/0100%9/9
css.js -
-
100%42/4266.66%4/6100%1/1100%42/42
date-times.mjs -
-
100%29/29100%0/0100%0/0100%29/29
ids.js -
-
100%9/9100%0/0100%1/1100%8/8
javascript.js -
-
100%5/5100%0/0100%0/0100%5/5
npm.js -
-
100%3/3100%0/0100%0/0100%3/3
numbers.js -
-
100%25/2566.66%4/6100%1/1100%24/24
web.js -
-
100%15/15100%0/0100%0/0100%15/15
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/javascript.js.html b/qa/coverage/src/javascript.js.html deleted file mode 100644 index 11680a0..0000000 --- a/qa/coverage/src/javascript.js.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - Code coverage report for src/javascript.js - - - - - - - - - -
-
-

All files / src javascript.js

-
- -
- 100% - Statements - 5/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 5/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -1x -  -1x -  -  -1x -  -1x - 
/*
-Copyright 2023 Liquid Labs LLC
- 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- 
-    http://www.apache.org/licenses/LICENSE-2.0
- 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
- 
-import { lockdownRE } from './lib/lockdown-re'
- 
-export const jsReservedWordREString = '(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)'
-// JavaScript: Matches a JS resereved word.
-export const jsReservedWordRE = lockdownRE(jsReservedWordREString)
- 
-/* credit to: https://stackoverflow.com/questions/1661197/what-characters-are-valid-for-javascript-variable-names */
-export const jsVariableREString = '(?!(?:(?:^| |;)do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)(?: |;|$))[$A-Z_a-z\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc][$A-Z_a-z\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc0-9\\u0300-\\u036f\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08e4-\\u08fe\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c01-\\u0c03\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d02\\u0d03\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19b0-\\u19c0\\u19c8\\u19c9\\u19d0-\\u19d9\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf2-\\u1cf4\\u1dc0-\\u1de6\\u1dfc-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua880\\ua881\\ua8b4-\\ua8c4\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua900-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f]*'
-// JavaScript: Matches a valid JS variable name.
-export const jsVariableRE = lockdownRE(jsVariableREString)
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/lib/css-color-data.js.html b/qa/coverage/src/lib/css-color-data.js.html deleted file mode 100644 index a85717c..0000000 --- a/qa/coverage/src/lib/css-color-data.js.html +++ /dev/null @@ -1,610 +0,0 @@ - - - - - - Code coverage report for src/lib/css-color-data.js - - - - - - - - - -
-
-

All files / src/lib css-color-data.js

-
- -
- 100% - Statements - 4/4 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  - 
/*
-Copyright 2023 Liquid Labs LLC
- 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- 
-    http://www.apache.org/licenses/LICENSE-2.0
- 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
- 
-export const cssPreColors1 = {
-  black   : '#000000',
-  silver  : '#c0c0c0',
-  gray    : '#808080',
-  white   : '#ffffff',
-  maroon  : '#800000',
-  red     : '#ff0000',
-  purple  : '#800080',
-  fuchsia : '#ff00ff',
-  green   : '#008000',
-  lime    : '#00ff00',
-  olive   : '#808000',
-  yellow  : '#ffff00',
-  navy    : '#000080',
-  blue    : '#0000ff',
-  teal    : '#008080',
-  aqua    : '#00ffff'
-}
- 
-export const cssPreColors2 = Object.assign({
-  orange : '#ffa500'
-}, cssPreColors1)
- 
-export const cssPreColors3 = Object.assign({
-  aliceblue            : '#f0f8ff',
-  antiquewhite         : '#faebd7',
-  aquamarine           : '#7fffd4',
-  azure                : '#f0ffff',
-  beige                : '#f5f5dc',
-  bisque               : '#ffe4c4',
-  blanchedalmond       : '#ffebcd',
-  blueviolet           : '#8a2be2',
-  brown                : '#a52a2a',
-  burlywood            : '#deb887',
-  cadetblue            : '#5f9ea0',
-  chartreuse           : '#7fff00',
-  chocolate            : '#d2691e',
-  coral                : '#ff7f50',
-  cornflowerblue       : '#6495ed',
-  cornsilk             : '#fff8dc',
-  crimson              : '#dc143c',
-  cyan                 : 'aqua',
-  darkblue             : '#00008b',
-  darkcyan             : '#008b8b',
-  darkgoldenrod        : '#b8860b',
-  darkgray             : '#a9a9a9',
-  darkgreen            : '#006400',
-  darkgrey             : '#a9a9a9',
-  darkkhaki            : '#bdb76b',
-  darkmagenta          : '#8b008b',
-  darkolivegreen       : '#556b2f',
-  darkorange           : '#ff8c00',
-  darkorchid           : '#9932cc',
-  darkred              : '#8b0000',
-  darksalmon           : '#e9967a',
-  darkseagreen         : '#8fbc8f',
-  darkslateblue        : '#483d8b',
-  darkslategray        : '#2f4f4f',
-  darkslategrey        : '#2f4f4f',
-  darkturquoise        : '#00ced1',
-  darkviolet           : '#9400d3',
-  deeppink             : '#ff1493',
-  deepskyblue          : '#00bfff',
-  dimgray              : '#696969',
-  dimgrey              : '#696969',
-  dodgerblue           : '#1e90ff',
-  firebrick            : '#b22222',
-  floralwhite          : '#fffaf0',
-  forestgreen          : '#228b22',
-  gainsboro            : '#dcdcdc',
-  ghostwhite           : '#f8f8ff',
-  gold                 : '#ffd700',
-  goldenrod            : '#daa520',
-  greenyellow          : '#adff2f',
-  grey                 : '#808080',
-  honeydew             : '#f0fff0',
-  hotpink              : '#ff69b4',
-  indianred            : '#cd5c5c',
-  indigo               : '#4b0082',
-  ivory                : '#fffff0',
-  khaki                : '#f0e68c',
-  lavender             : '#e6e6fa',
-  lavenderblush        : '#fff0f5',
-  lawngreen            : '#7cfc00',
-  lemonchiffon         : '#fffacd',
-  lightblue            : '#add8e6',
-  lightcoral           : '#f08080',
-  lightcyan            : '#e0ffff',
-  lightgoldenrodyellow : '#fafad2',
-  lightgray            : '#d3d3d3',
-  lightgreen           : '#90ee90',
-  lightgrey            : '#d3d3d3',
-  lightpink            : '#ffb6c1',
-  lightsalmon          : '#ffa07a',
-  lightseagreen        : '#20b2aa',
-  lightskyblue         : '#87cefa',
-  lightslategray       : '#778899',
-  lightslategrey       : '#778899',
-  lightsteelblue       : '#b0c4de',
-  lightyellow          : '#ffffe0',
-  limegreen            : '#32cd32',
-  linen                : '#faf0e6',
-  magenta              : 'fuchsia',
-  mediumaquamarine     : '#66cdaa',
-  mediumblue           : '#0000cd',
-  mediumorchid         : '#ba55d3',
-  mediumpurple         : '#9370db',
-  mediumseagreen       : '#3cb371',
-  mediumslateblue      : '#7b68ee',
-  mediumspringgreen    : '#00fa9a',
-  mediumturquoise      : '#48d1cc',
-  mediumvioletred      : '#c71585',
-  midnightblue         : '#191970',
-  mintcream            : '#f5fffa',
-  mistyrose            : '#ffe4e1',
-  moccasin             : '#ffe4b5',
-  navajowhite          : '#ffdead',
-  oldlace              : '#fdf5e6',
-  olivedrab            : '#6b8e23',
-  orangered            : '#ff4500',
-  orchid               : '#da70d6',
-  palegoldenrod        : '#eee8aa',
-  palegreen            : '#98fb98',
-  paleturquoise        : '#afeeee',
-  palevioletred        : '#db7093',
-  papayawhip           : '#ffefd5',
-  peachpuff            : '#ffdab9',
-  peru                 : '#cd853f',
-  pink                 : '#ffc0cb',
-  plum                 : '#dda0dd',
-  powderblue           : '#b0e0e6',
-  rosybrown            : '#bc8f8f',
-  royalblue            : '#4169e1',
-  saddlebrown          : '#8b4513',
-  salmon               : '#fa8072',
-  sandybrown           : '#f4a460',
-  seagreen             : '#2e8b57',
-  seashell             : '#fff5ee',
-  sienna               : '#a0522d',
-  skyblue              : '#87ceeb',
-  slateblue            : '#6a5acd',
-  slategray            : '#708090',
-  slategrey            : '#708090',
-  snow                 : '#fffafa',
-  springgreen          : '#00ff7f',
-  steelblue            : '#4682b4',
-  tan                  : '#d2b48c',
-  thistle              : '#d8bfd8',
-  tomato               : '#ff6347',
-  turquoise            : '#40e0d0',
-  violet               : '#ee82ee',
-  wheat                : '#f5deb3',
-  whitesmoke           : '#f5f5f5',
-  yellowgreen          : '#9acd32'
-}, cssPreColors2)
- 
-export const cssPreColors = Object.assign({
-  rebeccapurple : '#663399'
-}, cssPreColors3)
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/lib/index.html b/qa/coverage/src/lib/index.html deleted file mode 100644 index 9042ca8..0000000 --- a/qa/coverage/src/lib/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - Code coverage report for src/lib - - - - - - - - - -
-
-

All files src/lib

-
- -
- 100% - Statements - 18/18 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 16/16 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
css-color-data.js -
-
100%4/4100%0/0100%0/0100%4/4
lockdown-re.js -
-
100%3/3100%0/0100%1/1100%1/1
numbers-strings.js -
-
100%10/10100%0/0100%0/0100%10/10
uni-non-ascii.mjs -
-
100%1/1100%0/0100%0/0100%1/1
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/lib/lockdown-re.js.html b/qa/coverage/src/lib/lockdown-re.js.html deleted file mode 100644 index 84dead6..0000000 --- a/qa/coverage/src/lib/lockdown-re.js.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - Code coverage report for src/lib/lockdown-re.js - - - - - - - - - -
-
-

All files / src/lib lockdown-re.js

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 1/1 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -59x - 
/*
-Copyright 2023 Liquid Labs LLC
- 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- 
-    http://www.apache.org/licenses/LICENSE-2.0
- 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
- 
-export const lockdownRE = (str, flags) => new RegExp(`^${str}$`, flags)
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/lib/numbers-strings.js.html b/qa/coverage/src/lib/numbers-strings.js.html deleted file mode 100644 index 9d46ade..0000000 --- a/qa/coverage/src/lib/numbers-strings.js.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - Code coverage report for src/lib/numbers-strings.js - - - - - - - - - -
-
-

All files / src/lib numbers-strings.js

-
- -
- 100% - Statements - 10/10 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 10/10 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -2x -2x -2x -2x -2x -  -2x -2x -  -2x -2x -  - 
/*
-Copyright 2023 Liquid Labs LLC
- 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- 
-    http://www.apache.org/licenses/LICENSE-2.0
- 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
- 
-// Note, this module is used internally, so these aStr exported to for other
-// modules to use, but the file is not Str-exported through index.
-export const plainFloatStr = '[+-]?(0(\\.[0-9]+)?|[1-9][0-9]*(\\.[0-9]+)?)'
-export const scientificFloatStr = `${plainFloatStr}[eE]${plainFloatStr}`
-export const floatStr = `${plainFloatStr}([eE]${plainFloatStr})?`
-export const zeroTo1FloatStr = '(0|0?\\.[0-9]+|1(\\.0+)?)'
-export const zeroTo100PercentStr = '([0-9]|[1-9][0-9]|100)\\%'
-export const zeroTo100FloatPercentStr =
-  '(([0-9]|[1-9][0-9])(\\.[0-9]+)?|100(\\.0+)?)\\%'
-export const zeroTo255Str = '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-export const zeroTo255FloatStr =
-  '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])(\\.[0-9]+)?|255(\\.0+)?)'
-export const zeroTo360Str = '([0-9]|[1-9][0-9]|[1-2][0-9][0-9]|3[0-5][0-9]|360)'
-export const zeroTo360FloatStr =
-  '(([0-9]|[1-9][0-9]|[1-2][0-9][0-9]|3[0-5][0-9])(\\.[0-9]+)?|360(\\.0+)?)'
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/lib/uni-non-ascii.mjs.html b/qa/coverage/src/lib/uni-non-ascii.mjs.html deleted file mode 100644 index f57de3e..0000000 --- a/qa/coverage/src/lib/uni-non-ascii.mjs.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Code coverage report for src/lib/uni-non-ascii.mjs - - - - - - - - - -
-
-

All files / src/lib uni-non-ascii.mjs

-
- -
- 100% - Statements - 1/1 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 1/1 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -23x - 
export const uniNonASCII = '\\u0080-\\u{e007f}'
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/npm.js.html b/qa/coverage/src/npm.js.html deleted file mode 100644 index 216c4d8..0000000 --- a/qa/coverage/src/npm.js.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - Code coverage report for src/npm.js - - - - - - - - - -
-
-

All files / src npm.js

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -1x -  -1x - 
/*
-Copyright 2023 Liquid Labs LLC
- 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- 
-    http://www.apache.org/licenses/LICENSE-2.0
- 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
- 
-import { lockdownRE } from './lib/lockdown-re'
- 
-export const npmPackageNameREString = '(@[a-z0-9-~][a-z0-9-._~]*/)?([a-z0-9-~][a-z0-9-._~]*)'
-// NPM: Matches an NPM package name. Provides matching groups 1 (org name, if any) and 2 (package basename).
-export const npmPackageNameRE = lockdownRE(npmPackageNameREString)
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/numbers.js.html b/qa/coverage/src/numbers.js.html deleted file mode 100644 index 39d3318..0000000 --- a/qa/coverage/src/numbers.js.html +++ /dev/null @@ -1,271 +0,0 @@ - - - - - - Code coverage report for src/numbers.js - - - - - - - - - -
-
-

All files / src numbers.js

-
- -
- 100% - Statements - 25/25 -
- - -
- 66.66% - Branches - 4/6 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 24/24 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -2x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x - 
/*
-Copyright 2023 Liquid Labs LLC
- 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- 
-    http://www.apache.org/licenses/LICENSE-2.0
- 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
- 
-import * as numStrs from './lib/numbers-strings'
-import { lockdownRE } from './lib/lockdown-re'
- 
-export const integerREString = '-?(?:0|[1-9]\\d*)'
-// Numbers: Matches an integer.
-export const integerRE = lockdownRE(integerREString)
- 
-export const plainFloatREString = numStrs.plainFloatStr
-// Numbers: Matches a plain (non-scientific notation) float.
-export const plainFloatRE = lockdownRE(plainFloatREString)
- 
-export const scientificFloatREString = numStrs.scientificFloatStr
-// Numbers: Matches a scientific notation float.
-export const scientificFloatRE = lockdownRE(scientificFloatREString)
- 
-export const floatREString = numStrs.floatStr
-// Numbers: Matches a float in either plan or scientific format.
-export const floatRE = lockdownRE(floatREString)
- 
-export const zeroTo1FloatREString = numStrs.zeroTo1FloatStr
-// CSS numbers: Matches a 0 to 1 float as used in CSS color specifications.
-export const zeroTo1FloatRE = lockdownRE(zeroTo1FloatREString)
- 
-export const zeroTo100PercentREString = numStrs.zeroTo100PercentStr
-// CSS numbers: Matches a 0 to 100% integer as used in CSS color specifications.
-export const zeroTo100PercentRE = lockdownRE(zeroTo100PercentREString)
- 
-export const zeroTo100FloatPercentREString = numStrs.zeroTo100FloatPercentStr
-// CSS numbers: Matches a 0 to 100% float as used in CSS color specifications.
-export const zeroTo100FloatPercentRE = lockdownRE(zeroTo100FloatPercentREString)
- 
-export const zeroTo255REString = numStrs.zeroTo255Str
-// CSS numbers: Matches a 0 to 255 integer as used in CSS color specifications.
-export const zeroTo255RE = lockdownRE(zeroTo255REString)
- 
-export const zeroTo255FloatREString = numStrs.zeroTo255FloatStr
-// CSS numbers: Matches a 0 to 255 float as used in CSS color specifications.
-export const zeroTo255FloatRE = lockdownRE(zeroTo255FloatREString)
- 
-export const zeroTo360REString = numStrs.zeroTo360Str
-// CSS numbers: Matches a 0 to 360 integer as used in CSS color specifications.
-export const zeroTo360RE = lockdownRE(zeroTo360REString)
- 
-export const zeroTo360FloatREString = numStrs.zeroTo360FloatStr
-// CSS numbers: Matches a 0 to 360 float as used in CSS color specifications.
-export const zeroTo360FloatRE = lockdownRE(zeroTo360FloatREString)
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/src/web.js.html b/qa/coverage/src/web.js.html deleted file mode 100644 index 9a89d6c..0000000 --- a/qa/coverage/src/web.js.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - Code coverage report for src/web.js - - - - - - - - - -
-
-

All files / src web.js

-
- -
- 100% - Statements - 15/15 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 15/15 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -3x -  -3x -  -  -  -3x -  -3x -3x -  -3x -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -3x -  -3x -  -3x -  -  -  -  -3x -  -  -3x -  -3x - 
/*
-Copyright 2023 Liquid Labs LLC
- 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
- 
-    http://www.apache.org/licenses/LICENSE-2.0
- 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
- 
-import { lockdownRE } from './lib/lockdown-re'
-import { uniNonASCII } from './lib/uni-non-ascii'
- 
-export const ipREString = '(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])' +
-  '(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}' +
-  '(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))'
-// Web: Matches a valid, non-localhost IP address.
-export const ipRE = lockdownRE(ipREString)
- 
-const ipTuple = '(?:0|1?\\d{1,2}|2[0-4]\\d|25[0-5])'
-export const ipFormatREString = `(?:${ipTuple}\\.){3}${ipTuple}`
-// Web: Matches a string in IP address format. Use 'ipRE' to match actually valid IP addresses.
-export const ipFormatRE = lockdownRE(ipFormatREString)
- 
-/* Base RE cribbed from: https://github.com/chriso/validator.js via https://stackoverflow.com/a/22648406/929494
-   Annotations cribbed from https://gist.github.com/dperini/729294 */
-export const urlREString =
-  // protocol ID
-  '(?!mailto:)(?:(?:http|https|ftp)://)' +
-  // user + pass
-  '(?:\\S+(?::\\S*)?@)?' +
-  // IP address dotted notation octets
-  // excludes loopback network 0.0.0.0
-  // excludes reserved space >= 224.0.0.0
-  // excludes network & broacast addresses
-  // (first & last IP address of each class)
-  '(?:(?:' + ipREString +
-  `|(?:(?:[a-z${uniNonASCII}0-9]+-?)*[a-z${uniNonASCII}0-9]+)(?:\\.(?:[a-z${uniNonASCII}0-9]+-?)*[a-z${uniNonASCII}0-9]+)*(?:\\.(?:[a-z${uniNonASCII}]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?`
-// Web: Matches a valid URL. When using the partial string to create a RE, you must use the 'u' or 'v' flag.
-export const urlRE = lockdownRE(urlREString, 'ui')
- 
-// note the 'v' flag breaks on Ubuntu
-export const tldNameREString = `(?:(?![0-9])(?:[${uniNonASCII}]|[a-zA-Z${uniNonASCII}][a-zA-Z0-9${uniNonASCII}]{1,62}))`
-// Web: Matches a Top Level Domain (TLD). See [domain name rules](#domain-name-rules). When using the partial string to create a RE, you must use the 'u' or 'v' flag.
-export const tldNameRE = lockdownRE(tldNameREString, 'u')
- 
-export const subdomainLabelREString = `(?:[${uniNonASCII}]|[a-zA-Z0-9${uniNonASCII}]` + // allow single unicode
-  `(?:[a-zA-Z0-9${uniNonASCII}]|` + // two letters only
-  // otherwise, verify the 3rd and 4th positions are not '-'
-  `[a-zA-Z0-9${uniNonASCII}\\-](?!--)[a-zA-Z0-9${uniNonASCII}\\-]{0,60}[\\p{L}0-9]))`
-// Web: Matches a registerable domain name. Partially enforces the 63 byte domain label limit, but this is only valid for non-international (all ASCII) labels because we can only count characters. See [domain name rules](#domain-name-rules). When using the partial string to create a RE, you must use the 'u' or 'v' flag.
-export const subdomainLabelRE = lockdownRE(subdomainLabelREString, 'u')
- 
-// export const fqDomainNameREString = `(?![0-9\\p{L}.\\-]{256,})(?:${subdomainLabelREString}\\.)+${tldNameREString}`
-export const fqDomainNameREString = `(?!.{256,})(?:${subdomainLabelREString}\\.)+${tldNameREString}`
-// Web: Matches fully qualified domain name (one or more subdomains + TLD). Partially enforces the 255 byte FQ domain name limit, but this is only valid for non-international (all ASCII) domain names because we can only count characters. When using the partial string to create a RE, you must use the 'u' or 'v' flag.
-export const fqDomainNameRE = lockdownRE(fqDomainNameREString, 'u')
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/lint.txt b/qa/lint.txt deleted file mode 100644 index d18b750..0000000 --- a/qa/lint.txt +++ /dev/null @@ -1 +0,0 @@ -Test git rev: 5294f7bb58f67e1f4ded9f34598a3c4037ee051f diff --git a/qa/unit-test.txt b/qa/unit-test.txt deleted file mode 100644 index 0e2435d..0000000 --- a/qa/unit-test.txt +++ /dev/null @@ -1,36 +0,0 @@ -Test git rev: 63588c0093e0b44d39f11e9df38c0987662e6d45 -PASS test/web.test.js -PASS test/css.test.js -PASS test/date-time.test.js -PASS test/numbers.test.js -PASS test/contacts.test.js -PASS test/javascript.test.js -PASS test/ids.test.js -PASS test/aws.test.js -PASS test/npm.test.js ----------------------|---------|----------|---------|---------|------------------- -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s ----------------------|---------|----------|---------|---------|------------------- -All files | 100 | 66.66 | 100 | 100 | - src | 100 | 66.66 | 100 | 100 | - aws.js | 100 | 100 | 100 | 100 | - contacts.js | 100 | 100 | 100 | 100 | - css.js | 100 | 66.66 | 100 | 100 | 27 - date-times.mjs | 100 | 100 | 100 | 100 | - ids.js | 100 | 100 | 100 | 100 | - javascript.js | 100 | 100 | 100 | 100 | - npm.js | 100 | 100 | 100 | 100 | - numbers.js | 100 | 66.66 | 100 | 100 | 18 - web.js | 100 | 100 | 100 | 100 | - src/lib | 100 | 100 | 100 | 100 | - css-color-data.js | 100 | 100 | 100 | 100 | - lockdown-re.js | 100 | 100 | 100 | 100 | - numbers-strings.js | 100 | 100 | 100 | 100 | - uni-non-ascii.mjs | 100 | 100 | 100 | 100 | ----------------------|---------|----------|---------|---------|------------------- - -Test Suites: 9 passed, 9 total -Tests: 2158 passed, 2158 total -Snapshots: 0 total -Time: 0.565 s, estimated 1 s -Ran all test suites.