@memberjunction/global 5.30.0 → 5.31.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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MultiProviderCompliance.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiProviderCompliance.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/MultiProviderCompliance.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Multi-Provider Compliance Tests (Strict)
3
+ *
4
+ * Scans the MemberJunction source tree for `new Metadata()` and `Metadata.Provider`
5
+ * references — patterns that resolve to the **process-global** default
6
+ * `IMetadataProvider`. These are bugs in any code path that should be per-provider:
7
+ * - Multi-provider clients (parallel server connections)
8
+ * - Server-side request handlers (transaction isolation)
9
+ * - Any class that already owns a provider via `this.ProviderToUse` / `this`
10
+ *
11
+ * See [/CLAUDE.md] section "Don't Reach for the Global Metadata Provider in
12
+ * Per-Provider Code Paths" for the rule and migration patterns.
13
+ *
14
+ * ## Strict mode
15
+ *
16
+ * The migration completed in `multi-provider-threading` (Phase 6 acceptance
17
+ * criterion). The previous ratchet baseline has been deleted. The test now
18
+ * fails on **any** non-allowlisted violation — no per-package allowance.
19
+ *
20
+ * Lines are exempt from the violation count if any of the following hold:
21
+ * 1. They are pure comments / JSDoc (start with `//`, `*`, or `/*`).
22
+ * 2. They are imports.
23
+ * 3. They use the recommended fallback pattern: `provider ?? new Metadata()`
24
+ * or `provider ?? Metadata.Provider`. The `??` operator clearly marks
25
+ * "use the supplied provider, or fall back to global", which is the
26
+ * legitimate terminal state for a helper that accepts an optional
27
+ * provider parameter.
28
+ * 4. They have an inline allowlist comment: `// global-provider-ok: <reason>`
29
+ * anywhere on the line. Use sparingly and document the reason — these
30
+ * are reviewed in PRs.
31
+ *
32
+ * ## How to fix a violation
33
+ *
34
+ * - **Inside a class with a bound provider** (ProviderBase, BaseEngine,
35
+ * BaseEntity, BaseAngularComponent subclass): use `this.ProviderToUse`
36
+ * (or `this` when the class IS the provider).
37
+ * - **Inside a helper function**: accept an optional `provider?: IMetadataProvider`
38
+ * parameter and use the `??` fallback pattern (exempt from the scanner).
39
+ * - **Inside genuinely global / bootstrap / CLI / codegen code**: append
40
+ * `// global-provider-ok: <specific reason>` on the same line.
41
+ */
42
+ import { describe, it, expect } from 'vitest';
43
+ import * as fs from 'fs';
44
+ import * as path from 'path';
45
+ const SCAN_ROOT = path.resolve(__dirname, '..', '..', '..'); // packages/
46
+ /** Anti-pattern regexes — match a global-provider reference. */
47
+ const PATTERNS = [
48
+ /\bnew\s+Metadata\s*\(\s*\)/,
49
+ /\bMetadata\.Provider\b/,
50
+ ];
51
+ /**
52
+ * Patterns that indicate a LEGITIMATE global fallback inside an otherwise provider-aware
53
+ * helper. These are the recommended terminal state: a method that accepts
54
+ * `provider?: IMetadataProvider` and falls back to the global default when the
55
+ * caller doesn't supply one. The `??` operator clearly marks "use the supplied
56
+ * provider, or fall back to global." Counting these as violations would penalize
57
+ * the right pattern.
58
+ */
59
+ const FALLBACK_PATTERNS = [
60
+ /\?\?\s*\(?\s*new\s+Metadata\s*\(\s*\)/,
61
+ /\?\?\s*Metadata\.Provider\b/,
62
+ ];
63
+ /** Inline allowlist marker — line is intentional global use. */
64
+ const ALLOW_COMMENT = /\/\/\s*global-provider-ok\b/i;
65
+ /** Path patterns to skip during scan. Mirrors UUIDCompliance.test.ts. */
66
+ const EXCLUDE_PATH_PATTERNS = [
67
+ /node_modules/,
68
+ /\/dist\//,
69
+ /\/generated\//,
70
+ /\.test\.ts$/,
71
+ /\.spec\.ts$/,
72
+ /__tests__/,
73
+ /\.d\.ts$/,
74
+ /\.map$/,
75
+ /\.js$/,
76
+ ];
77
+ function shouldScanFile(filePath) {
78
+ if (!filePath.endsWith('.ts'))
79
+ return false;
80
+ return !EXCLUDE_PATH_PATTERNS.some(p => p.test(filePath));
81
+ }
82
+ function findTsFiles(dir) {
83
+ const results = [];
84
+ if (!fs.existsSync(dir))
85
+ return results;
86
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
87
+ for (const entry of entries) {
88
+ const fullPath = path.join(dir, entry.name);
89
+ if (entry.isDirectory()) {
90
+ // Hard-skip massive / irrelevant directories for performance
91
+ if (entry.name === 'node_modules' ||
92
+ entry.name === 'dist' ||
93
+ entry.name === '.git' ||
94
+ entry.name === 'generated' ||
95
+ entry.name === '__tests__') {
96
+ continue;
97
+ }
98
+ results.push(...findTsFiles(fullPath));
99
+ }
100
+ else if (shouldScanFile(fullPath)) {
101
+ results.push(fullPath);
102
+ }
103
+ }
104
+ return results;
105
+ }
106
+ function scanFile(filePath) {
107
+ const violations = [];
108
+ const content = fs.readFileSync(filePath, 'utf-8');
109
+ const lines = content.split('\n');
110
+ const relativePath = path.relative(SCAN_ROOT, filePath);
111
+ for (let i = 0; i < lines.length; i++) {
112
+ const line = lines[i];
113
+ const trimmed = line.trim();
114
+ // Skip pure comment lines (block / line comments / JSDoc)
115
+ if (trimmed.startsWith('//') || trimmed.startsWith('*') || trimmed.startsWith('/*'))
116
+ continue;
117
+ // Skip imports — `import { Metadata } from ...` is not a use site
118
+ if (trimmed.startsWith('import '))
119
+ continue;
120
+ // Skip lines explicitly allowlisted with the marker comment
121
+ if (ALLOW_COMMENT.test(line))
122
+ continue;
123
+ // Skip the legitimate `provider ?? new Metadata()` / `?? Metadata.Provider` fallback
124
+ // pattern — that's the recommended terminal state for provider-aware helpers.
125
+ if (FALLBACK_PATTERNS.some(p => p.test(line)))
126
+ continue;
127
+ for (const pattern of PATTERNS) {
128
+ if (pattern.test(line)) {
129
+ violations.push({
130
+ file: relativePath,
131
+ line: i + 1,
132
+ content: trimmed.substring(0, 160),
133
+ });
134
+ break;
135
+ }
136
+ }
137
+ }
138
+ return violations;
139
+ }
140
+ describe('Multi-Provider Compliance', () => {
141
+ it('should not have any non-allowlisted `new Metadata()` or `Metadata.Provider` references', () => {
142
+ const tsFiles = findTsFiles(SCAN_ROOT);
143
+ const allViolations = [];
144
+ for (const file of tsFiles) {
145
+ allViolations.push(...scanFile(file));
146
+ }
147
+ if (allViolations.length === 0)
148
+ return;
149
+ const report = allViolations
150
+ .slice(0, 50)
151
+ .map(v => ` ${v.file}:${v.line}: ${v.content}`)
152
+ .join('\n');
153
+ const truncatedNote = allViolations.length > 50
154
+ ? `\n ... and ${allViolations.length - 50} more`
155
+ : '';
156
+ expect.fail(`Found ${allViolations.length} non-allowlisted global-provider reference(s):\n` +
157
+ `${report}${truncatedNote}\n\n` +
158
+ `In multi-provider scenarios (parallel client connections, transaction-isolated\n` +
159
+ `server requests), these silently use the wrong provider.\n\n` +
160
+ `How to fix:\n` +
161
+ ` 1. Inside a class with a bound provider: use \`this.ProviderToUse\`.\n` +
162
+ ` 2. Inside a helper function: accept \`provider?: IMetadataProvider\` and use\n` +
163
+ ` the recommended fallback: \`const md = provider ?? new Metadata();\` (the \`??\`\n` +
164
+ ` form is recognized as a legitimate fallback by this scanner).\n` +
165
+ ` 3. Genuinely global / bootstrap / CLI / codegen code: append\n` +
166
+ ` \`// global-provider-ok: <specific reason>\` on the same line.\n\n` +
167
+ `See /CLAUDE.md "Don't Reach for the Global Metadata Provider in Per-Provider\n` +
168
+ `Code Paths" for the full rule and patterns.`);
169
+ });
170
+ });
171
+ //# sourceMappingURL=MultiProviderCompliance.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiProviderCompliance.test.js","sourceRoot":"","sources":["../../src/__tests__/MultiProviderCompliance.test.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,16 @@ const ANTI_PATTERNS = [
23
23
  /!==\s*\w+\.ID\b/, // something !== x.ID
24
24
  /\.includes\(\w+\.ID\b\)/, // array.includes(x.ID) — uses === internally
25
25
  ];
