@brandlab-digital/eslint-plugin 1.0.8 → 1.0.9

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 CHANGED
@@ -25,7 +25,7 @@ The recommended config enables every published rule as an error.
25
25
  | `brandlab/no-protected-platform-reimplementation` | Rejects local declarations and direct calls that bypass protected contact, SEO or analytics surfaces. | Import the shared `site-core` or `site-next` API. |
26
26
  | `brandlab/no-analytics-pii` | Rejects statically provable lead PII, message and attachment data in known analytics sinks. | Send only shared allowlisted event parameters. |
27
27
  | `brandlab/no-unsafe-external-links` | Rejects script-bearing link schemes and external new-context links with opener access when the URL is static. | Use safe schemes and `rel="noopener"`; keep runtime URL validation at the trust boundary. |
28
- | `brandlab/no-raw-image-elements` | Rejects raw website `<img>` and `createElement('img')` output. | Use `next/image`; email renderer files remain exempt. |
28
+ | `brandlab/no-raw-image-elements` | Rejects raw website `<img>` and `createElement('img')` output. | Use `next/image`; the documented `getImageProps` art-direction pattern and email renderer files remain exempt. |
29
29
 
30
30
  `RULE_IDS` is exported for tools that need the canonical IDs without duplicating strings.
31
31
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9B,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM;QACpB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAA;KACpC,CAAA;IACD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC9C,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAA;KACpC,CAAA;CACF,CAAA;AAWD,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,CAAA;AAEtD,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS,CAAA;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,MAAM,CAAA;YACnB,WAAW,EAAE,OAAO,CAAA;SACrB,CAAA;QACD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,MAAM,EAAE,EAAE,CAAA;KACX,CAAA;IACD,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,QAAQ;;;;;;;;;EASV,CAAA;AAupBX,eAAO,MAAM,KAAK;;;;;;;;;CAcoB,CAAA;AAEtC,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,OAAO,EAAE;QACP,WAAW,EAAE;YACX,OAAO,EAAE;gBACP,QAAQ,EAAE,OAAO,CAAA;aAClB,CAAA;YACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAC/B,CAAA;KACF,CAAA;CACF,CAAA;AAMD,QAAA,MAAM,MAAM,EAAE,cAUb,CAAA;AAID,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9B,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM;QACpB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAA;KACpC,CAAA;IACD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC9C,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAA;KACpC,CAAA;CACF,CAAA;AAWD,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,CAAA;AAEtD,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS,CAAA;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,MAAM,CAAA;YACnB,WAAW,EAAE,OAAO,CAAA;SACrB,CAAA;QACD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,MAAM,EAAE,EAAE,CAAA;KACX,CAAA;IACD,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,QAAQ;;;;;;;;;EASV,CAAA;AAmuBX,eAAO,MAAM,KAAK;;;;;;;;;CAcoB,CAAA;AAEtC,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,OAAO,EAAE;QACP,WAAW,EAAE;YACX,OAAO,EAAE;gBACP,QAAQ,EAAE,OAAO,CAAA;aAClB,CAAA;YACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAC/B,CAAA;KACF,CAAA;CACF,CAAA;AAMD,QAAA,MAAM,MAAM,EAAE,cAUb,CAAA;AAID,eAAe,MAAM,CAAA"}
package/dist/index.js CHANGED
@@ -543,16 +543,83 @@ function isEmailRenderingFile(context) {
543
543
  /(?:Email|EmailTemplate|ContactFormEmail)\.(?:jsx|tsx)$/i.test(filename));
544
544
  }
