@brandlab-digital/conformance 3.7.0 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -0
- package/dist/current-release.js +5 -5
- package/dist/current-release.js.map +1 -1
- package/dist/public-copy.d.ts +7 -0
- package/dist/public-copy.d.ts.map +1 -1
- package/dist/public-copy.js +8 -3
- package/dist/public-copy.js.map +1 -1
- package/dist/ready-cli.d.ts +38 -0
- package/dist/ready-cli.d.ts.map +1 -0
- package/dist/ready-cli.js +327 -0
- package/dist/ready-cli.js.map +1 -0
- package/dist/site-system/checks.d.ts +389 -0
- package/dist/site-system/checks.d.ts.map +1 -0
- package/dist/site-system/checks.js +96 -0
- package/dist/site-system/checks.js.map +1 -0
- package/dist/site-system/config.d.ts +40 -0
- package/dist/site-system/config.d.ts.map +1 -0
- package/dist/site-system/config.js +214 -0
- package/dist/site-system/config.js.map +1 -0
- package/dist/site-system/index.d.ts +14 -0
- package/dist/site-system/index.d.ts.map +1 -0
- package/dist/site-system/index.js +14 -0
- package/dist/site-system/index.js.map +1 -0
- package/dist/site-system/journeys/access.d.ts +7 -0
- package/dist/site-system/journeys/access.d.ts.map +1 -0
- package/dist/site-system/journeys/access.js +263 -0
- package/dist/site-system/journeys/access.js.map +1 -0
- package/dist/site-system/journeys/browser.d.ts +79 -0
- package/dist/site-system/journeys/browser.d.ts.map +1 -0
- package/dist/site-system/journeys/browser.js +218 -0
- package/dist/site-system/journeys/browser.js.map +1 -0
- package/dist/site-system/journeys/conversion.d.ts +3 -0
- package/dist/site-system/journeys/conversion.d.ts.map +1 -0
- package/dist/site-system/journeys/conversion.js +152 -0
- package/dist/site-system/journeys/conversion.js.map +1 -0
- package/dist/site-system/journeys/menu.d.ts +11 -0
- package/dist/site-system/journeys/menu.d.ts.map +1 -0
- package/dist/site-system/journeys/menu.js +395 -0
- package/dist/site-system/journeys/menu.js.map +1 -0
- package/dist/site-system/journeys/page-helpers.d.ts +146 -0
- package/dist/site-system/journeys/page-helpers.d.ts.map +1 -0
- package/dist/site-system/journeys/page-helpers.js +426 -0
- package/dist/site-system/journeys/page-helpers.js.map +1 -0
- package/dist/site-system/journeys/plan.d.ts +82 -0
- package/dist/site-system/journeys/plan.d.ts.map +1 -0
- package/dist/site-system/journeys/plan.js +112 -0
- package/dist/site-system/journeys/plan.js.map +1 -0
- package/dist/site-system/journeys/shell.d.ts +24 -0
- package/dist/site-system/journeys/shell.d.ts.map +1 -0
- package/dist/site-system/journeys/shell.js +269 -0
- package/dist/site-system/journeys/shell.js.map +1 -0
- package/dist/site-system/playwright-report.d.ts +22 -0
- package/dist/site-system/playwright-report.d.ts.map +1 -0
- package/dist/site-system/playwright-report.js +131 -0
- package/dist/site-system/playwright-report.js.map +1 -0
- package/dist/site-system/records.d.ts +30 -0
- package/dist/site-system/records.d.ts.map +1 -0
- package/dist/site-system/records.js +98 -0
- package/dist/site-system/records.js.map +1 -0
- package/dist/site-system/report.d.ts +116 -0
- package/dist/site-system/report.d.ts.map +1 -0
- package/dist/site-system/report.js +366 -0
- package/dist/site-system/report.js.map +1 -0
- package/dist/site-system/rule-modules.d.ts +8 -0
- package/dist/site-system/rule-modules.d.ts.map +1 -0
- package/dist/site-system/rule-modules.js +12 -0
- package/dist/site-system/rule-modules.js.map +1 -0
- package/dist/site-system/rules/design/d4-distinctness.d.ts +36 -0
- package/dist/site-system/rules/design/d4-distinctness.d.ts.map +1 -0
- package/dist/site-system/rules/design/d4-distinctness.js +207 -0
- package/dist/site-system/rules/design/d4-distinctness.js.map +1 -0
- package/dist/site-system/rules/design/index.d.ts +17 -0
- package/dist/site-system/rules/design/index.d.ts.map +1 -0
- package/dist/site-system/rules/design/index.js +7 -0
- package/dist/site-system/rules/design/index.js.map +1 -0
- package/dist/site-system/rules/enquiry/c2-quote-form.d.ts +31 -0
- package/dist/site-system/rules/enquiry/c2-quote-form.d.ts.map +1 -0
- package/dist/site-system/rules/enquiry/c2-quote-form.js +211 -0
- package/dist/site-system/rules/enquiry/c2-quote-form.js.map +1 -0
- package/dist/site-system/rules/enquiry/common.d.ts +37 -0
- package/dist/site-system/rules/enquiry/common.d.ts.map +1 -0
- package/dist/site-system/rules/enquiry/common.js +59 -0
- package/dist/site-system/rules/enquiry/common.js.map +1 -0
- package/dist/site-system/rules/enquiry/e1-recorded-titles.d.ts +8 -0
- package/dist/site-system/rules/enquiry/e1-recorded-titles.d.ts.map +1 -0
- package/dist/site-system/rules/enquiry/e1-recorded-titles.js +59 -0
- package/dist/site-system/rules/enquiry/e1-recorded-titles.js.map +1 -0
- package/dist/site-system/rules/enquiry/e9-cost-guides.d.ts +22 -0
- package/dist/site-system/rules/enquiry/e9-cost-guides.d.ts.map +1 -0
- package/dist/site-system/rules/enquiry/e9-cost-guides.js +55 -0
- package/dist/site-system/rules/enquiry/e9-cost-guides.js.map +1 -0
- package/dist/site-system/rules/enquiry/html.d.ts +53 -0
- package/dist/site-system/rules/enquiry/html.d.ts.map +1 -0
- package/dist/site-system/rules/enquiry/html.js +294 -0
- package/dist/site-system/rules/enquiry/html.js.map +1 -0
- package/dist/site-system/rules/enquiry/index.d.ts +17 -0
- package/dist/site-system/rules/enquiry/index.d.ts.map +1 -0
- package/dist/site-system/rules/enquiry/index.js +26 -0
- package/dist/site-system/rules/enquiry/index.js.map +1 -0
- package/dist/site-system/rules/enquiry/k8-sections.d.ts +17 -0
- package/dist/site-system/rules/enquiry/k8-sections.d.ts.map +1 -0
- package/dist/site-system/rules/enquiry/k8-sections.js +76 -0
- package/dist/site-system/rules/enquiry/k8-sections.js.map +1 -0
- package/dist/site-system/rules/enquiry/literal.d.ts +29 -0
- package/dist/site-system/rules/enquiry/literal.d.ts.map +1 -0
- package/dist/site-system/rules/enquiry/literal.js +189 -0
- package/dist/site-system/rules/enquiry/literal.js.map +1 -0
- package/dist/site-system/rules/enquiry/t11-licence-classes.d.ts +73 -0
- package/dist/site-system/rules/enquiry/t11-licence-classes.d.ts.map +1 -0
- package/dist/site-system/rules/enquiry/t11-licence-classes.js +275 -0
- package/dist/site-system/rules/enquiry/t11-licence-classes.js.map +1 -0
- package/dist/site-system/rules/enquiry/t5-reviews.d.ts +23 -0
- package/dist/site-system/rules/enquiry/t5-reviews.d.ts.map +1 -0
- package/dist/site-system/rules/enquiry/t5-reviews.js +91 -0
- package/dist/site-system/rules/enquiry/t5-reviews.js.map +1 -0
- package/dist/site-system/rules/shell/banned-wording.d.ts +24 -0
- package/dist/site-system/rules/shell/banned-wording.d.ts.map +1 -0
- package/dist/site-system/rules/shell/banned-wording.js +212 -0
- package/dist/site-system/rules/shell/banned-wording.js.map +1 -0
- package/dist/site-system/rules/shell/budgets.d.ts +43 -0
- package/dist/site-system/rules/shell/budgets.d.ts.map +1 -0
- package/dist/site-system/rules/shell/budgets.js +297 -0
- package/dist/site-system/rules/shell/budgets.js.map +1 -0
- package/dist/site-system/rules/shell/cta-labels.d.ts +17 -0
- package/dist/site-system/rules/shell/cta-labels.d.ts.map +1 -0
- package/dist/site-system/rules/shell/cta-labels.js +86 -0
- package/dist/site-system/rules/shell/cta-labels.js.map +1 -0
- package/dist/site-system/rules/shell/facts.d.ts +33 -0
- package/dist/site-system/rules/shell/facts.d.ts.map +1 -0
- package/dist/site-system/rules/shell/facts.js +217 -0
- package/dist/site-system/rules/shell/facts.js.map +1 -0
- package/dist/site-system/rules/shell/headings.d.ts +5 -0
- package/dist/site-system/rules/shell/headings.d.ts.map +1 -0
- package/dist/site-system/rules/shell/headings.js +23 -0
- package/dist/site-system/rules/shell/headings.js.map +1 -0
- package/dist/site-system/rules/shell/hero-location.d.ts +4 -0
- package/dist/site-system/rules/shell/hero-location.d.ts.map +1 -0
- package/dist/site-system/rules/shell/hero-location.js +45 -0
- package/dist/site-system/rules/shell/hero-location.js.map +1 -0
- package/dist/site-system/rules/shell/html.d.ts +53 -0
- package/dist/site-system/rules/shell/html.d.ts.map +1 -0
- package/dist/site-system/rules/shell/html.js +341 -0
- package/dist/site-system/rules/shell/html.js.map +1 -0
- package/dist/site-system/rules/shell/index.d.ts +18 -0
- package/dist/site-system/rules/shell/index.d.ts.map +1 -0
- package/dist/site-system/rules/shell/index.js +65 -0
- package/dist/site-system/rules/shell/index.js.map +1 -0
- package/dist/site-system/rules/shell/licence.d.ts +4 -0
- package/dist/site-system/rules/shell/licence.d.ts.map +1 -0
- package/dist/site-system/rules/shell/licence.js +60 -0
- package/dist/site-system/rules/shell/licence.js.map +1 -0
- package/dist/site-system/rules/shell/location-wording.d.ts +13 -0
- package/dist/site-system/rules/shell/location-wording.d.ts.map +1 -0
- package/dist/site-system/rules/shell/location-wording.js +15 -0
- package/dist/site-system/rules/shell/location-wording.js.map +1 -0
- package/dist/site-system/rules/shell/navigation.d.ts +5 -0
- package/dist/site-system/rules/shell/navigation.d.ts.map +1 -0
- package/dist/site-system/rules/shell/navigation.js +272 -0
- package/dist/site-system/rules/shell/navigation.js.map +1 -0
- package/dist/site-system/rules/shell/overlays.d.ts +4 -0
- package/dist/site-system/rules/shell/overlays.d.ts.map +1 -0
- package/dist/site-system/rules/shell/overlays.js +93 -0
- package/dist/site-system/rules/shell/overlays.js.map +1 -0
- package/dist/site-system/rules/shell/page.d.ts +51 -0
- package/dist/site-system/rules/shell/page.d.ts.map +1 -0
- package/dist/site-system/rules/shell/page.js +256 -0
- package/dist/site-system/rules/shell/page.js.map +1 -0
- package/dist/site-system/rules/shell/phone.d.ts +13 -0
- package/dist/site-system/rules/shell/phone.d.ts.map +1 -0
- package/dist/site-system/rules/shell/phone.js +99 -0
- package/dist/site-system/rules/shell/phone.js.map +1 -0
- package/dist/site-system/rules/shell/proof-numbers.d.ts +7 -0
- package/dist/site-system/rules/shell/proof-numbers.d.ts.map +1 -0
- package/dist/site-system/rules/shell/proof-numbers.js +81 -0
- package/dist/site-system/rules/shell/proof-numbers.js.map +1 -0
- package/dist/site-system/rules/shell/types.d.ts +80 -0
- package/dist/site-system/rules/shell/types.d.ts.map +1 -0
- package/dist/site-system/rules/shell/types.js +17 -0
- package/dist/site-system/rules/shell/types.js.map +1 -0
- package/dist/site-system/runners.d.ts +37 -0
- package/dist/site-system/runners.d.ts.map +1 -0
- package/dist/site-system/runners.js +48 -0
- package/dist/site-system/runners.js.map +1 -0
- package/dist/site-system/samples.d.ts +43 -0
- package/dist/site-system/samples.d.ts.map +1 -0
- package/dist/site-system/samples.js +99 -0
- package/dist/site-system/samples.js.map +1 -0
- package/dist/site-system/steps.d.ts +66 -0
- package/dist/site-system/steps.d.ts.map +1 -0
- package/dist/site-system/steps.js +45 -0
- package/dist/site-system/steps.js.map +1 -0
- package/dist/site-system/streamed-html.d.ts +9 -0
- package/dist/site-system/streamed-html.d.ts.map +1 -0
- package/dist/site-system/streamed-html.js +43 -0
- package/dist/site-system/streamed-html.js.map +1 -0
- package/dist/site-system-e2e.d.ts +6 -0
- package/dist/site-system-e2e.d.ts.map +1 -0
- package/dist/site-system-e2e.js +54 -0
- package/dist/site-system-e2e.js.map +1 -0
- package/package.json +22 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/site-system/steps.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAOjD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,sHAAsH,EAAE;IAC7I,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,6GAA6G,EAAE;IACtI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,2LAA2L,EAAE;IAClN,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,uFAAuF,EAAE;IAC9G,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,4FAA4F,EAAE;IACnH,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,sDAAsD,EAAE;IAC7E,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,oCAAoC,EAAE;IAC3D,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,0FAA0F,EAAE;IACjH,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,0FAA0F,EAAE;IACjH,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,mIAAmI,EAAE;IAC1J,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,mFAAmF,EAAE;CAC/D,CAAC;AAE/C,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,wEAAwE,EAAE;IACvG,EAAE,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,qHAAqH,EAAE;IAC1J,EAAE,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,+HAA+H,EAAE;IACnK,EAAE,EAAE,EAAE,sBAAsB,EAAE,OAAO,EAAE,kFAAkF,EAAE;IAC3H,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,0FAA0F,EAAE;IAC3H,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,gFAAgF,EAAE;CAClE,CAAC;AAQ/C,8FAA8F;AAC9F,MAAM,CAAC,MAAM,8BAA8B,GAAsB,kBAAkB;KAChF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;KAC1C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAE5B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,8BAA8B,CAAC,CAAC,CAAC;AAC5H,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,uBAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAElF,oGAAoG;AACpG,MAAM,UAAU,oBAAoB,CAAC,EAAU;IAC7C,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAAE,OAAO,QAAQ,CAAC;IACxC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QAAE,OAAO,OAAO,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["/**\n * The launch-day agent steps (§13.3) and the time-boxed human steps (§13.6) the ready report lists.\n *\n * Each is recorded with `brandlab-ready record <id> --evidence <ref>`: launch-day steps, and the registry's\n * `record` checks (K10, X1), go to docs/ready/launch.json; human steps go to docs/ready/human.json. A site is\n * launch-ready only when every step is recorded; a default run reports missing steps without failing, and\n * `brandlab-ready --launch` fails until they are all recorded.\n */\nimport { SITE_SYSTEM_CHECKS } from \"./checks.js\";\n\nexport interface SiteSystemStep {\n readonly id: string;\n readonly summary: string;\n}\n\nexport const SITE_SYSTEM_LAUNCH_STEPS = [\n { id: \"T2\", summary: \"The Business Profile matches the site: name, phone, primary category, services, service area, hours and description.\" },\n { id: \"T3-R\", summary: \"Each licence checked on the NSW register within 30 days and not expired (warning inside 60 days of expiry).\" },\n { id: \"C6\", summary: \"Launch proof: a delivered test enquiry with a photo, the contact_form hit, a test phone tap and the next-day GA4 read; the owner saw it; the test marker kept every hit out of reporting.\" },\n { id: \"X3\", summary: \"The Codex second opinion (codex review --base main); real findings fixed or answered.\" },\n { id: \"X4\", summary: \"Production environment variable names present (values never read) and the domain resolves.\" },\n { id: \"X5\", summary: \"Rollback recorded and the cutover inside the window.\" },\n { id: \"X6\", summary: \"The legacy security sweep is done.\" },\n { id: \"X7\", summary: \"Ads final URLs and the Business Profile's tagged website URL mapped and handed to Codex.\" },\n { id: \"X8\", summary: \"No sentence shared with a related or same-trade client's site, library strings included.\" },\n { id: \"X9\", summary: \"DNS diff before and after cutover (MX, SPF, DKIM, DMARC, verification TXT) and a test email into and out of the client's mailbox.\" },\n { id: \"X10\", summary: \"The sending domain is verified in Resend with SPF and DKIM, and DMARC is present.\" },\n] as const satisfies readonly SiteSystemStep[];\n\nexport const SITE_SYSTEM_HUMAN_STEPS = [\n { id: \"truth-pass\", summary: \"Truth pass (the builder, 30 to 60 min): the claims and evidence table.\" },\n { id: \"trust-carry-over\", summary: \"Trust carry-over (the builder, 20 min): every old badge, claim, price and review block kept, or held with a reason.\" },\n { id: \"usefulness-read\", summary: \"Head-page usefulness test and 5-page side-by-side read per family (the builder, 20 min per family): pass, or the pages fixed.\" },\n { id: \"codex-second-opinion\", summary: \"Codex second opinion (one run, one fix round): findings, then fixed or answered.\" },\n { id: \"launch-proof\", summary: \"Launch proof (the builder, 10 min): the delivered email timestamp and the captured hits.\" },\n { id: \"look-pick\", summary: \"Look pick and side-by-side packs (Romie, one reply each): A, B, yes or a note.\" },\n] as const satisfies readonly SiteSystemStep[];\n\nexport type SiteSystemLaunchStepId = (typeof SITE_SYSTEM_LAUNCH_STEPS)[number][\"id\"];\nexport type SiteSystemHumanStepId = (typeof SITE_SYSTEM_HUMAN_STEPS)[number][\"id\"];\n\n/** `launch` is docs/ready/launch.json, `human` is docs/ready/human.json. */\nexport type SiteSystemRecordFile = \"launch\" | \"human\";\n\n/** Registry checks that are recorded rather than run (K10 harness parity, X1 legacy URLs). */\nexport const SITE_SYSTEM_RECORDED_CHECK_IDS: readonly string[] = SITE_SYSTEM_CHECKS\n .filter((check) => check.kind === \"record\")\n .map((check) => check.id);\n\nconst LAUNCH_IDS = new Set<string>([...SITE_SYSTEM_LAUNCH_STEPS.map((step) => step.id), ...SITE_SYSTEM_RECORDED_CHECK_IDS]);\nconst HUMAN_IDS = new Set<string>(SITE_SYSTEM_HUMAN_STEPS.map((step) => step.id));\n\n/** The records file an id is recorded in, or null when the id is not a step or a recorded check. */\nexport function siteSystemRecordFile(id: string): SiteSystemRecordFile | null {\n if (LAUNCH_IDS.has(id)) return \"launch\";\n if (HUMAN_IDS.has(id)) return \"human\";\n return null;\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The HTML as a browser shows it once React's streamed segments are in place: each `<div hidden id="S:n">` segment
|
|
3
|
+
* replaces its `<template id="B:n">` placeholder and the fallback after it (up to `<!--/$-->`), and the hidden segment
|
|
4
|
+
* is dropped. Next streams any page with a Suspense boundary this way, so without this every rendered rule would read
|
|
5
|
+
* such a page as its fallback ("Loading..."). The ready gate's page loader resolves every page once, before any
|
|
6
|
+
* runner sees it. A segment may hold further segments' placeholders; nesting resolves in later rounds.
|
|
7
|
+
*/
|
|
8
|
+
export declare function resolveStreamedHtml(html: string): string;
|
|
9
|
+
//# sourceMappingURL=streamed-html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamed-html.d.ts","sourceRoot":"","sources":["../../src/site-system/streamed-html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA8BxD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The HTML as a browser shows it once React's streamed segments are in place: each `<div hidden id="S:n">` segment
|
|
3
|
+
* replaces its `<template id="B:n">` placeholder and the fallback after it (up to `<!--/$-->`), and the hidden segment
|
|
4
|
+
* is dropped. Next streams any page with a Suspense boundary this way, so without this every rendered rule would read
|
|
5
|
+
* such a page as its fallback ("Loading..."). The ready gate's page loader resolves every page once, before any
|
|
6
|
+
* runner sees it. A segment may hold further segments' placeholders; nesting resolves in later rounds.
|
|
7
|
+
*/
|
|
8
|
+
export function resolveStreamedHtml(html) {
|
|
9
|
+
let result = html;
|
|
10
|
+
for (let round = 0; round < 50; round += 1) {
|
|
11
|
+
const open = /<div hidden(?:="")? id="S:([0-9a-z]+)"\s*>/i.exec(result);
|
|
12
|
+
if (!open)
|
|
13
|
+
break;
|
|
14
|
+
const id = open[1];
|
|
15
|
+
const tokens = /<script\b[\s\S]*?<\/script\s*>|<div\b[^>]*>|<\/div\s*>/gi;
|
|
16
|
+
tokens.lastIndex = open.index + open[0].length;
|
|
17
|
+
let depth = 1;
|
|
18
|
+
let end = -1;
|
|
19
|
+
let close = 0;
|
|
20
|
+
for (let token = tokens.exec(result); token; token = tokens.exec(result)) {
|
|
21
|
+
if (/^<script/i.test(token[0]))
|
|
22
|
+
continue;
|
|
23
|
+
depth += token[0].startsWith("</") ? -1 : 1;
|
|
24
|
+
if (depth === 0) {
|
|
25
|
+
end = token.index;
|
|
26
|
+
close = token.index + token[0].length;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (end === -1)
|
|
31
|
+
break;
|
|
32
|
+
const content = result.slice(open.index + open[0].length, end);
|
|
33
|
+
result = result.slice(0, open.index) + result.slice(close);
|
|
34
|
+
const placeholder = new RegExp(`<template id="B:${id}"></template>`).exec(result);
|
|
35
|
+
if (!placeholder)
|
|
36
|
+
continue;
|
|
37
|
+
const fallbackEnd = result.indexOf("<!--/$-->", placeholder.index);
|
|
38
|
+
const stop = fallbackEnd === -1 ? placeholder.index + placeholder[0].length : fallbackEnd;
|
|
39
|
+
result = result.slice(0, placeholder.index) + content + result.slice(stop);
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=streamed-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamed-html.js","sourceRoot":"","sources":["../../src/site-system/streamed-html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,6CAA6C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI;YAAE,MAAM;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACpB,MAAM,MAAM,GAAG,0DAA0D,CAAC;QAC1E,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACzE,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAE,SAAS;YACzC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;gBAClB,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACtC,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,MAAM;QACtB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClF,IAAI,CAAC,WAAW;YAAE,SAAS;QAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;QAC1F,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/**\n * The HTML as a browser shows it once React's streamed segments are in place: each `<div hidden id=\"S:n\">` segment\n * replaces its `<template id=\"B:n\">` placeholder and the fallback after it (up to `<!--/$-->`), and the hidden segment\n * is dropped. Next streams any page with a Suspense boundary this way, so without this every rendered rule would read\n * such a page as its fallback (\"Loading...\"). The ready gate's page loader resolves every page once, before any\n * runner sees it. A segment may hold further segments' placeholders; nesting resolves in later rounds.\n */\nexport function resolveStreamedHtml(html: string): string {\n let result = html;\n for (let round = 0; round < 50; round += 1) {\n const open = /<div hidden(?:=\"\")? id=\"S:([0-9a-z]+)\"\\s*>/i.exec(result);\n if (!open) break;\n const id = open[1]!;\n const tokens = /<script\\b[\\s\\S]*?<\\/script\\s*>|<div\\b[^>]*>|<\\/div\\s*>/gi;\n tokens.lastIndex = open.index + open[0].length;\n let depth = 1;\n let end = -1;\n let close = 0;\n for (let token = tokens.exec(result); token; token = tokens.exec(result)) {\n if (/^<script/i.test(token[0])) continue;\n depth += token[0].startsWith(\"</\") ? -1 : 1;\n if (depth === 0) {\n end = token.index;\n close = token.index + token[0].length;\n break;\n }\n }\n if (end === -1) break;\n const content = result.slice(open.index + open[0].length, end);\n result = result.slice(0, open.index) + result.slice(close);\n const placeholder = new RegExp(`<template id=\"B:${id}\"></template>`).exec(result);\n if (!placeholder) continue;\n const fallbackEnd = result.indexOf(\"<!--/$-->\", placeholder.index);\n const stop = fallbackEnd === -1 ? placeholder.index + placeholder[0].length : fallbackEnd;\n result = result.slice(0, placeholder.index) + content + result.slice(stop);\n }\n return result;\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type BrandlabSiteSystemTestOptions } from './site-system/journeys/plan.js';
|
|
2
|
+
export { SITE_SYSTEM_DESKTOP_VIEWPORT, SITE_SYSTEM_DESKTOP_WIDTHS, SITE_SYSTEM_JOURNEY_IDS, SITE_SYSTEM_PHONE_VIEWPORT, SITE_SYSTEM_QUOTE_NAME, planBrandlabSiteSystemJourneys, siteSystemJourneyTitle, siteSystemJourneysFor, type BrandlabSiteSystemTestOptions, type SiteSystemActionOrder, type SiteSystemJourneyId, type SiteSystemJourneyPlan, } from './site-system/journeys/plan.js';
|
|
3
|
+
export { HOVER_OPEN_WINDOW_MS, MOUSE_OUT_CLOSE_WINDOW_MS } from './site-system/journeys/menu.js';
|
|
4
|
+
export { SITE_SYSTEM_PHONE_PLACEMENTS } from './site-system/journeys/page-helpers.js';
|
|
5
|
+
export declare function defineBrandlabSiteSystemTests(options: BrandlabSiteSystemTestOptions): void;
|
|
6
|
+
//# sourceMappingURL=site-system-e2e.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-system-e2e.d.ts","sourceRoot":"","sources":["../src/site-system-e2e.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAkC,KAAK,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAGpH,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,GAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAItF,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,6BAA6B,GAAG,IAAI,CAqB1F"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Site System v2 browser journeys for a Brandlab production build (release 3.8.0): the header and its menu,
|
|
3
|
+
* the phone drawer and call bar, contrast, targets, focus, the action order, the money-page first screen and phone
|
|
4
|
+
* placements. Every test title starts with its ready-gate check id in square brackets ("[N3] ...") so
|
|
5
|
+
* `brandlab-ready` can read the Playwright JSON report.
|
|
6
|
+
*
|
|
7
|
+
* // tests/e2e/site-system.spec.ts
|
|
8
|
+
* import { defineBrandlabSiteSystemTests } from '@brandlab-digital/conformance/site-system-e2e'
|
|
9
|
+
*
|
|
10
|
+
* defineBrandlabSiteSystemTests({
|
|
11
|
+
* tier: 'enquiry',
|
|
12
|
+
* pages: { home: '/', money: ['/services/blocked-drains'], contact: '/contact' },
|
|
13
|
+
* })
|
|
14
|
+
*
|
|
15
|
+
* The journeys find the header parts by role, so they test a bespoke header and the shared one alike: the header is
|
|
16
|
+
* the banner landmark, the menu the navigation named "Main", each submenu a `button[aria-expanded][aria-controls]`
|
|
17
|
+
* and its panel the element that names. The tier decides which journeys register (C1 from `enquiry`). They run in
|
|
18
|
+
* Chromium; K5 (focus not hidden) runs in every browser project the site's Playwright config defines, so add a
|
|
19
|
+
* WebKit project to cover Safari. axe comes from `@axe-core/playwright` when the site has it, else `axe-core`.
|
|
20
|
+
* Every request leaves the browser only as a GET or HEAD to the build under test.
|
|
21
|
+
*/
|
|
22
|
+
import { test } from '@playwright/test';
|
|
23
|
+
import { isolateFromNetwork } from './e2e-support.js';
|
|
24
|
+
import { defineAccessJourneys } from './site-system/journeys/access.js';
|
|
25
|
+
import { installPageHelpers } from './site-system/journeys/browser.js';
|
|
26
|
+
import { defineConversionJourneys } from './site-system/journeys/conversion.js';
|
|
27
|
+
import { defineMenuJourneys } from './site-system/journeys/menu.js';
|
|
28
|
+
import { planBrandlabSiteSystemJourneys } from './site-system/journeys/plan.js';
|
|
29
|
+
import { defineShellJourneys } from './site-system/journeys/shell.js';
|
|
30
|
+
export { SITE_SYSTEM_DESKTOP_VIEWPORT, SITE_SYSTEM_DESKTOP_WIDTHS, SITE_SYSTEM_JOURNEY_IDS, SITE_SYSTEM_PHONE_VIEWPORT, SITE_SYSTEM_QUOTE_NAME, planBrandlabSiteSystemJourneys, siteSystemJourneyTitle, siteSystemJourneysFor, } from './site-system/journeys/plan.js';
|
|
31
|
+
export { HOVER_OPEN_WINDOW_MS, MOUSE_OUT_CLOSE_WINDOW_MS } from './site-system/journeys/menu.js';
|
|
32
|
+
export { SITE_SYSTEM_PHONE_PLACEMENTS } from './site-system/journeys/page-helpers.js';
|
|
33
|
+
const CHROMIUM_ONLY = 'The site-system journeys run in Chromium; K5 runs in every browser project.';
|
|
34
|
+
export function defineBrandlabSiteSystemTests(options) {
|
|
35
|
+
const plan = planBrandlabSiteSystemJourneys(options);
|
|
36
|
+
const runs = new Set(plan.journeys);
|
|
37
|
+
const chromiumOnly = () => test.skip(({ browserName }) => browserName !== 'chromium', CHROMIUM_ONLY);
|
|
38
|
+
test.describe('Brandlab site system', () => {
|
|
39
|
+
// Service workers could answer requests outside page and context routing.
|
|
40
|
+
test.use({ serviceWorkers: 'block' });
|
|
41
|
+
test.beforeEach(async ({ page, baseURL }) => {
|
|
42
|
+
await isolateFromNetwork(page, { baseURL, googleTag: 'stub' });
|
|
43
|
+
await installPageHelpers(page);
|
|
44
|
+
});
|
|
45
|
+
test.describe('Chromium journeys', () => {
|
|
46
|
+
chromiumOnly();
|
|
47
|
+
defineMenuJourneys(plan, runs);
|
|
48
|
+
defineShellJourneys(plan, runs);
|
|
49
|
+
defineConversionJourneys(plan, runs);
|
|
50
|
+
});
|
|
51
|
+
defineAccessJourneys(plan, runs, { chromiumOnly });
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=site-system-e2e.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-system-e2e.js","sourceRoot":"","sources":["../src/site-system-e2e.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,8BAA8B,EAAsC,MAAM,gCAAgC,CAAC;AACpH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,GAKtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAEtF,MAAM,aAAa,GAAG,6EAA6E,CAAC;AAEpG,MAAM,UAAU,6BAA6B,CAAC,OAAsC;IAClF,MAAM,IAAI,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,UAAU,EAAE,aAAa,CAAC,CAAC;IAErG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACzC,0EAA0E;QAC1E,IAAI,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;YAC1C,MAAM,kBAAkB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/D,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YACtC,YAAY,EAAE,CAAC;YACf,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/B,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChC,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/**\n * The Site System v2 browser journeys for a Brandlab production build (release 3.8.0): the header and its menu,\n * the phone drawer and call bar, contrast, targets, focus, the action order, the money-page first screen and phone\n * placements. Every test title starts with its ready-gate check id in square brackets (\"[N3] ...\") so\n * `brandlab-ready` can read the Playwright JSON report.\n *\n * // tests/e2e/site-system.spec.ts\n * import { defineBrandlabSiteSystemTests } from '@brandlab-digital/conformance/site-system-e2e'\n *\n * defineBrandlabSiteSystemTests({\n * tier: 'enquiry',\n * pages: { home: '/', money: ['/services/blocked-drains'], contact: '/contact' },\n * })\n *\n * The journeys find the header parts by role, so they test a bespoke header and the shared one alike: the header is\n * the banner landmark, the menu the navigation named \"Main\", each submenu a `button[aria-expanded][aria-controls]`\n * and its panel the element that names. The tier decides which journeys register (C1 from `enquiry`). They run in\n * Chromium; K5 (focus not hidden) runs in every browser project the site's Playwright config defines, so add a\n * WebKit project to cover Safari. axe comes from `@axe-core/playwright` when the site has it, else `axe-core`.\n * Every request leaves the browser only as a GET or HEAD to the build under test.\n */\nimport { test } from '@playwright/test';\nimport { isolateFromNetwork } from './e2e-support.js';\nimport { defineAccessJourneys } from './site-system/journeys/access.js';\nimport { installPageHelpers } from './site-system/journeys/browser.js';\nimport { defineConversionJourneys } from './site-system/journeys/conversion.js';\nimport { defineMenuJourneys } from './site-system/journeys/menu.js';\nimport { planBrandlabSiteSystemJourneys, type BrandlabSiteSystemTestOptions } from './site-system/journeys/plan.js';\nimport { defineShellJourneys } from './site-system/journeys/shell.js';\n\nexport {\n SITE_SYSTEM_DESKTOP_VIEWPORT,\n SITE_SYSTEM_DESKTOP_WIDTHS,\n SITE_SYSTEM_JOURNEY_IDS,\n SITE_SYSTEM_PHONE_VIEWPORT,\n SITE_SYSTEM_QUOTE_NAME,\n planBrandlabSiteSystemJourneys,\n siteSystemJourneyTitle,\n siteSystemJourneysFor,\n type BrandlabSiteSystemTestOptions,\n type SiteSystemActionOrder,\n type SiteSystemJourneyId,\n type SiteSystemJourneyPlan,\n} from './site-system/journeys/plan.js';\nexport { HOVER_OPEN_WINDOW_MS, MOUSE_OUT_CLOSE_WINDOW_MS } from './site-system/journeys/menu.js';\nexport { SITE_SYSTEM_PHONE_PLACEMENTS } from './site-system/journeys/page-helpers.js';\n\nconst CHROMIUM_ONLY = 'The site-system journeys run in Chromium; K5 runs in every browser project.';\n\nexport function defineBrandlabSiteSystemTests(options: BrandlabSiteSystemTestOptions): void {\n const plan = planBrandlabSiteSystemJourneys(options);\n const runs = new Set<string>(plan.journeys);\n const chromiumOnly = () => test.skip(({ browserName }) => browserName !== 'chromium', CHROMIUM_ONLY);\n\n test.describe('Brandlab site system', () => {\n // Service workers could answer requests outside page and context routing.\n test.use({ serviceWorkers: 'block' });\n test.beforeEach(async ({ page, baseURL }) => {\n await isolateFromNetwork(page, { baseURL, googleTag: 'stub' });\n await installPageHelpers(page);\n });\n\n test.describe('Chromium journeys', () => {\n chromiumOnly();\n defineMenuJourneys(plan, runs);\n defineShellJourneys(plan, runs);\n defineConversionJourneys(plan, runs);\n });\n defineAccessJourneys(plan, runs, { chromiumOnly });\n });\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brandlab-digital/conformance",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.8.0",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
"sideEffects": false,
|
|
13
13
|
"bin": {
|
|
14
14
|
"brandlab-verify": "dist/cli.js",
|
|
15
|
-
"brandlab-area-map": "dist/area-map-cli.js"
|
|
15
|
+
"brandlab-area-map": "dist/area-map-cli.js",
|
|
16
|
+
"brandlab-ready": "dist/ready-cli.js"
|
|
16
17
|
},
|
|
17
18
|
"files": [
|
|
18
19
|
"dist"
|
|
@@ -21,17 +22,19 @@
|
|
|
21
22
|
"access": "public"
|
|
22
23
|
},
|
|
23
24
|
"scripts": {
|
|
24
|
-
"build": "rm -rf dist && tsc -p tsconfig.json && chmod +x dist/cli.js dist/area-map-cli.js",
|
|
25
|
+
"build": "rm -rf dist && tsc -p tsconfig.json && chmod +x dist/cli.js dist/area-map-cli.js dist/ready-cli.js",
|
|
25
26
|
"test": "vitest run",
|
|
26
27
|
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
27
28
|
},
|
|
28
29
|
"dependencies": {
|
|
29
|
-
"@brandlab-digital/site-core": "3.
|
|
30
|
+
"@brandlab-digital/site-core": "3.8.0",
|
|
30
31
|
"typescript": "6.0.3"
|
|
31
32
|
},
|
|
32
33
|
"peerDependencies": {
|
|
33
34
|
"@playwright/test": ">=1.63.0",
|
|
34
|
-
"knip": ">=6.38.0"
|
|
35
|
+
"knip": ">=6.38.0",
|
|
36
|
+
"@axe-core/playwright": ">=4.10.0",
|
|
37
|
+
"axe-core": ">=4.10.0"
|
|
35
38
|
},
|
|
36
39
|
"peerDependenciesMeta": {
|
|
37
40
|
"@playwright/test": {
|
|
@@ -39,6 +42,12 @@
|
|
|
39
42
|
},
|
|
40
43
|
"knip": {
|
|
41
44
|
"optional": true
|
|
45
|
+
},
|
|
46
|
+
"@axe-core/playwright": {
|
|
47
|
+
"optional": true
|
|
48
|
+
},
|
|
49
|
+
"axe-core": {
|
|
50
|
+
"optional": true
|
|
42
51
|
}
|
|
43
52
|
},
|
|
44
53
|
"exports": {
|
|
@@ -81,6 +90,14 @@
|
|
|
81
90
|
"./families-e2e": {
|
|
82
91
|
"types": "./dist/families-e2e.d.ts",
|
|
83
92
|
"import": "./dist/families-e2e.js"
|
|
93
|
+
},
|
|
94
|
+
"./site-system": {
|
|
95
|
+
"types": "./dist/site-system/index.d.ts",
|
|
96
|
+
"import": "./dist/site-system/index.js"
|
|
97
|
+
},
|
|
98
|
+
"./site-system-e2e": {
|
|
99
|
+
"types": "./dist/site-system-e2e.d.ts",
|
|
100
|
+
"import": "./dist/site-system-e2e.js"
|
|
84
101
|
}
|
|
85
102
|
},
|
|
86
103
|
"devDependencies": {
|