open-local-audit 0.77.0 → 0.79.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/CHANGELOG.md +17 -0
- package/README.md +2 -0
- package/dist/dotnet-stack.d.ts +1 -0
- package/dist/dotnet-stack.js +1 -1
- package/dist/dotnet-stack.js.map +1 -1
- package/dist/local-business-types.d.ts +17 -0
- package/dist/local-business-types.js +324 -0
- package/dist/local-business-types.js.map +1 -0
- package/dist/pitch-brief.js +2 -0
- package/dist/pitch-brief.js.map +1 -1
- package/dist/rules.js +425 -23
- package/dist/rules.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to Open Local Audit will be documented here.
|
|
4
4
|
|
|
5
|
+
## v0.79.0 - 2026-10-12
|
|
6
|
+
|
|
7
|
+
- Added the `privacy-policy-link-present` audit rule (trust-contact, medium). It flags pages with no link to a privacy policy: a same-site link whose text or path mentions the privacy policy in English, Turkish (including KVKK), German, French, Spanish, or Dutch, a `rel="privacy-policy"` link, or a policy hosted by iubenda, Termly, PrivacyPolicies.com, or FreePrivacyPolicy. Another company's policy, such as Google's reCAPTCHA notice, does not count. The evidence says when the page also has an enquiry form or loads trackers, for example "No privacy policy link found; the page has an enquiry form and loads Google Analytics or Ads".
|
|
8
|
+
- Added the `cookie-consent-present` audit rule (trust-contact, medium). It flags pages that load the Google tag (Google Analytics or Ads), Google Tag Manager, Meta Pixel, Hotjar, Microsoft Clarity, the LinkedIn Insight Tag, the TikTok Pixel, or Microsoft Advertising, or whose response sets tracking cookies such as `_ga` or `_fbp`, with no sign of a consent tool, for example "Google Analytics or Ads, Meta Pixel load with no consent tool found". Scripts held back as `type="text/plain"` do not count as loaded. Known consent platforms, IAB TCF, Google consent mode defaults, website builders' consent code, and cookie banner markup all count as a consent tool; the rule does not test whether the banner is switched on or actually blocks the tags.
|
|
9
|
+
- Added the `html-lang-present` (mobile-usability, low), `form-labels-present` (mobile-usability, low), and `link-text-descriptive` (search-basics, low) audit rules. They flag an `<html>` element without a valid `lang` code, visible form fields with no label, `aria-label`, `aria-labelledby` text, `title`, or `placeholder` (fields under `aria-hidden`, such as the Mailchimp spam trap, are skipped), and visible links whose only text is generic, such as "Read more", "Click here", "Devamını oku", or "Mehr erfahren", listing up to five fields or links as evidence.
|
|
10
|
+
- Pitch briefs (`shortlist --pitch-brief`) now explain cookie consent and privacy policy findings in plain language, ranked after broken links and before search basics such as a missing title.
|
|
11
|
+
- The new rules can lower trust-contact, mobile-usability, and search-basics scores, so `compare` shows them as new issues against reports from earlier versions.
|
|
12
|
+
- `localbusiness-schema-contact-fields` applies the `@context` scoped to the `openingHoursSpecification` term when it resolves an hours reference such as `{"@id": "h:weekly"}`, so a business whose hours prefix is defined there no longer gets a false missing-fields finding.
|
|
13
|
+
- `localbusiness-schema-nap-consistency` reads the telephone and street address from every JSON-LD node that shares the business's `@id`, as the contact-fields rule does, so a mismatching phone or address on a separate fragment is now reported.
|
|
14
|
+
- `website-placeholder` matches the page title and visible text separately, so "Site is temporarily offline." after an unpunctuated title is detected, and it ignores conditional copy such as "If our site is offline, call us".
|
|
15
|
+
|
|
16
|
+
## v0.78.0 - 2026-10-11
|
|
17
|
+
|
|
18
|
+
- The `localbusiness-schema-present`, `localbusiness-schema-contact-fields`, and `localbusiness-schema-nap-consistency` rules now recognise schema.org LocalBusiness subtypes such as `Dentist`, `Attorney`, `MedicalClinic`, `Ophthalmology`, `Restaurant`, and `Plumber` (every LocalBusiness descendant in schema.org 30.1). Types are expanded through the page's JSON-LD `@context` (`@vocab`, including a compact `@vocab`, prefixes with JSON-LD 1.1 prefix rules, term definitions, including ones that take their IRI from `@vocab`, `null` resets, and `@propagate`), so `Dentist` under the schema.org context, `schema:Dentist`, and `https://schema.org/Dentist` match, while types that expand to another vocabulary do not. Pages without any `@context` still read bare and `schema:` types as schema.org types. Pages that use only a subtype no longer get a false "LocalBusiness structured data is missing" finding, and their schema telephone, address, and opening hours are now checked.
|
|
19
|
+
- `localbusiness-schema-contact-fields` accepts `openingHoursSpecification` (one object or a list, each with a non-empty `dayOfWeek`, `opens`, or `closes` value, or an `@id` reference to one in the page's JSON-LD, including `@included` and embedded nodes, with compact `@id` values expanded through the context, relative ones resolved against the context `@base` or the page URL, and blank node labels kept local to their script block) and a list of `openingHours` strings as opening hours. It also reads telephone, address, and opening hours from every JSON-LD node that shares the business's `@id`.
|
|
20
|
+
- These changes can remove `localbusiness-schema-present` findings and add contact-field or NAP findings on pages with subtype schema, so `compare` against earlier reports may show them as fixed or new.
|
|
21
|
+
|
|
5
22
|
## v0.77.0 - 2026-10-10
|
|
6
23
|
|
|
7
24
|
- Discovery now flags leads that look like a chain branch or public body, such as `mydentist.co.uk` branch pages, Rodericks practice pages, and `nhs.uk` listings: a public-sector website domain, a website host shared by two or more differently named leads in the same search, or a branch page URL with two or more path segments. Social, link-in-bio, directory, site-builder, and booking-platform pages such as `facebook.com`, `linktr.ee`, `sites.google.com`, Treatwell, and Fresha are never treated as chains. Flagged leads stay in the export with the reason in `opportunityReasons` and a new standard CSV `chainReason` column, low priority, an opportunity score of at most 20, and a "Skip unless you are targeting the head office" next action. This applies to every discovery source; the CRM preset is unchanged.
|
package/README.md
CHANGED
|
@@ -484,6 +484,8 @@ The first implementation milestone is a CLI that accepts one URL and outputs:
|
|
|
484
484
|
- Clear owner-readable recommendations.
|
|
485
485
|
- Structured-data quality, address, opening-hours, service-location, CTA, and placeholder-copy checks.
|
|
486
486
|
- Trust and conversion checks for current date signals, review cues, service detail depth, brand icons, and placeholder social links.
|
|
487
|
+
- Privacy and consent checks for a privacy policy link and for trackers that load without a cookie consent tool.
|
|
488
|
+
- Accessibility checks for the page language, form field labels, and descriptive link text.
|
|
487
489
|
|
|
488
490
|
Example target command:
|
|
489
491
|
|
package/dist/dotnet-stack.d.ts
CHANGED
package/dist/dotnet-stack.js
CHANGED
|
@@ -7,7 +7,7 @@ function lowerCaseHeaders(headers) {
|
|
|
7
7
|
return Object.fromEntries(Object.entries(headers).map(([key, value]) => [key.toLowerCase(), value]));
|
|
8
8
|
}
|
|
9
9
|
// Set-Cookie values may be joined by newlines or commas; only the cookie names are kept.
|
|
10
|
-
function cookieNames(setCookie) {
|
|
10
|
+
export function cookieNames(setCookie) {
|
|
11
11
|
if (!setCookie) {
|
|
12
12
|
return [];
|
|
13
13
|
}
|
package/dist/dotnet-stack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dotnet-stack.js","sourceRoot":"","sources":["../src/dotnet-stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACjI,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,CAAC;AACpF,MAAM,gBAAgB,GAAG,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;AACnE,MAAM,aAAa,GAAG,CAAC,eAAe,EAAE,kBAAkB,EAAE,uBAAuB,CAAC,CAAC;AAErF,SAAS,gBAAgB,CAAC,OAA+B;IACvD,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACvG,CAAC;AAED,yFAAyF;AACzF,
|
|
1
|
+
{"version":3,"file":"dotnet-stack.js","sourceRoot":"","sources":["../src/dotnet-stack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type TermDefinition = {
|
|
2
|
+
iri: string | null;
|
|
3
|
+
prefix: boolean;
|
|
4
|
+
scopedContext?: unknown;
|
|
5
|
+
};
|
|
6
|
+
export type JsonLdTypeContext = {
|
|
7
|
+
declared: boolean;
|
|
8
|
+
vocab: string | null;
|
|
9
|
+
terms: Map<string, TermDefinition>;
|
|
10
|
+
bases: readonly (string | null)[];
|
|
11
|
+
};
|
|
12
|
+
export declare const noTypeContext: JsonLdTypeContext;
|
|
13
|
+
export declare function applyTypeContext(active: JsonLdTypeContext, context: unknown): JsonLdTypeContext;
|
|
14
|
+
export declare function contextBase(documentBase: string, context: JsonLdTypeContext): string | null;
|
|
15
|
+
export declare function expandNodeId(value: string, context: JsonLdTypeContext): string;
|
|
16
|
+
export declare function isLocalBusinessType(type: string, context?: JsonLdTypeContext): boolean;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
// schema.org LocalBusiness and all its descendants as of schema.org 30.1, including the health-lifesci
|
|
2
|
+
// MedicalBusiness specialties, so pages typed as Dentist, Attorney, Restaurant, or Plumber count as
|
|
3
|
+
// local business structured data.
|
|
4
|
+
const localBusinessTypes = new Set([
|
|
5
|
+
"LocalBusiness",
|
|
6
|
+
"AnimalShelter",
|
|
7
|
+
"ArchiveOrganization",
|
|
8
|
+
"AutomotiveBusiness",
|
|
9
|
+
"AutoBodyShop",
|
|
10
|
+
"AutoDealer",
|
|
11
|
+
"AutoPartsStore",
|
|
12
|
+
"AutoRental",
|
|
13
|
+
"AutoRepair",
|
|
14
|
+
"AutoWash",
|
|
15
|
+
"GasStation",
|
|
16
|
+
"MotorcycleDealer",
|
|
17
|
+
"MotorcycleRepair",
|
|
18
|
+
"ChildCare",
|
|
19
|
+
"Dentist",
|
|
20
|
+
"DryCleaningOrLaundry",
|
|
21
|
+
"EmergencyService",
|
|
22
|
+
"FireStation",
|
|
23
|
+
"Hospital",
|
|
24
|
+
"PoliceStation",
|
|
25
|
+
"EmploymentAgency",
|
|
26
|
+
"EntertainmentBusiness",
|
|
27
|
+
"AdultEntertainment",
|
|
28
|
+
"AmusementPark",
|
|
29
|
+
"ArtGallery",
|
|
30
|
+
"Casino",
|
|
31
|
+
"ComedyClub",
|
|
32
|
+
"MovieTheater",
|
|
33
|
+
"NightClub",
|
|
34
|
+
"FinancialService",
|
|
35
|
+
"AccountingService",
|
|
36
|
+
"AutomatedTeller",
|
|
37
|
+
"BankOrCreditUnion",
|
|
38
|
+
"InsuranceAgency",
|
|
39
|
+
"FoodEstablishment",
|
|
40
|
+
"Bakery",
|
|
41
|
+
"BarOrPub",
|
|
42
|
+
"Brewery",
|
|
43
|
+
"CafeOrCoffeeShop",
|
|
44
|
+
"Distillery",
|
|
45
|
+
"FastFoodRestaurant",
|
|
46
|
+
"IceCreamShop",
|
|
47
|
+
"Restaurant",
|
|
48
|
+
"Winery",
|
|
49
|
+
"GovernmentOffice",
|
|
50
|
+
"PostOffice",
|
|
51
|
+
"HealthAndBeautyBusiness",
|
|
52
|
+
"BeautySalon",
|
|
53
|
+
"DaySpa",
|
|
54
|
+
"HairSalon",
|
|
55
|
+
"HealthClub",
|
|
56
|
+
"NailSalon",
|
|
57
|
+
"TattooParlor",
|
|
58
|
+
"HomeAndConstructionBusiness",
|
|
59
|
+
"Electrician",
|
|
60
|
+
"GeneralContractor",
|
|
61
|
+
"HVACBusiness",
|
|
62
|
+
"HousePainter",
|
|
63
|
+
"Locksmith",
|
|
64
|
+
"MovingCompany",
|
|
65
|
+
"Plumber",
|
|
66
|
+
"RoofingContractor",
|
|
67
|
+
"InternetCafe",
|
|
68
|
+
"LegalService",
|
|
69
|
+
"Attorney",
|
|
70
|
+
"Notary",
|
|
71
|
+
"Library",
|
|
72
|
+
"LodgingBusiness",
|
|
73
|
+
"BedAndBreakfast",
|
|
74
|
+
"Campground",
|
|
75
|
+
"Hostel",
|
|
76
|
+
"Hotel",
|
|
77
|
+
"Motel",
|
|
78
|
+
"Resort",
|
|
79
|
+
"SkiResort",
|
|
80
|
+
"VacationRental",
|
|
81
|
+
"MedicalBusiness",
|
|
82
|
+
"Audiology",
|
|
83
|
+
"CommunityHealth",
|
|
84
|
+
"Dermatology",
|
|
85
|
+
"DietNutrition",
|
|
86
|
+
"Emergency",
|
|
87
|
+
"Geriatric",
|
|
88
|
+
"Gynecologic",
|
|
89
|
+
"MedicalClinic",
|
|
90
|
+
"CovidTestingFacility",
|
|
91
|
+
"Midwifery",
|
|
92
|
+
"Nursing",
|
|
93
|
+
"Obstetric",
|
|
94
|
+
"Oncologic",
|
|
95
|
+
"Ophthalmology",
|
|
96
|
+
"Optician",
|
|
97
|
+
"Optometric",
|
|
98
|
+
"Otolaryngologic",
|
|
99
|
+
"Pediatric",
|
|
100
|
+
"Pharmacy",
|
|
101
|
+
"Physician",
|
|
102
|
+
"IndividualPhysician",
|
|
103
|
+
"PhysiciansOffice",
|
|
104
|
+
"Physiotherapy",
|
|
105
|
+
"PlasticSurgery",
|
|
106
|
+
"Podiatric",
|
|
107
|
+
"PrimaryCare",
|
|
108
|
+
"Psychiatric",
|
|
109
|
+
"PublicHealth",
|
|
110
|
+
"ProfessionalService",
|
|
111
|
+
"RadioStation",
|
|
112
|
+
"RealEstateAgent",
|
|
113
|
+
"RecyclingCenter",
|
|
114
|
+
"SelfStorage",
|
|
115
|
+
"ShoppingCenter",
|
|
116
|
+
"SportsActivityLocation",
|
|
117
|
+
"BowlingAlley",
|
|
118
|
+
"ExerciseGym",
|
|
119
|
+
"GolfCourse",
|
|
120
|
+
"PublicSwimmingPool",
|
|
121
|
+
"SportsClub",
|
|
122
|
+
"StadiumOrArena",
|
|
123
|
+
"TennisComplex",
|
|
124
|
+
"Store",
|
|
125
|
+
"BikeStore",
|
|
126
|
+
"BookStore",
|
|
127
|
+
"ClothingStore",
|
|
128
|
+
"ComputerStore",
|
|
129
|
+
"ConvenienceStore",
|
|
130
|
+
"DepartmentStore",
|
|
131
|
+
"ElectronicsStore",
|
|
132
|
+
"Florist",
|
|
133
|
+
"FurnitureStore",
|
|
134
|
+
"GardenStore",
|
|
135
|
+
"GroceryStore",
|
|
136
|
+
"HardwareStore",
|
|
137
|
+
"HobbyShop",
|
|
138
|
+
"HomeGoodsStore",
|
|
139
|
+
"JewelryStore",
|
|
140
|
+
"LiquorStore",
|
|
141
|
+
"MensClothingStore",
|
|
142
|
+
"MobilePhoneStore",
|
|
143
|
+
"MovieRentalStore",
|
|
144
|
+
"MusicStore",
|
|
145
|
+
"OfficeEquipmentStore",
|
|
146
|
+
"OutletStore",
|
|
147
|
+
"PawnShop",
|
|
148
|
+
"PetStore",
|
|
149
|
+
"ShoeStore",
|
|
150
|
+
"SportingGoodsStore",
|
|
151
|
+
"TireShop",
|
|
152
|
+
"ToyStore",
|
|
153
|
+
"WholesaleStore",
|
|
154
|
+
"TelevisionStation",
|
|
155
|
+
"TouristInformationCenter",
|
|
156
|
+
"TravelAgency"
|
|
157
|
+
]);
|
|
158
|
+
export const noTypeContext = { declared: false, vocab: null, terms: new Map(), bases: [] };
|
|
159
|
+
const schemaOrgRoot = "https://schema.org/";
|
|
160
|
+
const schemaOrgType = /^https?:\/\/(?:www\.)?schema\.org\/([A-Za-z]+)$/;
|
|
161
|
+
// Only an absolute URL names schema.org's context; "schema.org" alone is relative to the page.
|
|
162
|
+
const schemaOrgContext = /^https?:\/\/(?:www\.)?schema\.org(?:\/.*)?$/i;
|
|
163
|
+
const genDelimEnd = /[:/?#[\]@]$/;
|
|
164
|
+
const noLocalTerms = new Map();
|
|
165
|
+
function rawTermDefinition(definition) {
|
|
166
|
+
if (definition === null) {
|
|
167
|
+
return { iri: null, simple: false, prefix: false };
|
|
168
|
+
}
|
|
169
|
+
if (typeof definition === "string") {
|
|
170
|
+
return { iri: definition, simple: true, prefix: false };
|
|
171
|
+
}
|
|
172
|
+
if (definition && typeof definition === "object" && !Array.isArray(definition)) {
|
|
173
|
+
const fields = definition;
|
|
174
|
+
const id = fields["@id"];
|
|
175
|
+
if (id === null || id === undefined || typeof id === "string") {
|
|
176
|
+
return { iri: id, simple: false, prefix: fields["@prefix"] === true, scopedContext: fields["@context"] };
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
// Resolves a term from the local context being processed, whose definitions may depend on each other,
|
|
182
|
+
// or else from the active context. A term already being resolved is a cycle and is treated as undefined.
|
|
183
|
+
function resolveTerm(term, context, local, resolving) {
|
|
184
|
+
const raw = local.get(term);
|
|
185
|
+
if (!raw) {
|
|
186
|
+
return context.terms.get(term);
|
|
187
|
+
}
|
|
188
|
+
if (resolving.has(term)) {
|
|
189
|
+
return undefined;
|
|
190
|
+
}
|
|
191
|
+
const nested = new Set([...resolving, term]);
|
|
192
|
+
// Without @id, a term containing ":" is a compact IRI and any other term is appended to @vocab.
|
|
193
|
+
const iri = raw.iri === null
|
|
194
|
+
? null
|
|
195
|
+
: raw.iri === undefined
|
|
196
|
+
? term.includes(":")
|
|
197
|
+
? (expandIri(term, context, local, nested) ?? null)
|
|
198
|
+
: context.vocab
|
|
199
|
+
? context.vocab + term
|
|
200
|
+
: null
|
|
201
|
+
: (expandIri(raw.iri, context, local, nested) ?? null);
|
|
202
|
+
// Follows JSON-LD 1.1: a term is a prefix with "@prefix": true, or when it is a simple string term
|
|
203
|
+
// whose expanded IRI ends with a gen-delim character.
|
|
204
|
+
return { iri, prefix: raw.prefix || (raw.simple && iri !== null && genDelimEnd.test(iri)), scopedContext: raw.scopedContext };
|
|
205
|
+
}
|
|
206
|
+
// Expands a term, compact IRI, or absolute IRI.
|
|
207
|
+
function expandIri(value, context, local = noLocalTerms, resolving = new Set()) {
|
|
208
|
+
const trimmed = value.trim();
|
|
209
|
+
// A term defined in the context, even one containing ":", is used before any prefix expansion.
|
|
210
|
+
const definition = resolveTerm(trimmed, context, local, resolving);
|
|
211
|
+
if (definition) {
|
|
212
|
+
return definition.iri ?? undefined;
|
|
213
|
+
}
|
|
214
|
+
const colon = trimmed.indexOf(":");
|
|
215
|
+
if (colon > 0) {
|
|
216
|
+
const prefix = trimmed.slice(0, colon);
|
|
217
|
+
const suffix = trimmed.slice(colon + 1);
|
|
218
|
+
if (suffix.startsWith("//")) {
|
|
219
|
+
return trimmed;
|
|
220
|
+
}
|
|
221
|
+
const prefixDefinition = resolveTerm(prefix, context, local, resolving);
|
|
222
|
+
if (prefixDefinition?.prefix && prefixDefinition.iri) {
|
|
223
|
+
return prefixDefinition.iri + suffix;
|
|
224
|
+
}
|
|
225
|
+
return !context.declared && prefix === "schema" ? schemaOrgRoot + suffix : trimmed;
|
|
226
|
+
}
|
|
227
|
+
if (!context.declared) {
|
|
228
|
+
return schemaOrgRoot + trimmed;
|
|
229
|
+
}
|
|
230
|
+
return context.vocab ? context.vocab + trimmed : undefined;
|
|
231
|
+
}
|
|
232
|
+
// Applies a @context value (null, a URL, an object, or a list of them) in JSON-LD processing order.
|
|
233
|
+
export function applyTypeContext(active, context) {
|
|
234
|
+
if (context === undefined) {
|
|
235
|
+
return active;
|
|
236
|
+
}
|
|
237
|
+
if (Array.isArray(context)) {
|
|
238
|
+
return context.reduce(applyTypeContext, active);
|
|
239
|
+
}
|
|
240
|
+
// A null context removes everything inherited.
|
|
241
|
+
if (context === null) {
|
|
242
|
+
return { declared: true, vocab: null, terms: new Map(), bases: [] };
|
|
243
|
+
}
|
|
244
|
+
// schema.org's own context sets the schema.org vocabulary and "schema" prefix; any other remote
|
|
245
|
+
// context is unknown and may redefine every term. A remote context cannot change the base.
|
|
246
|
+
if (typeof context === "string") {
|
|
247
|
+
return schemaOrgContext.test(context.trim())
|
|
248
|
+
? {
|
|
249
|
+
declared: true,
|
|
250
|
+
vocab: schemaOrgRoot,
|
|
251
|
+
terms: new Map([...active.terms, ["schema", { iri: schemaOrgRoot, prefix: true }]]),
|
|
252
|
+
bases: active.bases
|
|
253
|
+
}
|
|
254
|
+
: { declared: true, vocab: null, terms: new Map(), bases: active.bases };
|
|
255
|
+
}
|
|
256
|
+
if (typeof context !== "object") {
|
|
257
|
+
return active;
|
|
258
|
+
}
|
|
259
|
+
const fields = context;
|
|
260
|
+
const next = { declared: true, vocab: active.vocab, terms: new Map(active.terms), bases: active.bases };
|
|
261
|
+
const base = fields["@base"];
|
|
262
|
+
if (base === null || typeof base === "string") {
|
|
263
|
+
next.bases = [...active.bases, base];
|
|
264
|
+
}
|
|
265
|
+
// As in JSON-LD context processing, @vocab is expanded with the terms defined before this context.
|
|
266
|
+
if ("@vocab" in fields) {
|
|
267
|
+
const vocab = fields["@vocab"];
|
|
268
|
+
next.vocab = typeof vocab === "string" ? (expandIri(vocab, { ...active, declared: true }) ?? null) : null;
|
|
269
|
+
}
|
|
270
|
+
const local = new Map();
|
|
271
|
+
for (const [key, value] of Object.entries(fields)) {
|
|
272
|
+
const definition = key.startsWith("@") ? undefined : rawTermDefinition(value);
|
|
273
|
+
if (definition) {
|
|
274
|
+
local.set(key, definition);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
// Each term's IRI is expanded and frozen now, so later contexts that redefine its prefix do not change it.
|
|
278
|
+
const resolved = [...local.keys()].map((term) => [term, resolveTerm(term, next, local, new Set())]);
|
|
279
|
+
for (const [term, definition] of resolved) {
|
|
280
|
+
if (definition) {
|
|
281
|
+
next.terms.set(term, definition);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return next;
|
|
285
|
+
}
|
|
286
|
+
// The base IRI that relative @id values resolve against: the document base with each @base applied in
|
|
287
|
+
// turn, or null after "@base": null, when relative IRIs stay relative.
|
|
288
|
+
export function contextBase(documentBase, context) {
|
|
289
|
+
return context.bases.reduce((base, value) => {
|
|
290
|
+
if (value === null) {
|
|
291
|
+
return null;
|
|
292
|
+
}
|
|
293
|
+
try {
|
|
294
|
+
return new URL(value, base ?? undefined).href;
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
return base;
|
|
298
|
+
}
|
|
299
|
+
}, documentBase);
|
|
300
|
+
}
|
|
301
|
+
// Expands a node @id through its JSON-LD context. Unlike types, @id values do not use terms or @vocab:
|
|
302
|
+
// only a compact IRI whose prefix is defined expands; anything else is returned as written, for the
|
|
303
|
+
// caller to resolve against the document base. Blank node labels such as "_:b0" are left alone.
|
|
304
|
+
export function expandNodeId(value, context) {
|
|
305
|
+
const trimmed = value.trim();
|
|
306
|
+
const colon = trimmed.indexOf(":");
|
|
307
|
+
if (colon > 0) {
|
|
308
|
+
const prefix = trimmed.slice(0, colon);
|
|
309
|
+
const suffix = trimmed.slice(colon + 1);
|
|
310
|
+
const definition = context.terms.get(prefix);
|
|
311
|
+
if (prefix !== "_" && !suffix.startsWith("//") && definition?.prefix && definition.iri) {
|
|
312
|
+
return definition.iri + suffix;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return trimmed;
|
|
316
|
+
}
|
|
317
|
+
// Expands the type through its JSON-LD context and accepts schema.org LocalBusiness types, so
|
|
318
|
+
// "Dentist" under the schema.org context, "schema:Dentist" and "https://schema.org/Dentist" match,
|
|
319
|
+
// while "https://example.com/Restaurant" or a bare "Restaurant" under another vocabulary do not.
|
|
320
|
+
export function isLocalBusinessType(type, context = noTypeContext) {
|
|
321
|
+
const name = schemaOrgType.exec(expandIri(type, context) ?? "")?.[1];
|
|
322
|
+
return name !== undefined && (localBusinessTypes.has(name) || name.endsWith("LocalBusiness"));
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=local-business-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-business-types.js","sourceRoot":"","sources":["../src/local-business-types.ts"],"names":[],"mappings":"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"}
|
package/dist/pitch-brief.js
CHANGED
|
@@ -13,6 +13,8 @@ const pitchReasons = [
|
|
|
13
13
|
[/^primary-cta-present$|-cta$/, "There is no clear booking or contact button, so ready-to-buy visitors have to hunt for the next step."],
|
|
14
14
|
[/^contact-form-present$/, "Visitors who do not want to call have no way to send an enquiry."],
|
|
15
15
|
[/^broken-internal-links$/, "Some links on the site lead to dead pages."],
|
|
16
|
+
[/^cookie-consent-present$/, "The site loads analytics or advertising tags and no cookie consent banner was found; UK and EU cookie rules generally expect consent before non-essential tracking."],
|
|
17
|
+
[/^privacy-policy-link-present$/, "There is no privacy policy link, which data protection rules expect from sites that take enquiries or use analytics."],
|
|
16
18
|
[/^title-present$/, "The page has no title, so Google and browser tabs show a generic label."],
|
|
17
19
|
[/^meta-description-present$/, "Without a meta description, Google writes its own snippet for the search result."],
|
|
18
20
|
[/^single-h1$/, "The page has no clear main heading telling visitors and Google what the business does."],
|
package/dist/pitch-brief.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pitch-brief.js","sourceRoot":"","sources":["../src/pitch-brief.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCzE,8GAA8G;AAC9G,kDAAkD;AAClD,MAAM,YAAY,GAA4B;IAC5C,CAAC,uBAAuB,EAAE,iFAAiF,CAAC;IAC5G,CAAC,kBAAkB,EAAE,0EAA0E,CAAC;IAChG,CAAC,yBAAyB,EAAE,2EAA2E,CAAC;IACxG,CAAC,kBAAkB,EAAE,8EAA8E,CAAC;IACpG,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;IAChE,CAAC,oBAAoB,EAAE,sEAAsE,CAAC;IAC9F,CAAC,sBAAsB,EAAE,gDAAgD,CAAC;IAC1E,CAAC,6BAA6B,EAAE,uGAAuG,CAAC;IACxI,CAAC,wBAAwB,EAAE,kEAAkE,CAAC;IAC9F,CAAC,yBAAyB,EAAE,4CAA4C,CAAC;IACzE,CAAC,iBAAiB,EAAE,yEAAyE,CAAC;IAC9F,CAAC,4BAA4B,EAAE,kFAAkF,CAAC;IAClH,CAAC,aAAa,EAAE,wFAAwF,CAAC;IACzG,CAAC,wBAAwB,EAAE,0EAA0E,CAAC;IACtG,CAAC,wBAAwB,EAAE,gEAAgE,CAAC;IAC5F,CAAC,2BAA2B,EAAE,4CAA4C,CAAC;IAC3E,CAAC,yBAAyB,EAAE,gDAAgD,CAAC;IAC7E,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;IAC7D,CAAC,sBAAsB,EAAE,+EAA+E,CAAC;IACzG,CAAC,sBAAsB,EAAE,+FAA+F,CAAC;CAC1H,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,8FAA8F;AAC9F,MAAM,oBAAoB,GACxB,kHAAkH,CAAC;AACrH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9D,SAAS,SAAS,CAAC,OAAgB;IACjC,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,YAAY,CAAC,OAAgB;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7G,CAAC;AAED,SAAS,WAAW,CAAC,MAAmB;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,MAAM,CAAC,QAAQ;SACnB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SACpG,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1D,2HAA2H;SAC1H,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC3F,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC;QAC/B,GAAG,EAAE,OAAO,CAAC,cAAc;KAC5B,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,QAAQ,CAAC,IAAmB,EAAE,MAA+B,EAAE,MAAoB;IAC1F,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,qBAAqB,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAClG,OAAO,2DAA2D,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,wCAAwC,CAAC;IAClD,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,yFAAyF,CAAC;IACnG,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,GAAG,SAAS;QAC9B,CAAC,CAAC,4BAA4B,SAAS,qCAAqC,MAAM,CAAC,MAAM,GAAG,SAAS,0BAA0B;QAC/H,CAAC,CAAC,4BAA4B,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,SAAS,SAAS,CAAC;AACrG,CAAC;AAED,SAAS,SAAS,CAAC,IAAmB,EAAE,MAA+B;IACrE,MAAM,MAAM,GAAG,CAAC,iFAAiF,CAAC,CAAC;IACnG,MAAM,QAAQ,GAAG,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC;IAClD,IAAI,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,uEAAuE,QAAQ,GAAG,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,wGAAwG,CAAC,CAAC;IACxH,CAAC;IACD,MAAM,CAAC,IAAI,CACT,oQAAoQ,EACpQ,iFAAiF,CAClF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAmB,EAAE,MAA+B,EAAE,YAA+B;IACnH,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,OAAO,EAAE,IAAI,CAAC,MAAM;aACjB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;aAC9B,MAAM,CAAC,OAAO,CAAC;QAClB,cAAc,EAAE,IAAI,CAAC,uBAAuB;QAC5C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,YAAY;QACZ,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;QACrC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;QAClC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC,CAAC;QAClD,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,4GAA4G;AAC5G,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkB,EAClB,UAAkB;IAElB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACvB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,8BAA8B,CAAC,EAAE,MAAM,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAgB,CAAC;QACzE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC/B,CAAC;QACD,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CACrC,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,OAAO,EAAE,EAAE,KAAK,QAAQ;YAC/B,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;YACjC,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ;YAC1C,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CACnC,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAoB,EAAE,WAAmB;IACjF,MAAM,KAAK,GAAG;QACZ,gBAAgB;QAChB,EAAE;QACF,aAAa,WAAW,QAAQ,MAAM,CAAC,MAAM,oBAAoB,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;QAClG,2FAA2F;QAC3F,EAAE;KACH,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CACR,MAAM,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAChD,EAAE,EACF,cAAc,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,EACpE,YAAY,KAAK,CAAC,KAAK,EAAE,EACzB,eAAe,KAAK,CAAC,QAAQ,IAAI,SAAS,GAAG,KAAK,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,KAAK,CAAC,gBAAgB,GAAG,EAAE,EAC3I,cAAc,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC9J,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1G,eAAe,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EACtC,EAAE,CACH,CAAC;QAEF,IAAI,KAAK,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,YAAY,KAAK,MAAM;gBAC3B,CAAC,CAAC,2EAA2E;gBAC7E,CAAC,CAAC,8EAA8E,EAClF,EAAE,CACH,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YACnC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACpC,KAAK,CAAC,IAAI,CACR,GAAG,KAAK,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,QAAQ,MAAM,KAAK,CAAC,YAAY,EAAE,EACrF,kBAAkB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAC1C,aAAa,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CACjC,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,UAAU,4BAA4B,KAAK,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC;YACzH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"pitch-brief.js","sourceRoot":"","sources":["../src/pitch-brief.ts"],"names":[],"mappings":"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"}
|