@brandlab-digital/eslint-plugin 0.1.0-alpha.0 → 0.1.0-alpha.10

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/dist/index.d.ts CHANGED
@@ -5,7 +5,13 @@ type ReportDescriptor = {
5
5
  };
6
6
  type RuleContext = {
7
7
  getFilename?: () => string;
8
+ getSourceCode?: () => {
9
+ getText?: (node: unknown) => string;
10
+ };
8
11
  report: (descriptor: ReportDescriptor) => void;
12
+ sourceCode?: {
13
+ getText?: (node: unknown) => string;
14
+ };
9
15
  };
10
16
  type Visitor = Record<string, (node: unknown) => void>;
11
17
  type RuleModule = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,WAAW,CAAC,EAAE,MAAM,MAAM,CAAA;IAC1B,MAAM,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAA;CAC/C,CAAA;AAED,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;AA+DD,eAAO,MAAM,KAAK;;;;;CA4BoB,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;AAED,QAAA,MAAM,MAAM,EAAE,cAeb,CAAA;AAID,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,KAAK,WAAW,GAAG;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,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;AAED,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;AAiHD,eAAO,MAAM,KAAK;;;;;CAuBoB,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;AAED,QAAA,MAAM,MAAM,EAAE,cAeb,CAAA;AAID,eAAe,MAAM,CAAA"}
package/dist/index.js CHANGED
@@ -41,6 +41,47 @@ function createTextRule(options) {
41
41
  },
42
42
  };
43
43
  }
44
+ function getSourceText(context, node) {
45
+ const sourceCode = context.sourceCode ?? context.getSourceCode?.();
46
+ return sourceCode?.getText?.(node) ?? '';
47
+ }
48
+ function containsAllowIndexingTrue(text) {
49
+ return (text.includes('ALLOW_INDEXING=true') ||
50
+ /ALLOW_INDEXING[\s\S]{0,80}['"]true['"]/.test(text));
51
+ }
52
+ const noAllowIndexingTrueRule = {
53
+ meta: {
54
+ type: 'problem',
55
+ docs: {
56
+ description: 'Disallow ALLOW_INDEXING=true; only ALLOW_INDEXING=1 is supported.',
57
+ recommended: true,
58
+ },
59
+ messages: {
60
+ allowIndexingTrue: 'Use ALLOW_INDEXING=1 as the only explicit indexing override.',
61
+ },
62
+ schema: [],
63
+ },
64
+ create(context) {
65
+ function inspectStringNode(node) {
66
+ const text = getNodeText(node);
67
+ if (text && containsAllowIndexingTrue(text)) {
68
+ context.report({ node, messageId: 'allowIndexingTrue' });
69
+ }
70
+ }
71
+ function inspectSourceNode(node) {
72
+ const text = getSourceText(context, node);
73
+ if (text && containsAllowIndexingTrue(text)) {
74
+ context.report({ node, messageId: 'allowIndexingTrue' });
75
+ }
76
+ }
77
+ return {
78
+ BinaryExpression: inspectSourceNode,
79
+ Literal: inspectStringNode,
80
+ Property: inspectSourceNode,
81
+ TemplateElement: inspectStringNode,
82
+ };
83
+ },
84
+ };
44
85
  const legacyAnalyticsEvents = new Set([
45
86
  'contact_form_submission',
46
87
  'phone_calls',
@@ -63,12 +104,7 @@ export const rules = {
63
104
  return text === 'application/ld+json' && !filename.endsWith('SchemaScript.tsx');
64
105
  },
65
106
  }),
66
- 'no-allow-indexing-true': createTextRule({
67
- description: 'Disallow ALLOW_INDEXING=true; only ALLOW_INDEXING=1 is supported.',
68
- messageId: 'allowIndexingTrue',
69
- message: 'Use ALLOW_INDEXING=1 as the only explicit indexing override.',
70
- matcher: (text) => text.includes('ALLOW_INDEXING=true') || text === 'true',
71
- }),
107
+ 'no-allow-indexing-true': noAllowIndexingTrueRule,
72
108
  'no-unsafe-rich-text-sinks': createTextRule({
73
109
  description: 'Disallow visible rich text sinks that bypass a sanitizer.',
74
110
  messageId: 'unsafeRichTextSink',
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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"}
package/package.json CHANGED
@@ -1,10 +1,12 @@
1
1
  {
2
2
  "name": "@brandlab-digital/eslint-plugin",
3
- "version": "0.1.0-alpha.0",
3
+ "version": "0.1.0-alpha.10",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
- "files": ["dist"],
7
+ "files": [
8
+ "dist"
9
+ ],
8
10
  "scripts": {
9
11
  "build": "tsc -p tsconfig.json",
10
12
  "test": "vitest run",