545
545
  const noRawImageElementsRule = defineRule({
546
- description: 'Disallow raw image elements in Next.js UI where next/image should own delivery.',
546
+ description: 'Require Next.js-owned image delivery for website UI.',
547
547
  messages: {
548
- rawImage: 'Use next/image for website UI images. Raw image markup is reserved for non-Next renderers such as email.',
548
+ rawImage: 'Use next/image for website UI images. Raw image markup is reserved for reviewed getImageProps art direction and non-Next renderers such as email.',
549
549
  },
550
550
  create(context) {
551
551
  if (isEmailRenderingFile(context))
552
552
  return {};
553
+ const getImagePropsBindings = new Set();
554
+ const nextImagePropBindings = new Set();
555
+ function inspectImport(nodeValue) {
556
+ const node = asNode(nodeValue);
557
+ if (node?.type !== 'ImportDeclaration' || getStaticString(node.source) !== 'next/image') {
558
+ return;
559
+ }
560
+ const specifiers = Array.isArray(node.specifiers) ? node.specifiers : [];
561
+ for (const specifierValue of specifiers) {
562
+ const specifier = asNode(specifierValue);
563
+ if (specifier?.type === 'ImportSpecifier' &&
564
+ getIdentifierName(specifier.imported) === 'getImageProps') {
565
+ const localName = getIdentifierName(specifier.local);
566
+ if (localName)
567
+ getImagePropsBindings.add(localName);
568
+ }
569
+ }
570
+ }
571
+ function inspectVariable(nodeValue) {
572
+ const node = asNode(nodeValue);
573
+ const initializer = asNode(node?.init);
574
+ if (node?.type !== 'VariableDeclarator' || initializer?.type !== 'CallExpression') {
575
+ return;
576
+ }
577
+ const calleeName = getIdentifierName(initializer.callee);
578
+ if (!calleeName || !getImagePropsBindings.has(calleeName))
579
+ return;
580
+ const pattern = asNode(node.id);
581
+ if (pattern?.type !== 'ObjectPattern')
582
+ return;
583
+ const properties = Array.isArray(pattern.properties) ? pattern.properties : [];
584
+ const propsProperty = properties
585
+ .map(asNode)
586
+ .find((property) => property?.type === 'Property' &&
587
+ getIdentifierName(property.key) === 'props');
588
+ const propsPattern = asNode(propsProperty?.value);
589
+ const directBinding = getIdentifierName(propsPattern);
590
+ if (directBinding) {
591
+ nextImagePropBindings.add(directBinding);
592
+ return;
593
+ }
594
+ if (propsPattern?.type !== 'ObjectPattern')
595
+ return;
596
+ const nestedProperties = Array.isArray(propsPattern.properties)
597
+ ? propsPattern.properties
598
+ : [];
599
+ for (const propertyValue of nestedProperties) {
600
+ const property = asNode(propertyValue);
601
+ if (property?.type !== 'RestElement')
602
+ continue;
603
+ const binding = getIdentifierName(property.argument);
604
+ if (binding)
605
+ nextImagePropBindings.add(binding);
606
+ }
607
+ }
608
+ function usesReviewedNextImageProps(node) {
609
+ if (getJsxAttribute(node, 'src') || getJsxAttribute(node, 'srcSet'))
610
+ return false;
611
+ const attributes = Array.isArray(node.attributes) ? node.attributes : [];
612
+ return attributes.some((attributeValue) => {
613
+ const attribute = asNode(attributeValue);
614
+ return (attribute?.type === 'JSXSpreadAttribute' &&
615
+ nextImagePropBindings.has(getIdentifierName(attribute.argument) ?? ''));
616
+ });
617
+ }
553
618
  function inspectOpeningElement(nodeValue) {
554
619
  const node = asNode(nodeValue);
555
- if (getJsxElementName(node?.name)?.toLowerCase() === 'img') {
620
+ if (node &&
621
+ getJsxElementName(node.name)?.toLowerCase() === 'img' &&
622
+ !usesReviewedNextImageProps(node)) {
556
623
  context.report({ node: nodeValue, messageId: 'rawImage' });
557
624
  }
558
625
  }
@@ -569,7 +636,9 @@ const noRawImageElementsRule = defineRule({
569
636
  }
570
637
  return {
571
638
  CallExpression: inspectCall,
639
+ ImportDeclaration: inspectImport,
572
640
  JSXOpeningElement: inspectOpeningElement,
641
+ VariableDeclarator: inspectVariable,
573
642
  };
574
643
  },
575
644
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["type AstNode = {\n type?: string\n [key: string]: unknown\n}\n\ntype ReportDescriptor = {\n node: unknown\n messageId?: string\n message?: string\n data?: Record<string, string>\n}\n\ntype RuleContext = {\n filename?: string\n getFilename?: () => string\n getSourceCode?: () => {\n getText?: (node: unknown) => string\n }\n physicalFilename?: string\n report: (descriptor: ReportDescriptor) => void\n sourceCode?: {\n getText?: (node: unknown) => string\n }\n}\n\nfunction getContextFilename(context: RuleContext): string {\n return (\n context.filename ??\n context.physicalFilename ??\n context.getFilename?.() ??\n ''\n ).replaceAll('\\\\', '/')\n}\n\ntype Visitor = Record<string, (node: unknown) => void>\n\ntype RuleModule = {\n meta: {\n type: 'problem'\n docs: {\n description: string\n recommended: boolean\n }\n messages: Record<string, string>\n schema: []\n }\n create: (context: RuleContext) => Visitor\n}\n\nexport const RULE_IDS = Object.freeze({\n noRetiredAnalyticsEvents: 'no-retired-analytics-events',\n noRawJsonLd: 'no-raw-json-ld',\n noAllowIndexingTrue: 'no-allow-indexing-true',\n noUnsafeRichTextSinks: 'no-unsafe-rich-text-sinks',\n noProtectedPlatformReimplementation: 'no-protected-platform-reimplementation',\n noAnalyticsPii: 'no-analytics-pii',\n noUnsafeExternalLinks: 'no-unsafe-external-links',\n noRawImageElements: 'no-raw-image-elements',\n} as const)\n\nfunction asNode(value: unknown): AstNode | null {\n return value && typeof value === 'object' ? (value as AstNode) : null\n}\n\nfunction getStaticString(value: unknown): string | null {\n const node = asNode(value)\n if (!node) return null\n\n if (node.type === 'Literal' && typeof node.value === 'string') return node.value\n if (node.type === 'Identifier' || node.type === 'JSXIdentifier') {\n return typeof node.name === 'string' ? node.name : null\n }\n if (node.type === 'TemplateElement') {\n const templateValue = asNode(node.value)\n return typeof templateValue?.raw === 'string' ? templateValue.raw : null\n }\n if (node.type === 'TemplateLiteral') {\n const expressions = Array.isArray(node.expressions) ? node.expressions : []\n const quasis = Array.isArray(node.quasis) ? node.quasis : []\n if (expressions.length > 0) return null\n return quasis.map(getStaticString).join('')\n }\n if (node.type === 'JSXExpressionContainer') return getStaticString(node.expression)\n if (node.type === 'JSXAttribute') return getStaticString(node.value)\n if (node.type === 'ChainExpression') return getStaticString(node.expression)\n\n return null\n}\n\nfunction getIdentifierName(value: unknown): string | null {\n const node = asNode(value)\n if (!node) return null\n if (node.type === 'Identifier' || node.type === 'JSXIdentifier') {\n return typeof node.name === 'string' ? node.name : null\n }\n return null\n}\n\nfunction getSourceText(context: RuleContext, node: unknown): string {\n const sourceCode = context.sourceCode ?? context.getSourceCode?.()\n return sourceCode?.getText?.(node) ?? ''\n}\n\nfunction defineRule(options: {\n description: string\n messages: Record<string, string>\n create: (context: RuleContext) => Visitor\n}): RuleModule {\n return {\n meta: {\n type: 'problem',\n docs: {\n description: options.description,\n recommended: true,\n },\n messages: options.messages,\n schema: [],\n },\n create: options.create,\n }\n}\n\nfunction createTextRule(options: {\n description: string\n messageId: string\n message: string\n matcher: (text: string, context: RuleContext) => boolean\n}): RuleModule {\n return defineRule({\n description: options.description,\n messages: { [options.messageId]: options.message },\n create(context) {\n function inspect(node: unknown) {\n const text = getStaticString(node)\n if (text && options.matcher(text, context)) {\n context.report({ node, messageId: options.messageId })\n }\n }\n\n return {\n Literal: inspect,\n TemplateElement: inspect,\n }\n },\n })\n}\n\nfunction containsAllowIndexingTrue(text: string): boolean {\n return (\n text.includes('ALLOW_INDEXING=true') ||\n /ALLOW_INDEXING[\\s\\S]{0,80}['\"]true['\"]/.test(text)\n )\n}\n\nconst noAllowIndexingTrueRule = defineRule({\n description: 'Disallow ALLOW_INDEXING=true; only ALLOW_INDEXING=1 is supported.',\n messages: {\n allowIndexingTrue: 'Use ALLOW_INDEXING=1 as the only explicit indexing override.',\n },\n create(context) {\n function inspectStringNode(node: unknown) {\n const text = getStaticString(node)\n if (text && containsAllowIndexingTrue(text)) {\n context.report({ node, messageId: 'allowIndexingTrue' })\n }\n }\n\n function inspectSourceNode(node: unknown) {\n const text = getSourceText(context, node)\n if (text && containsAllowIndexingTrue(text)) {\n context.report({ node, messageId: 'allowIndexingTrue' })\n }\n }\n\n return {\n BinaryExpression: inspectSourceNode,\n Literal: inspectStringNode,\n Property: inspectSourceNode,\n TemplateElement: inspectStringNode,\n }\n },\n})\n\nconst retiredAnalyticsEvents = new Set([\n 'contact_form_submission',\n 'phone_calls',\n 'form_start',\n 'cta_click',\n])\n\nconst protectedPlatformNames = new Set([\n 'BrandlabBreadcrumbs',\n 'ContactFormEmail',\n 'SchemaScript',\n 'buildBrandlabMetadata',\n 'buildLocalBusinessSchema',\n 'buildNextMetadata',\n 'buildRobotsMetadata',\n 'buildSchemaGraph',\n 'buildSitemapEntries',\n 'createRouteAwareMdxBlogAdapter',\n 'createRouteAwareStructuredBlogAdapter',\n 'createBrandlabContactRuntime',\n 'createNextMetadataBuilder',\n 'defineAnalyticsContract',\n 'defineBrandlabBusiness',\n 'defineBrandlabContact',\n 'defineBrandlabProject',\n 'defineBreadcrumbTrail',\n 'defineContactContract',\n 'defineRouteCatalog',\n 'installPhoneClickListener',\n 'renderContactEmail',\n 'sitemapIndexXmlResponse',\n 'sitemapXmlResponse',\n 'trackBrandlabBrowserEvent',\n])\n\nconst protectedDirectCalls = new Set([\n 'dataLayer.push',\n 'globalThis.dataLayer.push',\n 'globalThis.gtag',\n 'gtag',\n 'window.dataLayer.push',\n 'window.gtag',\n])\n\nfunction isSharedPlatformImplementation(context: RuleContext): boolean {\n const filename = getContextFilename(context)\n return (\n filename.includes('/node_modules/@brandlab-digital/') ||\n /(?:^|\\/)standards\\/source\\/packages\\/(?:site-core|site-next)\\//.test(filename)\n )\n}\n\nfunction getMemberPath(value: unknown): string | null {\n const node = asNode(value)\n if (!node) return null\n if (node.type === 'ChainExpression') return getMemberPath(node.expression)\n if (node.type === 'Identifier') return getIdentifierName(node)\n if (node.type === 'ThisExpression') return 'this'\n if (node.type !== 'MemberExpression') return null\n\n const objectPath = getMemberPath(node.object)\n const propertyName = node.computed\n ? getStaticString(node.property)\n : getIdentifierName(node.property)\n return objectPath && propertyName ? `${objectPath}.${propertyName}` : null\n}\n\nfunction getDeclarationName(value: unknown): string | null {\n const node = asNode(value)\n if (!node) return null\n return getIdentifierName(node.id)\n}\n\nconst noProtectedPlatformReimplementationRule = defineRule({\n description: 'Disallow local reimplementation of protected Brandlab runtime surfaces.',\n messages: {\n protectedDeclaration:\n '{{name}} is a protected Brandlab platform surface. Import the shared implementation instead of declaring it locally.',\n protectedCall:\n '{{name}} bypasses protected Brandlab delivery or analytics behaviour. Use the shared platform adapter.',\n },\n create(context) {\n if (isSharedPlatformImplementation(context)) return {} as Visitor\n\n function inspectDeclaration(node: unknown) {\n const name = getDeclarationName(node)\n if (name && protectedPlatformNames.has(name)) {\n context.report({\n node,\n messageId: 'protectedDeclaration',\n data: { name },\n })\n }\n }\n\n function inspectCall(nodeValue: unknown) {\n const node = asNode(nodeValue)\n const callPath = getMemberPath(node?.callee)\n if (!callPath) return\n if (protectedDirectCalls.has(callPath) || callPath.endsWith('.emails.send')) {\n context.report({\n node: nodeValue,\n messageId: 'protectedCall',\n data: { name: callPath },\n })\n }\n }\n\n return {\n CallExpression: inspectCall,\n ClassDeclaration: inspectDeclaration,\n FunctionDeclaration: inspectDeclaration,\n VariableDeclarator: inspectDeclaration,\n }\n },\n})\n\nfunction getJsxElementName(value: unknown): string | null {\n const node = asNode(value)\n if (!node) return null\n const direct = getIdentifierName(node)\n if (direct) return direct\n if (node.type !== 'JSXMemberExpression') return null\n const objectName = getJsxElementName(node.object)\n const propertyName = getJsxElementName(node.property)\n return objectName && propertyName ? `${objectName}.${propertyName}` : null\n}\n\nfunction getJsxAttribute(openingElement: AstNode, name: string): AstNode | null {\n const attributes = Array.isArray(openingElement.attributes) ? openingElement.attributes : []\n return (\n attributes\n .map(asNode)\n .find(\n (attribute) =>\n attribute?.type === 'JSXAttribute' &&\n getIdentifierName(attribute.name)?.toLowerCase() === name.toLowerCase(),\n ) ?? null\n )\n}\n\nfunction getObjectProperty(value: unknown, key: string): AstNode | null {\n const node = asNode(value)\n if (node?.type !== 'ObjectExpression') return null\n const properties = Array.isArray(node.properties) ? node.properties : []\n return (\n properties\n .map(asNode)\n .find(\n (property) =>\n property?.type === 'Property' &&\n getPropertyName(property)?.toLowerCase() === key.toLowerCase(),\n ) ?? null\n )\n}\n\nfunction getPropertyName(property: AstNode): string | null {\n return property.computed\n ? getStaticString(property.key)\n : getIdentifierName(property.key) ?? getStaticString(property.key)\n}\n\nfunction isRawJsonLdCreateElement(value: unknown): boolean {\n const node = asNode(value)\n if (node?.type !== 'CallExpression') return false\n const callee = getMemberPath(node.callee)\n if (callee !== 'createElement' && callee !== 'React.createElement') return false\n const args = Array.isArray(node.arguments) ? node.arguments : []\n if (getStaticString(args[0])?.toLowerCase() !== 'script') return false\n const typeProperty = getObjectProperty(args[1], 'type')\n return getStaticString(typeProperty?.value)?.toLowerCase() === 'application/ld+json'\n}\n\nconst noRawJsonLdRule = defineRule({\n description: 'Disallow raw JSON-LD scripts outside the shared Brandlab schema adapter.',\n messages: {\n rawJsonLd: 'Render JSON-LD through @brandlab-digital/site-next/schema.',\n },\n create(context) {\n if (isSharedPlatformImplementation(context)) return {} as Visitor\n\n function inspectOpeningElement(nodeValue: unknown) {\n const node = asNode(nodeValue)\n if (!node || getJsxElementName(node.name)?.toLowerCase() !== 'script') return\n const typeAttribute = getJsxAttribute(node, 'type')\n if (getStaticString(typeAttribute)?.toLowerCase() === 'application/ld+json') {\n context.report({ node: nodeValue, messageId: 'rawJsonLd' })\n }\n }\n\n function inspectCall(node: unknown) {\n if (isRawJsonLdCreateElement(node)) {\n context.report({ node, messageId: 'rawJsonLd' })\n }\n }\n\n function inspectLiteral(nodeValue: unknown) {\n const node = asNode(nodeValue)\n if (getStaticString(node)?.toLowerCase() !== 'application/ld+json') return\n const parentType = asNode(node?.parent)?.type\n if (parentType !== 'JSXAttribute' && parentType !== 'Property') {\n context.report({ node: nodeValue, messageId: 'rawJsonLd' })\n }\n }\n\n return {\n CallExpression: inspectCall,\n JSXOpeningElement: inspectOpeningElement,\n Literal: inspectLiteral,\n TemplateElement: inspectLiteral,\n }\n },\n})\n\nconst strictPiiTokens = new Set([\n 'attachment',\n 'attachment_name',\n 'contact_email',\n 'contact_name',\n 'customer_name',\n 'email',\n 'email_address',\n 'enquiry_message',\n 'file_name',\n 'filename',\n 'first_name',\n 'form_message',\n 'full_name',\n 'last_name',\n 'message',\n 'mobile',\n 'mobile_number',\n 'phone',\n 'phone_number',\n 'residential_address',\n 'street_address',\n 'user_email',\n 'user_phone',\n])\n\nconst contactOnlyPiiTokens = new Set(['address', 'name'])\n\nfunction normalizeToken(value: string): string {\n return value\n .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '_')\n .replace(/^_+|_+$/g, '')\n}\n\nfunction isPiiToken(value: string | null, includeContactOnly: boolean): boolean {\n if (!value) return false\n const normalized = normalizeToken(value)\n return (\n strictPiiTokens.has(normalized) ||\n (includeContactOnly && contactOnlyPiiTokens.has(normalized))\n )\n}\n\nfunction isAnalyticsSink(value: unknown): boolean {\n const path = getMemberPath(value)\n return (\n path === 'gtag' ||\n path === 'window.gtag' ||\n path === 'globalThis.gtag' ||\n path === 'dataLayer.push' ||\n path === 'window.dataLayer.push' ||\n path === 'globalThis.dataLayer.push' ||\n path === 'sendGAEvent' ||\n path === 'sendGTMEvent' ||\n path === 'trackBrandlabBrowserEvent' ||\n path === 'trackBrandlabEvent' ||\n path === 'ReactGA.event'\n )\n}\n\nfunction isContactAnalyticsCall(node: AstNode): boolean {\n const args = Array.isArray(node.arguments) ? node.arguments : []\n return args.some((argument) => {\n const value = getStaticString(argument)\n return value === 'contact_form' || value === 'phone_call'\n })\n}\n\nfunction looksLikeLiteralPii(value: string): boolean {\n const normalized = value.trim()\n if (/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(normalized)) return true\n const digits = normalized.replace(/[^0-9]/g, '')\n return /^\\+?[0-9 ()-]+$/.test(normalized) && digits.length >= 10 && digits.length <= 15\n}\n\nfunction containsPiiReference(value: unknown, includeContactOnly: boolean): boolean {\n const node = asNode(value)\n if (!node) return false\n if (node.type === 'Identifier') {\n return isPiiToken(getIdentifierName(node), includeContactOnly)\n }\n if (node.type === 'MemberExpression') {\n const path = getMemberPath(node)\n const finalSegment = path?.split('.').at(-1) ?? null\n return isPiiToken(finalSegment, includeContactOnly)\n }\n if (node.type === 'Literal') {\n return typeof node.value === 'string' && looksLikeLiteralPii(node.value)\n }\n if (node.type === 'TemplateLiteral') {\n const expressions = Array.isArray(node.expressions) ? node.expressions : []\n return (\n expressions.some((expression) => containsPiiReference(expression, includeContactOnly)) ||\n (getStaticString(node) ? looksLikeLiteralPii(getStaticString(node) ?? '') : false)\n )\n }\n if (node.type === 'CallExpression') {\n const args = Array.isArray(node.arguments) ? node.arguments : []\n return args.some((argument) => containsPiiReference(argument, includeContactOnly))\n }\n if (node.type === 'ConditionalExpression') {\n return (\n containsPiiReference(node.consequent, includeContactOnly) ||\n containsPiiReference(node.alternate, includeContactOnly)\n )\n }\n if (node.type === 'LogicalExpression' || node.type === 'BinaryExpression') {\n return (\n containsPiiReference(node.left, includeContactOnly) ||\n containsPiiReference(node.right, includeContactOnly)\n )\n }\n return false\n}\n\nfunction collectPiiNodes(value: unknown, includeContactOnly: boolean): AstNode[] {\n const node = asNode(value)\n if (!node) return []\n if (node.type === 'ObjectExpression') {\n const properties = Array.isArray(node.properties) ? node.properties : []\n return properties.flatMap((property) => collectPiiNodes(property, includeContactOnly))\n }\n if (node.type === 'Property') {\n const key = getPropertyName(node)\n if (\n isPiiToken(key, includeContactOnly) ||\n containsPiiReference(node.value, includeContactOnly)\n ) {\n return [node]\n }\n return collectPiiNodes(node.value, includeContactOnly)\n }\n if (node.type === 'SpreadElement' || node.type === 'ExperimentalSpreadProperty') {\n return containsPiiReference(node.argument, includeContactOnly) ? [node] : []\n }\n if (node.type === 'ArrayExpression') {\n const elements = Array.isArray(node.elements) ? node.elements : []\n return elements.flatMap((element) => collectPiiNodes(element, includeContactOnly))\n }\n if (containsPiiReference(node, includeContactOnly)) return [node]\n return []\n}\n\nconst noAnalyticsPiiRule = defineRule({\n description: 'Disallow statically provable lead PII in analytics event payloads.',\n messages: {\n analyticsPii:\n 'Do not send lead PII or attachment details to analytics. Use the shared Brandlab analytics allowlist.',\n },\n create(context) {\n function inspectCall(nodeValue: unknown) {\n const node = asNode(nodeValue)\n if (node?.type !== 'CallExpression' || !isAnalyticsSink(node.callee)) return\n const includeContactOnly = isContactAnalyticsCall(node)\n const args = Array.isArray(node.arguments) ? node.arguments : []\n const reported = new Set<AstNode>()\n for (const argument of args) {\n for (const piiNode of collectPiiNodes(argument, includeContactOnly)) {\n if (reported.has(piiNode)) continue\n reported.add(piiNode)\n context.report({ node: piiNode, messageId: 'analyticsPii' })\n }\n }\n }\n\n return { CallExpression: inspectCall }\n },\n})\n\nfunction normalizeStaticUrl(value: string): string {\n return value.trim().replace(/[\\u0000-\\u0020]+/g, '').toLowerCase()\n}\n\nfunction isDangerousStaticUrl(value: string): boolean {\n return /^(?:javascript|vbscript):/.test(normalizeStaticUrl(value)) ||\n /^data:text\\/html(?:;|,)/.test(normalizeStaticUrl(value))\n}\n\nfunction isExternalStaticUrl(value: string): boolean {\n return /^(?:https?:)?\\/\\//i.test(value.trim())\n}\n\nfunction relHasNoopener(value: string | null): boolean {\n return Boolean(value?.toLowerCase().split(/\\s+/).includes('noopener'))\n}\n\nconst noUnsafeExternalLinksRule = defineRule({\n description: 'Disallow statically provable unsafe link schemes and external opener access.',\n messages: {\n unsafeLinkScheme: 'Do not use javascript:, vbscript:, or HTML data URLs in links.',\n missingNoopener:\n 'External links opened in a new context must include rel=\"noopener\".',\n },\n create(context) {\n function inspectOpeningElement(nodeValue: unknown) {\n const node = asNode(nodeValue)\n const elementName = getJsxElementName(node?.name)?.toLowerCase()\n if (!node || (elementName !== 'a' && elementName !== 'link')) return\n const href = getStaticString(getJsxAttribute(node, 'href'))\n if (!href) return\n if (isDangerousStaticUrl(href)) {\n context.report({ node: nodeValue, messageId: 'unsafeLinkScheme' })\n return\n }\n const target = getStaticString(getJsxAttribute(node, 'target'))\n if (\n isExternalStaticUrl(href) &&\n target?.toLowerCase() === '_blank' &&\n !relHasNoopener(getStaticString(getJsxAttribute(node, 'rel')))\n ) {\n context.report({ node: nodeValue, messageId: 'missingNoopener' })\n }\n }\n\n function inspectCall(nodeValue: unknown) {\n const node = asNode(nodeValue)\n if (node?.type !== 'CallExpression' || getMemberPath(node.callee) !== 'window.open') return\n const args = Array.isArray(node.arguments) ? node.arguments : []\n const url = getStaticString(args[0])\n if (!url) return\n if (isDangerousStaticUrl(url)) {\n context.report({ node: nodeValue, messageId: 'unsafeLinkScheme' })\n return\n }\n const target = getStaticString(args[1]) ?? '_blank'\n const features = getStaticString(args[2])\n if (\n isExternalStaticUrl(url) &&\n target.toLowerCase() === '_blank' &&\n !features?.toLowerCase().split(/\\s*,\\s*/).includes('noopener') &&\n !features?.toLowerCase().split(/\\s*,\\s*/).includes('noreferrer')\n ) {\n context.report({ node: nodeValue, messageId: 'missingNoopener' })\n }\n }\n\n return {\n CallExpression: inspectCall,\n JSXOpeningElement: inspectOpeningElement,\n }\n },\n})\n\nfunction isEmailRenderingFile(context: RuleContext): boolean {\n const filename = getContextFilename(context)\n return (\n /\\/(?:email|emails|contact-email)\\//i.test(filename) ||\n /(?:Email|EmailTemplate|ContactFormEmail)\\.(?:jsx|tsx)$/i.test(filename)\n )\n}\n\nconst noRawImageElementsRule = defineRule({\n description: 'Require Next.js-owned image delivery for website UI.',\n messages: {\n rawImage:\n 'Use next/image for website UI images. Raw image markup is reserved for reviewed getImageProps art direction and non-Next renderers such as email.',\n },\n create(context) {\n if (isEmailRenderingFile(context)) return {} as Visitor\n\n const getImagePropsBindings = new Set<string>()\n const nextImagePropBindings = new Set<string>()\n\n function inspectImport(nodeValue: unknown) {\n const node = asNode(nodeValue)\n if (node?.type !== 'ImportDeclaration' || getStaticString(node.source) !== 'next/image') {\n return\n }\n const specifiers = Array.isArray(node.specifiers) ? node.specifiers : []\n for (const specifierValue of specifiers) {\n const specifier = asNode(specifierValue)\n if (\n specifier?.type === 'ImportSpecifier' &&\n getIdentifierName(specifier.imported) === 'getImageProps'\n ) {\n const localName = getIdentifierName(specifier.local)\n if (localName) getImagePropsBindings.add(localName)\n }\n }\n }\n\n function inspectVariable(nodeValue: unknown) {\n const node = asNode(nodeValue)\n const initializer = asNode(node?.init)\n if (node?.type !== 'VariableDeclarator' || initializer?.type !== 'CallExpression') {\n return\n }\n const calleeName = getIdentifierName(initializer.callee)\n if (!calleeName || !getImagePropsBindings.has(calleeName)) return\n\n const pattern = asNode(node.id)\n if (pattern?.type !== 'ObjectPattern') return\n const properties = Array.isArray(pattern.properties) ? pattern.properties : []\n const propsProperty = properties\n .map(asNode)\n .find(\n (property) =>\n property?.type === 'Property' &&\n getIdentifierName(property.key) === 'props',\n )\n const propsPattern = asNode(propsProperty?.value)\n const directBinding = getIdentifierName(propsPattern)\n if (directBinding) {\n nextImagePropBindings.add(directBinding)\n return\n }\n if (propsPattern?.type !== 'ObjectPattern') return\n const nestedProperties = Array.isArray(propsPattern.properties)\n ? propsPattern.properties\n : []\n for (const propertyValue of nestedProperties) {\n const property = asNode(propertyValue)\n if (property?.type !== 'RestElement') continue\n const binding = getIdentifierName(property.argument)\n if (binding) nextImagePropBindings.add(binding)\n }\n }\n\n function usesReviewedNextImageProps(node: AstNode) {\n if (getJsxAttribute(node, 'src') || getJsxAttribute(node, 'srcSet')) return false\n const attributes = Array.isArray(node.attributes) ? node.attributes : []\n return attributes.some((attributeValue) => {\n const attribute = asNode(attributeValue)\n return (\n attribute?.type === 'JSXSpreadAttribute' &&\n nextImagePropBindings.has(getIdentifierName(attribute.argument) ?? '')\n )\n })\n }\n\n function inspectOpeningElement(nodeValue: unknown) {\n const node = asNode(nodeValue)\n if (\n node &&\n getJsxElementName(node.name)?.toLowerCase() === 'img' &&\n !usesReviewedNextImageProps(node)\n ) {\n context.report({ node: nodeValue, messageId: 'rawImage' })\n }\n }\n\n function inspectCall(nodeValue: unknown) {\n const node = asNode(nodeValue)\n if (node?.type !== 'CallExpression') return\n const callee = getMemberPath(node.callee)\n const args = Array.isArray(node.arguments) ? node.arguments : []\n if (\n (callee === 'createElement' || callee === 'React.createElement') &&\n getStaticString(args[0])?.toLowerCase() === 'img'\n ) {\n context.report({ node: nodeValue, messageId: 'rawImage' })\n }\n }\n\n return {\n CallExpression: inspectCall,\n ImportDeclaration: inspectImport,\n JSXOpeningElement: inspectOpeningElement,\n VariableDeclarator: inspectVariable,\n }\n },\n})\n\nconst noUnsafeRichTextSinksRule = defineRule({\n description: 'Disallow visible rich text sinks that bypass a sanitizer.',\n messages: {\n unsafeRichTextSink: 'Visible rich text must be sanitizer-backed and tested.',\n },\n create(context) {\n function inspectSourceNode(node: unknown) {\n const text = getSourceText(context, node)\n if (\n text.includes('dangerouslySetInnerHTML') &&\n !/saniti[sz](?:e|ed|er)/i.test(text)\n ) {\n context.report({ node, messageId: 'unsafeRichTextSink' })\n }\n }\n\n function inspectStringNode(node: unknown) {\n const text = getStaticString(node)\n if (\n text?.includes('dangerouslySetInnerHTML') &&\n !/saniti[sz](?:e|ed|er)/i.test(text)\n ) {\n context.report({ node, messageId: 'unsafeRichTextSink' })\n }\n }\n\n return {\n JSXAttribute: inspectSourceNode,\n Literal: inspectStringNode,\n Property: inspectSourceNode,\n TemplateElement: inspectStringNode,\n }\n },\n})\n\nexport const rules = {\n [RULE_IDS.noRetiredAnalyticsEvents]: createTextRule({\n description: 'Disallow retired Brandlab analytics event names.',\n messageId: 'retiredAnalyticsEvent',\n message: 'Use the canonical Brandlab lead events: phone_call or contact_form.',\n matcher: (text) => retiredAnalyticsEvents.has(text),\n }),\n [RULE_IDS.noRawJsonLd]: noRawJsonLdRule,\n [RULE_IDS.noAllowIndexingTrue]: noAllowIndexingTrueRule,\n [RULE_IDS.noUnsafeRichTextSinks]: noUnsafeRichTextSinksRule,\n [RULE_IDS.noProtectedPlatformReimplementation]: noProtectedPlatformReimplementationRule,\n [RULE_IDS.noAnalyticsPii]: noAnalyticsPiiRule,\n [RULE_IDS.noUnsafeExternalLinks]: noUnsafeExternalLinksRule,\n [RULE_IDS.noRawImageElements]: noRawImageElementsRule,\n} satisfies Record<string, RuleModule>\n\ntype BrandlabPlugin = {\n rules: typeof rules\n configs: {\n recommended: {\n plugins: {\n brandlab: unknown\n }\n rules: Record<string, 'error'>\n }\n }\n}\n\nconst recommendedRules = Object.fromEntries(\n Object.keys(rules).map((ruleId) => [`brandlab/${ruleId}`, 'error' as const]),\n) as Record<string, 'error'>\n\nconst plugin: BrandlabPlugin = {\n rules,\n configs: {\n recommended: {\n plugins: {\n brandlab: undefined,\n },\n rules: recommendedRules,\n },\n },\n}\n\nplugin.configs.recommended.plugins.brandlab = plugin\n\nexport default plugin\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brandlab-digital/eslint-plugin",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/RomieDandan/brandlab.git",