26
- /** Files/directories to exclude from scanning */
26
+ /**
27
+ * Files/directories to exclude from scanning.
28
+ *
29
+ * Each pattern is matched against the path with both `\` and `/` separators.
30
+ * On Windows, `path.join` and `fs.readdirSync` produce backslash-separated
31
+ * paths; the previous version of these patterns used `/dist/` and `/generated/`
32
+ * which silently never matched on Windows, producing false-positive flags for
33
+ * generated entity_subclasses.ts, etc. Each scan now normalizes the candidate
34
+ * path to forward slashes before testing.
35
+ */
27
36
  const EXCLUDE_PATTERNS = [
28
37
  /node_modules/,
29
38
  /\/dist\//,
@@ -37,16 +46,26 @@ const EXCLUDE_PATTERNS = [
37
46
  /\.map$/, // Skip source maps
38
47
  /package-lock\.json$/,
39
48
  ];
40
- /** Known exceptions — files where .ID === is comparing non-UUID values (e.g., numeric IDs, string enum values) */
49
+ /** Known exceptions — files where .ID === is comparing non-UUID values (e.g., numeric IDs, string enum values).
50
+ * Keys MUST use forward slashes; the test normalizes scanned paths to forward slashes before lookup so
51
+ * the same exception list works on Windows and Unix. */
41
52
  const KNOWN_EXCEPTIONS = {
42
53
  // Add file paths (relative to packages/) and the reason they're excepted
43
54
  // Example: 'SomePackage/src/file.ts': ['Uses numeric IDs, not UUIDs'],
44
55
  'Angular/Explorer/dashboards/src/Integration/components/mapping-workspace/mapping-workspace.component.ts': ['LocalID is a local string identifier (e.g. "pending-1"), not a UUID'],
45
56
  };
57
+ /** Normalize a path to forward slashes so EXCLUDE_PATTERNS and KNOWN_EXCEPTIONS lookups
58
+ * work identically on Windows and Unix. Without this, `\generated\` on Windows
59
+ * silently bypasses the `/generated/` filter and the test reports false positives
60
+ * in auto-generated code. */
61
+ function normalizePath(filePath) {
62
+ return filePath.replace(/\\/g, '/');
63
+ }
46
64
  function shouldScanFile(filePath) {
47
65
  if (!filePath.endsWith('.ts'))
48
66
  return false;
49
- return !EXCLUDE_PATTERNS.some(pattern => pattern.test(filePath));
67
+ const normalized = normalizePath(filePath);
68
+ return !EXCLUDE_PATTERNS.some(pattern => pattern.test(normalized));
50
69
  }
51
70
  function findTsFiles(dir) {
52
71
  const results = [];
@@ -71,8 +90,11 @@ function scanFileForViolations(filePath) {
71
90
  const violations = [];
72
91
  const content = fs.readFileSync(filePath, 'utf-8');
73
92
  const lines = content.split('\n');
74
- // Check if file is in known exceptions
75
- const relativePath = path.relative(SCAN_ROOT, filePath);
93
+ // Check if file is in known exceptions. Normalize to forward slashes —
94
+ // path.relative produces backslash-separated paths on Windows, but
95
+ // KNOWN_EXCEPTIONS keys are intentionally written with forward slashes
96
+ // for cross-platform readability.
97
+ const relativePath = normalizePath(path.relative(SCAN_ROOT, filePath));
76
98
  if (KNOWN_EXCEPTIONS[relativePath]) {
77
99
  return [];
78
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UUIDCompliance.test.js","sourceRoot":"","sources":["../../src/__tests__/UUIDCompliance.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UUIDCompliance.test.js","sourceRoot":"","sources":["../../src/__tests__/UUIDCompliance.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,0EAA0E;AAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY;AAEzE,oEAAoE;AACpE,MAAM,aAAa,GAAG;IAClB,qDAAqD,EAAM,sDAAsD;IACjH,iBAAiB,EAA2C,qBAAqB;IACjF,qDAAqD,EAAM,kBAAkB;IAC7E,iBAAiB,EAA2C,qBAAqB;IACjF,yBAAyB,EAAoC,6CAA6C;CAC7G,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,gBAAgB,GAAG;IACrB,cAAc;IACd,UAAU;IACV,eAAe;IACf,aAAa;IACb,aAAa;IACb,WAAW;IACX,gBAAgB,EAAY,qBAAqB;IACjD,OAAO,EAAqB,8BAA8B;IAC1D,UAAU,EAAkB,yBAAyB;IACrD,QAAQ,EAAoB,mBAAmB;IAC/C,qBAAqB;CACxB,CAAC;AAEF;;yDAEyD;AACzD,MAAM,gBAAgB,GAA6B;IAC/C,yEAAyE;IACzE,uEAAuE;IACvE,yGAAyG,EAAE,CAAC,qEAAqE,CAAC;CACrL,CAAC;AAEF;;;8BAG8B;AAC9B,SAAS,aAAa,CAAC,QAAgB;IACnC,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC5B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAExC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACtB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAClF,SAAS,CAAC,kDAAkD;YAChE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AASD,SAAS,qBAAqB,CAAC,QAAgB;IAC3C,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,uEAAuE;IACvE,mEAAmE;IACnE,uEAAuE;IACvE,kCAAkC;IAClC,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvE,IAAI,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC;IACd,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,gBAAgB;QAChB,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAClF,SAAS;QACb,CAAC;QAED,oBAAoB;QACpB,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,SAAS;QACb,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,6GAA6G;gBAC7G,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS,CAAO,4BAA4B;gBAC/G,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS,CAAmC,kCAAkC;gBACtH,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS,CAAoB,0CAA0C;gBAC/H,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS,CAAkC,eAAe;gBACnG,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS,CAAE,uBAAuB;gBACjH,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS,CAAE,+BAA+B;gBAEzH,UAAU,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,CAAC,GAAG,CAAC;oBACX,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;oBAClC,OAAO,EAAE,OAAO,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBACH,MAAM,CAAC,mCAAmC;YAC9C,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC3E,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,aAAa,GAAgB,EAAE,CAAC;QAEtC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,aAAa;iBACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,CACP,SAAS,aAAa,CAAC,MAAM,6DAA6D,MAAM,MAAM;gBACtG,qBAAqB;gBACrB,+CAA+C;gBAC/C,gDAAgD;gBAChD,wEAAwE;gBACxE,oDAAoD;gBACpD,iGAAiG,CACpG,CAAC;QACN,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/global",
3
3
  "type": "module",
4
- "version": "5.30.0",
4
+ "version": "5.31.0",
5
5
  "description": "MemberJunction: Global Object - Needed for ALL other MJ components",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",