@common-stack/server-core 8.2.5-alpha.21 → 8.2.5-alpha.34
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/lib/connector/connector.js +1 -1
- package/lib/connector/connector.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -1
- package/lib/redis/generate-query-cache-key.d.ts +46 -0
- package/lib/redis/generate-query-cache-key.js +70 -0
- package/lib/redis/generate-query-cache-key.js.map +1 -0
- package/lib/redis/index.d.ts +11 -0
- package/lib/redis/redis-key-builder.d.ts +150 -0
- package/lib/redis/redis-key-builder.js +170 -0
- package/lib/redis/redis-key-builder.js.map +1 -0
- package/lib/redis/sanitize-redis-key.d.ts +85 -0
- package/lib/redis/sanitize-redis-key.js +95 -0
- package/lib/redis/sanitize-redis-key.js.map +1 -0
- package/lib/utils/index.d.ts +0 -1
- package/package.json +2 -2
- package/lib/utils/generate-query-cache-key.d.ts +0 -11
- package/lib/utils/generate-query-cache-key.js +0 -13
- package/lib/utils/generate-query-cache-key.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {merge,castArray,without,union,map}from'lodash-es';import {Container}from'inversify';import {transformPrefsToArray,getCurrentPreferences}from'../utils/preferences.js';import'
|
|
1
|
+
import {merge,castArray,without,union,map}from'lodash-es';import {Container}from'inversify';import {transformPrefsToArray,getCurrentPreferences}from'../utils/preferences.js';import'@graphql-tools/utils';import'graphql';const featureCatalog = {};
|
|
2
2
|
const combine = (features, extractor) => {
|
|
3
3
|
// Filter out undefined/null features and log warnings for them
|
|
4
4
|
const validFeatures = features.filter((feature, index) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.js","sources":["../../src/connector/connector.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connector.js","sources":["../../src/connector/connector.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{Feature,featureCatalog}from'./connector/connector.js';export{GraphqlRootType}from'./interfaces/rules.js';export{TYPES}from'./constants/types.js';export{CACHE_CONTROL_DIRECTIVE}from'./constants/directives.js';export{logger}from'./logger/logger.js';export{getCurrentPreferences,transformPrefsToArray}from'./utils/preferences.js';export{
|
|
1
|
+
export{Feature,featureCatalog}from'./connector/connector.js';export{GraphqlRootType}from'./interfaces/rules.js';export{TYPES}from'./constants/types.js';export{CACHE_CONTROL_DIRECTIVE}from'./constants/directives.js';export{logger}from'./logger/logger.js';export{getCurrentPreferences,transformPrefsToArray}from'./utils/preferences.js';export{extractTenantId}from'./utils/extract-tenant-id.js';export{getDirectiveArgsFromSchema}from'./utils/get-directive-args-from-schema.js';export{buildRedisKey,buildRedisKeyPattern,isHashLikeTenantId,sanitizeRedisKeyComponent}from'./redis/sanitize-redis-key.js';export{generateQueryCacheKey}from'./redis/generate-query-cache-key.js';export{RedisNamespace,buildRedisKeyPatternWithNamespace,buildRedisKeyWithNamespace,extractNamespaceFromRedisKey,extractTenantIdFromRedisKey,isValidRedisKeyWithNamespace,parseRedisKey}from'./redis/redis-key-builder.js';//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { DocumentNode } from 'graphql/language/index.js';
|
|
2
|
+
import { CdmLogger } from '@cdm-logger/core';
|
|
3
|
+
export type GenerateQueryCacheKeyOptions = {
|
|
4
|
+
query: string | DocumentNode;
|
|
5
|
+
variables: Record<string, unknown>;
|
|
6
|
+
userId?: string;
|
|
7
|
+
tenantId?: string;
|
|
8
|
+
appName?: string;
|
|
9
|
+
logger?: CdmLogger.ILogger;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Generates a cache key for GraphQL queries using standardized Redis key builder
|
|
13
|
+
*
|
|
14
|
+
* Key format: `[appName]:[tenantId]:[userId]:queryName:queryHash[:variablesHash]`
|
|
15
|
+
* or legacy format: `[tenantId]:[userId]:queryName:queryHash[:variablesHash]`
|
|
16
|
+
* - Query and variables are hashed for consistent, compact keys
|
|
17
|
+
* - Uses buildRedisKey for proper sanitization and validation
|
|
18
|
+
* - Optional components are omitted if not provided
|
|
19
|
+
*
|
|
20
|
+
* @param options - Cache key generation options
|
|
21
|
+
* @returns Generated cache key string
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* // With appName (recommended)
|
|
26
|
+
* generateQueryCacheKey({
|
|
27
|
+
* query: GetCurrentPagePermissionsDocument,
|
|
28
|
+
* variables: { resourceUri: '...' },
|
|
29
|
+
* userId: 'auth0|123',
|
|
30
|
+
* tenantId: 'default',
|
|
31
|
+
* appName: 'CDMBASE_TEST',
|
|
32
|
+
* logger: myLogger
|
|
33
|
+
* })
|
|
34
|
+
* // Returns: 'CDMBASE_TEST:default:auth0-123:currentPagePermissions:hash1:hash2'
|
|
35
|
+
*
|
|
36
|
+
* // Legacy format without appName (for backward compatibility)
|
|
37
|
+
* generateQueryCacheKey({
|
|
38
|
+
* query: GetCurrentPagePermissionsDocument,
|
|
39
|
+
* variables: { resourceUri: '...' },
|
|
40
|
+
* userId: 'auth0|123',
|
|
41
|
+
* tenantId: 'default',
|
|
42
|
+
* })
|
|
43
|
+
* // Returns: 'default:auth0-123:currentPagePermissions:hash1:hash2'
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare const generateQueryCacheKey: ({ query, variables, logger, userId, tenantId, appName, }: GenerateQueryCacheKeyOptions) => string;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import {createHash}from'crypto';import {print}from'graphql/language/index.js';import {buildRedisKey}from'./sanitize-redis-key.js';/**
|
|
2
|
+
* Generates a cache key for GraphQL queries using standardized Redis key builder
|
|
3
|
+
*
|
|
4
|
+
* Key format: `[appName]:[tenantId]:[userId]:queryName:queryHash[:variablesHash]`
|
|
5
|
+
* or legacy format: `[tenantId]:[userId]:queryName:queryHash[:variablesHash]`
|
|
6
|
+
* - Query and variables are hashed for consistent, compact keys
|
|
7
|
+
* - Uses buildRedisKey for proper sanitization and validation
|
|
8
|
+
* - Optional components are omitted if not provided
|
|
9
|
+
*
|
|
10
|
+
* @param options - Cache key generation options
|
|
11
|
+
* @returns Generated cache key string
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // With appName (recommended)
|
|
16
|
+
* generateQueryCacheKey({
|
|
17
|
+
* query: GetCurrentPagePermissionsDocument,
|
|
18
|
+
* variables: { resourceUri: '...' },
|
|
19
|
+
* userId: 'auth0|123',
|
|
20
|
+
* tenantId: 'default',
|
|
21
|
+
* appName: 'CDMBASE_TEST',
|
|
22
|
+
* logger: myLogger
|
|
23
|
+
* })
|
|
24
|
+
* // Returns: 'CDMBASE_TEST:default:auth0-123:currentPagePermissions:hash1:hash2'
|
|
25
|
+
*
|
|
26
|
+
* // Legacy format without appName (for backward compatibility)
|
|
27
|
+
* generateQueryCacheKey({
|
|
28
|
+
* query: GetCurrentPagePermissionsDocument,
|
|
29
|
+
* variables: { resourceUri: '...' },
|
|
30
|
+
* userId: 'auth0|123',
|
|
31
|
+
* tenantId: 'default',
|
|
32
|
+
* })
|
|
33
|
+
* // Returns: 'default:auth0-123:currentPagePermissions:hash1:hash2'
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
const generateQueryCacheKey = ({ query, variables, logger, userId, tenantId, appName, }) => {
|
|
37
|
+
const normalizedQuery = (typeof query === 'string' ? query : print(query)).trim();
|
|
38
|
+
const [, queryName] = normalizedQuery?.match(/{\s*(\w+)/) ?? [];
|
|
39
|
+
// Log the data right before hashing
|
|
40
|
+
if (logger) {
|
|
41
|
+
logger.trace('About to hash normalized query: [%s]', normalizedQuery);
|
|
42
|
+
logger.trace('About to hash variables: [%j]', variables);
|
|
43
|
+
}
|
|
44
|
+
const queryHash = createHash('sha256').update(normalizedQuery).digest('hex');
|
|
45
|
+
const variablesHash = variables ? createHash('sha256').update(JSON.stringify(variables)).digest('hex') : null;
|
|
46
|
+
// Build segments: queryName, queryHash, and optional variablesHash
|
|
47
|
+
const segments = [queryName, queryHash];
|
|
48
|
+
if (variablesHash) {
|
|
49
|
+
segments.push(variablesHash);
|
|
50
|
+
}
|
|
51
|
+
// If appName is provided, use the full standardized format
|
|
52
|
+
if (appName) {
|
|
53
|
+
return buildRedisKey({
|
|
54
|
+
appName,
|
|
55
|
+
tenantId,
|
|
56
|
+
userId,
|
|
57
|
+
segments,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
// Legacy format for backward compatibility (no appName)
|
|
61
|
+
// Still uses buildRedisKey for sanitization, but strips the appName prefix
|
|
62
|
+
const fullKey = buildRedisKey({
|
|
63
|
+
appName: '__temp__',
|
|
64
|
+
tenantId,
|
|
65
|
+
userId,
|
|
66
|
+
segments,
|
|
67
|
+
});
|
|
68
|
+
// Remove the temporary appName prefix: __temp__:
|
|
69
|
+
return fullKey.substring('__temp__:'.length);
|
|
70
|
+
};export{generateQueryCacheKey};//# sourceMappingURL=generate-query-cache-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-query-cache-key.js","sources":["../../src/redis/generate-query-cache-key.ts"],"sourcesContent":[null],"names":[],"mappings":"kIAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCG;AACU,MAAA,qBAAqB,GAAG,CAAC,EAClC,KAAK,EACL,SAAS,EACT,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,GACoB,KAAY;IACvC,MAAM,eAAe,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;AAClF,IAAA,MAAM,GAAG,SAAS,CAAC,GAAG,eAAe,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;;IAGhE,IAAI,MAAM,EAAE;AACR,QAAA,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,eAAe,CAAC,CAAC;AACtE,QAAA,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,SAAS,CAAC,CAAC;KAC5D;AAED,IAAA,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7E,IAAA,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;;AAG9G,IAAA,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACxC,IAAI,aAAa,EAAE;AACf,QAAA,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAChC;;IAGD,IAAI,OAAO,EAAE;AACT,QAAA,OAAO,aAAa,CAAC;YACjB,OAAO;YACP,QAAQ;YACR,MAAM;YACN,QAAQ;AACX,SAAA,CAAC,CAAC;KACN;;;IAID,MAAM,OAAO,GAAG,aAAa,CAAC;AAC1B,QAAA,OAAO,EAAE,UAAU;QACnB,QAAQ;QACR,MAAM;QACN,QAAQ;AACX,KAAA,CAAC,CAAC;;IAGH,OAAO,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACjD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis utilities for key management, sanitization, and cache key generation
|
|
3
|
+
*
|
|
4
|
+
* This module provides a centralized set of utilities for working with Redis keys
|
|
5
|
+
* to ensure consistency across the application and proper tenant isolation.
|
|
6
|
+
*
|
|
7
|
+
* @module redis
|
|
8
|
+
*/
|
|
9
|
+
export { sanitizeRedisKeyComponent, isHashLikeTenantId, buildRedisKey, buildRedisKeyPattern, type BuildRedisKeyOptions, } from './sanitize-redis-key';
|
|
10
|
+
export { generateQueryCacheKey, type GenerateQueryCacheKeyOptions } from './generate-query-cache-key';
|
|
11
|
+
export { buildRedisKeyWithNamespace, buildRedisKeyPatternWithNamespace, RedisNamespace, extractTenantIdFromRedisKey, extractNamespaceFromRedisKey, isValidRedisKeyWithNamespace, parseRedisKey, type RedisKeyBuilderOptions, type RedisNamespaceType, type ParsedRedisKey, } from './redis-key-builder';
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized Redis Key Builder
|
|
3
|
+
*
|
|
4
|
+
* Enforces consistent Redis key formatting across the entire application.
|
|
5
|
+
* Standard format: <APP_NAME>:<tenantId>:<namespace>:<...segments>
|
|
6
|
+
*
|
|
7
|
+
* Key Design Principles:
|
|
8
|
+
* 1. All keys MUST start with APP_NAME for application isolation
|
|
9
|
+
* 2. All keys SHOULD include tenantId for multi-tenancy (use 'default' if no tenant context)
|
|
10
|
+
* 3. Keys are sanitized to remove invalid Redis characters
|
|
11
|
+
* 4. Use namespaces to organize keys by domain/feature
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Options for building Redis keys with namespace support
|
|
15
|
+
*/
|
|
16
|
+
export interface RedisKeyBuilderOptions {
|
|
17
|
+
/** Application name for key prefix (e.g., 'CDMBASE_TEST') */
|
|
18
|
+
appName: string;
|
|
19
|
+
/** Tenant ID for multi-tenancy. Use 'default' for global/system keys */
|
|
20
|
+
tenantId?: string;
|
|
21
|
+
/** Namespace for organizing keys (e.g., 'cache', 'session', 'tenant', 'config') */
|
|
22
|
+
namespace: string;
|
|
23
|
+
/** Additional key segments (e.g., ['user', userId] or ['query', queryName]) */
|
|
24
|
+
segments: string[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Builds a standardized Redis key with namespace and consistent formatting
|
|
28
|
+
*
|
|
29
|
+
* Format: <APP_NAME>:<tenantId>:<namespace>:<segment1>:<segment2>:...
|
|
30
|
+
*
|
|
31
|
+
* @param options - Key building options
|
|
32
|
+
* @returns Formatted and sanitized Redis key
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* // Cache key with tenant
|
|
37
|
+
* buildRedisKeyWithNamespace({
|
|
38
|
+
* appName: 'CDMBASE_TEST',
|
|
39
|
+
* tenantId: 'tenant-123',
|
|
40
|
+
* namespace: 'cache',
|
|
41
|
+
* segments: ['user', userId, 'profile']
|
|
42
|
+
* });
|
|
43
|
+
* // => "CDMBASE_TEST:tenant-123:cache:user:auth0-123:profile"
|
|
44
|
+
*
|
|
45
|
+
* // Global configuration key
|
|
46
|
+
* buildRedisKeyWithNamespace({
|
|
47
|
+
* appName: 'CDMBASE_TEST',
|
|
48
|
+
* tenantId: 'default',
|
|
49
|
+
* namespace: 'config',
|
|
50
|
+
* segments: ['extension', 'permissions']
|
|
51
|
+
* });
|
|
52
|
+
* // => "CDMBASE_TEST:default:config:extension:permissions"
|
|
53
|
+
*
|
|
54
|
+
* // Session key without tenant
|
|
55
|
+
* buildRedisKeyWithNamespace({
|
|
56
|
+
* appName: 'CDMBASE_TEST',
|
|
57
|
+
* namespace: 'session',
|
|
58
|
+
* segments: ['abc123']
|
|
59
|
+
* });
|
|
60
|
+
* // => "CDMBASE_TEST:default:session:abc123"
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function buildRedisKeyWithNamespace(options: RedisKeyBuilderOptions): string;
|
|
64
|
+
/**
|
|
65
|
+
* Builds a wildcard pattern for Redis KEYS command with namespace support
|
|
66
|
+
*
|
|
67
|
+
* @param options - Key building options (segments can include '*' wildcards)
|
|
68
|
+
* @returns Redis key pattern for matching multiple keys
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* // Match all cache keys for a tenant
|
|
73
|
+
* buildRedisKeyPatternWithNamespace({
|
|
74
|
+
* appName: 'CDMBASE_TEST',
|
|
75
|
+
* tenantId: 'tenant-123',
|
|
76
|
+
* namespace: 'cache',
|
|
77
|
+
* segments: ['*']
|
|
78
|
+
* });
|
|
79
|
+
* // => "CDMBASE_TEST:tenant-123:cache:*"
|
|
80
|
+
*
|
|
81
|
+
* // Match all user cache keys across all tenants
|
|
82
|
+
* buildRedisKeyPatternWithNamespace({
|
|
83
|
+
* appName: 'CDMBASE_TEST',
|
|
84
|
+
* tenantId: '*',
|
|
85
|
+
* namespace: 'cache',
|
|
86
|
+
* segments: ['user', '*']
|
|
87
|
+
* });
|
|
88
|
+
* // => "CDMBASE_TEST:*:cache:user:*"
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare function buildRedisKeyPatternWithNamespace(options: RedisKeyBuilderOptions): string;
|
|
92
|
+
/**
|
|
93
|
+
* Common namespaces used across the application
|
|
94
|
+
* These provide a standardized vocabulary for organizing Redis keys
|
|
95
|
+
*/
|
|
96
|
+
export declare const RedisNamespace: {
|
|
97
|
+
/** GraphQL/API response caching */
|
|
98
|
+
readonly CACHE: "cache";
|
|
99
|
+
/** User session data */
|
|
100
|
+
readonly SESSION: "session";
|
|
101
|
+
/** Tenant information cache */
|
|
102
|
+
readonly TENANT: "tenant";
|
|
103
|
+
/** Configuration and settings */
|
|
104
|
+
readonly CONFIG: "config";
|
|
105
|
+
/** Extension/plugin data */
|
|
106
|
+
readonly EXTENSION: "extension";
|
|
107
|
+
/** Contribution points */
|
|
108
|
+
readonly CONTRIBUTION: "contribution";
|
|
109
|
+
/** Request-scoped storage */
|
|
110
|
+
readonly STORAGE: "storage";
|
|
111
|
+
/** Permission and access control */
|
|
112
|
+
readonly PERMISSION: "permission";
|
|
113
|
+
/** Temporary/TTL based data */
|
|
114
|
+
readonly TEMP: "temp";
|
|
115
|
+
};
|
|
116
|
+
export type RedisNamespaceType = (typeof RedisNamespace)[keyof typeof RedisNamespace];
|
|
117
|
+
/**
|
|
118
|
+
* Extracts tenant ID from a Redis key if present
|
|
119
|
+
*
|
|
120
|
+
* @param key - Redis key to parse
|
|
121
|
+
* @returns Tenant ID or null if not found/parseable
|
|
122
|
+
*/
|
|
123
|
+
export declare function extractTenantIdFromRedisKey(key: string): string | null;
|
|
124
|
+
/**
|
|
125
|
+
* Extracts namespace from a Redis key if present
|
|
126
|
+
*
|
|
127
|
+
* @param key - Redis key to parse
|
|
128
|
+
* @returns Namespace or null if not found/parseable
|
|
129
|
+
*/
|
|
130
|
+
export declare function extractNamespaceFromRedisKey(key: string): string | null;
|
|
131
|
+
/**
|
|
132
|
+
* Validates if a key follows the standard format with namespace
|
|
133
|
+
*
|
|
134
|
+
* @param key - Redis key to validate
|
|
135
|
+
* @returns True if key follows standard format
|
|
136
|
+
*/
|
|
137
|
+
export declare function isValidRedisKeyWithNamespace(key: string): boolean;
|
|
138
|
+
/**
|
|
139
|
+
* Parses a Redis key into its components
|
|
140
|
+
*
|
|
141
|
+
* @param key - Redis key to parse
|
|
142
|
+
* @returns Parsed key components or null if invalid
|
|
143
|
+
*/
|
|
144
|
+
export interface ParsedRedisKey {
|
|
145
|
+
appName: string;
|
|
146
|
+
tenantId: string;
|
|
147
|
+
namespace: string;
|
|
148
|
+
segments: string[];
|
|
149
|
+
}
|
|
150
|
+
export declare function parseRedisKey(key: string): ParsedRedisKey | null;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import {sanitizeRedisKeyComponent}from'./sanitize-redis-key.js';/**
|
|
2
|
+
* Centralized Redis Key Builder
|
|
3
|
+
*
|
|
4
|
+
* Enforces consistent Redis key formatting across the entire application.
|
|
5
|
+
* Standard format: <APP_NAME>:<tenantId>:<namespace>:<...segments>
|
|
6
|
+
*
|
|
7
|
+
* Key Design Principles:
|
|
8
|
+
* 1. All keys MUST start with APP_NAME for application isolation
|
|
9
|
+
* 2. All keys SHOULD include tenantId for multi-tenancy (use 'default' if no tenant context)
|
|
10
|
+
* 3. Keys are sanitized to remove invalid Redis characters
|
|
11
|
+
* 4. Use namespaces to organize keys by domain/feature
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Builds a standardized Redis key with namespace and consistent formatting
|
|
15
|
+
*
|
|
16
|
+
* Format: <APP_NAME>:<tenantId>:<namespace>:<segment1>:<segment2>:...
|
|
17
|
+
*
|
|
18
|
+
* @param options - Key building options
|
|
19
|
+
* @returns Formatted and sanitized Redis key
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* // Cache key with tenant
|
|
24
|
+
* buildRedisKeyWithNamespace({
|
|
25
|
+
* appName: 'CDMBASE_TEST',
|
|
26
|
+
* tenantId: 'tenant-123',
|
|
27
|
+
* namespace: 'cache',
|
|
28
|
+
* segments: ['user', userId, 'profile']
|
|
29
|
+
* });
|
|
30
|
+
* // => "CDMBASE_TEST:tenant-123:cache:user:auth0-123:profile"
|
|
31
|
+
*
|
|
32
|
+
* // Global configuration key
|
|
33
|
+
* buildRedisKeyWithNamespace({
|
|
34
|
+
* appName: 'CDMBASE_TEST',
|
|
35
|
+
* tenantId: 'default',
|
|
36
|
+
* namespace: 'config',
|
|
37
|
+
* segments: ['extension', 'permissions']
|
|
38
|
+
* });
|
|
39
|
+
* // => "CDMBASE_TEST:default:config:extension:permissions"
|
|
40
|
+
*
|
|
41
|
+
* // Session key without tenant
|
|
42
|
+
* buildRedisKeyWithNamespace({
|
|
43
|
+
* appName: 'CDMBASE_TEST',
|
|
44
|
+
* namespace: 'session',
|
|
45
|
+
* segments: ['abc123']
|
|
46
|
+
* });
|
|
47
|
+
* // => "CDMBASE_TEST:default:session:abc123"
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
function buildRedisKeyWithNamespace(options) {
|
|
51
|
+
const { appName, tenantId = 'default', namespace, segments } = options;
|
|
52
|
+
// Sanitize all components
|
|
53
|
+
const sanitizedAppName = sanitizeRedisKeyComponent(appName);
|
|
54
|
+
const sanitizedTenantId = sanitizeRedisKeyComponent(tenantId);
|
|
55
|
+
const sanitizedNamespace = sanitizeRedisKeyComponent(namespace);
|
|
56
|
+
const sanitizedSegments = segments.map(sanitizeRedisKeyComponent);
|
|
57
|
+
// Build key with consistent format
|
|
58
|
+
return [sanitizedAppName, sanitizedTenantId, sanitizedNamespace, ...sanitizedSegments].join(':');
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Builds a wildcard pattern for Redis KEYS command with namespace support
|
|
62
|
+
*
|
|
63
|
+
* @param options - Key building options (segments can include '*' wildcards)
|
|
64
|
+
* @returns Redis key pattern for matching multiple keys
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* // Match all cache keys for a tenant
|
|
69
|
+
* buildRedisKeyPatternWithNamespace({
|
|
70
|
+
* appName: 'CDMBASE_TEST',
|
|
71
|
+
* tenantId: 'tenant-123',
|
|
72
|
+
* namespace: 'cache',
|
|
73
|
+
* segments: ['*']
|
|
74
|
+
* });
|
|
75
|
+
* // => "CDMBASE_TEST:tenant-123:cache:*"
|
|
76
|
+
*
|
|
77
|
+
* // Match all user cache keys across all tenants
|
|
78
|
+
* buildRedisKeyPatternWithNamespace({
|
|
79
|
+
* appName: 'CDMBASE_TEST',
|
|
80
|
+
* tenantId: '*',
|
|
81
|
+
* namespace: 'cache',
|
|
82
|
+
* segments: ['user', '*']
|
|
83
|
+
* });
|
|
84
|
+
* // => "CDMBASE_TEST:*:cache:user:*"
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
function buildRedisKeyPatternWithNamespace(options) {
|
|
88
|
+
// For patterns, allow '*' to pass through without sanitization
|
|
89
|
+
const { appName, tenantId = '*', namespace, segments } = options;
|
|
90
|
+
const sanitizedAppName = sanitizeRedisKeyComponent(appName);
|
|
91
|
+
const sanitizedTenantId = tenantId === '*' ? '*' : sanitizeRedisKeyComponent(tenantId);
|
|
92
|
+
const sanitizedNamespace = sanitizeRedisKeyComponent(namespace);
|
|
93
|
+
const sanitizedSegments = segments.map((seg) => (seg === '*' ? '*' : sanitizeRedisKeyComponent(seg)));
|
|
94
|
+
return [sanitizedAppName, sanitizedTenantId, sanitizedNamespace, ...sanitizedSegments].join(':');
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Common namespaces used across the application
|
|
98
|
+
* These provide a standardized vocabulary for organizing Redis keys
|
|
99
|
+
*/
|
|
100
|
+
const RedisNamespace = {
|
|
101
|
+
/** GraphQL/API response caching */
|
|
102
|
+
CACHE: 'cache',
|
|
103
|
+
/** User session data */
|
|
104
|
+
SESSION: 'session',
|
|
105
|
+
/** Tenant information cache */
|
|
106
|
+
TENANT: 'tenant',
|
|
107
|
+
/** Configuration and settings */
|
|
108
|
+
CONFIG: 'config',
|
|
109
|
+
/** Extension/plugin data */
|
|
110
|
+
EXTENSION: 'extension',
|
|
111
|
+
/** Contribution points */
|
|
112
|
+
CONTRIBUTION: 'contribution',
|
|
113
|
+
/** Request-scoped storage */
|
|
114
|
+
STORAGE: 'storage',
|
|
115
|
+
/** Permission and access control */
|
|
116
|
+
PERMISSION: 'permission',
|
|
117
|
+
/** Temporary/TTL based data */
|
|
118
|
+
TEMP: 'temp',
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Extracts tenant ID from a Redis key if present
|
|
122
|
+
*
|
|
123
|
+
* @param key - Redis key to parse
|
|
124
|
+
* @returns Tenant ID or null if not found/parseable
|
|
125
|
+
*/
|
|
126
|
+
function extractTenantIdFromRedisKey(key) {
|
|
127
|
+
const parts = key.split(':');
|
|
128
|
+
// Format: APP_NAME:tenantId:namespace:...
|
|
129
|
+
if (parts.length >= 3) {
|
|
130
|
+
return parts[1];
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Extracts namespace from a Redis key if present
|
|
136
|
+
*
|
|
137
|
+
* @param key - Redis key to parse
|
|
138
|
+
* @returns Namespace or null if not found/parseable
|
|
139
|
+
*/
|
|
140
|
+
function extractNamespaceFromRedisKey(key) {
|
|
141
|
+
const parts = key.split(':');
|
|
142
|
+
// Format: APP_NAME:tenantId:namespace:...
|
|
143
|
+
if (parts.length >= 3) {
|
|
144
|
+
return parts[2];
|
|
145
|
+
}
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Validates if a key follows the standard format with namespace
|
|
150
|
+
*
|
|
151
|
+
* @param key - Redis key to validate
|
|
152
|
+
* @returns True if key follows standard format
|
|
153
|
+
*/
|
|
154
|
+
function isValidRedisKeyWithNamespace(key) {
|
|
155
|
+
const parts = key.split(':');
|
|
156
|
+
// Minimum format: APP_NAME:tenantId:namespace
|
|
157
|
+
return parts.length >= 3 && parts[0].length > 0 && parts[1].length > 0 && parts[2].length > 0;
|
|
158
|
+
}
|
|
159
|
+
function parseRedisKey(key) {
|
|
160
|
+
const parts = key.split(':');
|
|
161
|
+
if (parts.length < 3) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
appName: parts[0],
|
|
166
|
+
tenantId: parts[1],
|
|
167
|
+
namespace: parts[2],
|
|
168
|
+
segments: parts.slice(3),
|
|
169
|
+
};
|
|
170
|
+
}export{RedisNamespace,buildRedisKeyPatternWithNamespace,buildRedisKeyWithNamespace,extractNamespaceFromRedisKey,extractTenantIdFromRedisKey,isValidRedisKeyWithNamespace,parseRedisKey};//# sourceMappingURL=redis-key-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-key-builder.js","sources":["../../src/redis/redis-key-builder.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sanitizes a Redis key component to ensure it's valid and safe
|
|
3
|
+
*
|
|
4
|
+
* Redis keys can contain any binary sequence, but for best practices and compatibility:
|
|
5
|
+
* - Avoid whitespace (spaces, tabs, newlines) - replace with underscores
|
|
6
|
+
* - Avoid pipes (|) which are used in Auth0 userIds - replace with hyphens
|
|
7
|
+
* - Avoid quotes and backslashes that could cause escaping issues - remove them
|
|
8
|
+
* - Avoid control characters - remove them
|
|
9
|
+
*
|
|
10
|
+
* @param str - The string component to sanitize
|
|
11
|
+
* @returns Sanitized string safe for use in Redis keys
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* sanitizeRedisKeyComponent('auth0|6120ecbb1e5c68006aabe17a')
|
|
16
|
+
* // Returns: 'auth0-6120ecbb1e5c68006aabe17a'
|
|
17
|
+
*
|
|
18
|
+
* sanitizeRedisKeyComponent('user name with spaces')
|
|
19
|
+
* // Returns: 'user_name_with_spaces'
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare const sanitizeRedisKeyComponent: (str: string) => string;
|
|
23
|
+
/**
|
|
24
|
+
* Validates if a tenantId looks like a MongoDB ObjectId hash
|
|
25
|
+
* MongoDB ObjectIds are 24 character hexadecimal strings
|
|
26
|
+
*
|
|
27
|
+
* @param tenantId - The tenant ID to validate
|
|
28
|
+
* @returns true if the tenantId appears to be a hash, false otherwise
|
|
29
|
+
*/
|
|
30
|
+
export declare const isHashLikeTenantId: (tenantId: string) => boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Builds a standardized Redis key with proper tenant isolation and sanitization
|
|
33
|
+
*
|
|
34
|
+
* Key format: `{appName}:{tenantId}:{userId}:{...segments}`
|
|
35
|
+
* - All components are sanitized to remove invalid characters
|
|
36
|
+
* - TenantId is validated and replaced with 'default' if it appears to be a hash
|
|
37
|
+
* - Components can be skipped by passing null/undefined
|
|
38
|
+
*
|
|
39
|
+
* @param options - Key building options
|
|
40
|
+
* @param options.appName - Application name (e.g., 'CDMBASE_TEST')
|
|
41
|
+
* @param options.tenantId - Tenant identifier (validated against hash pattern)
|
|
42
|
+
* @param options.userId - User identifier (sanitized for Auth0 format)
|
|
43
|
+
* @param options.segments - Additional key segments (array of strings)
|
|
44
|
+
* @param options.logger - Optional logger for warnings
|
|
45
|
+
* @returns Constructed Redis key
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* buildRedisKey({
|
|
50
|
+
* appName: 'CDMBASE_TEST',
|
|
51
|
+
* tenantId: 'default',
|
|
52
|
+
* userId: 'auth0|6120ecbb',
|
|
53
|
+
* segments: ['currentPagePermissions', 'hash123']
|
|
54
|
+
* })
|
|
55
|
+
* // Returns: 'CDMBASE_TEST:default:auth0-6120ecbb:currentPagePermissions:hash123'
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export interface BuildRedisKeyOptions {
|
|
59
|
+
appName: string;
|
|
60
|
+
tenantId?: string;
|
|
61
|
+
userId?: string;
|
|
62
|
+
segments?: string[];
|
|
63
|
+
logger?: {
|
|
64
|
+
warn: (message: string, ...args: unknown[]) => void;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export declare const buildRedisKey: ({ appName, tenantId, userId, segments, logger }: BuildRedisKeyOptions) => string;
|
|
68
|
+
/**
|
|
69
|
+
* Builds a wildcard pattern for Redis key matching
|
|
70
|
+
* Useful for bulk operations like deleting all keys matching a pattern
|
|
71
|
+
*
|
|
72
|
+
* @param options - Pattern building options (same as buildRedisKey)
|
|
73
|
+
* @returns Redis key pattern with wildcards
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* buildRedisKeyPattern({
|
|
78
|
+
* appName: 'CDMBASE_TEST',
|
|
79
|
+
* tenantId: 'default',
|
|
80
|
+
* segments: ['currentPagePermissions']
|
|
81
|
+
* })
|
|
82
|
+
* // Returns: 'CDMBASE_TEST:default:*:currentPagePermissions:*'
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare const buildRedisKeyPattern: ({ appName, tenantId, userId, segments, }: Omit<BuildRedisKeyOptions, "logger">) => string;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sanitizes a Redis key component to ensure it's valid and safe
|
|
3
|
+
*
|
|
4
|
+
* Redis keys can contain any binary sequence, but for best practices and compatibility:
|
|
5
|
+
* - Avoid whitespace (spaces, tabs, newlines) - replace with underscores
|
|
6
|
+
* - Avoid pipes (|) which are used in Auth0 userIds - replace with hyphens
|
|
7
|
+
* - Avoid quotes and backslashes that could cause escaping issues - remove them
|
|
8
|
+
* - Avoid control characters - remove them
|
|
9
|
+
*
|
|
10
|
+
* @param str - The string component to sanitize
|
|
11
|
+
* @returns Sanitized string safe for use in Redis keys
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* sanitizeRedisKeyComponent('auth0|6120ecbb1e5c68006aabe17a')
|
|
16
|
+
* // Returns: 'auth0-6120ecbb1e5c68006aabe17a'
|
|
17
|
+
*
|
|
18
|
+
* sanitizeRedisKeyComponent('user name with spaces')
|
|
19
|
+
* // Returns: 'user_name_with_spaces'
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
const sanitizeRedisKeyComponent = (str) => {
|
|
23
|
+
if (!str)
|
|
24
|
+
return str;
|
|
25
|
+
return (str
|
|
26
|
+
.replace(/[\s\r\n\t]+/g, '_') // Replace whitespace with underscores
|
|
27
|
+
.replace(/\|/g, '-') // Replace pipes with hyphens (Auth0 userIds: auth0|123 -> auth0-123)
|
|
28
|
+
.replace(/["'\\]/g, '') // Remove quotes and backslashes
|
|
29
|
+
// eslint-disable-next-line no-control-regex
|
|
30
|
+
.replace(/[\x00-\x1F\x7F]/g, '') // Remove control characters
|
|
31
|
+
.trim());
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Validates if a tenantId looks like a MongoDB ObjectId hash
|
|
35
|
+
* MongoDB ObjectIds are 24 character hexadecimal strings
|
|
36
|
+
*
|
|
37
|
+
* @param tenantId - The tenant ID to validate
|
|
38
|
+
* @returns true if the tenantId appears to be a hash, false otherwise
|
|
39
|
+
*/
|
|
40
|
+
const isHashLikeTenantId = (tenantId) => {
|
|
41
|
+
if (!tenantId || tenantId === 'default')
|
|
42
|
+
return false;
|
|
43
|
+
return /^[a-f0-9]{24,}$/i.test(tenantId);
|
|
44
|
+
};
|
|
45
|
+
const buildRedisKey = ({ appName, tenantId, userId, segments = [], logger }) => {
|
|
46
|
+
// Validate and sanitize tenantId
|
|
47
|
+
let sanitizedTenantId = tenantId || 'default';
|
|
48
|
+
if (sanitizedTenantId !== 'default' && isHashLikeTenantId(sanitizedTenantId)) {
|
|
49
|
+
if (logger) {
|
|
50
|
+
logger.warn('TenantId appears to be a hash (%s...), using "default" instead', sanitizedTenantId.substring(0, 16));
|
|
51
|
+
}
|
|
52
|
+
sanitizedTenantId = 'default';
|
|
53
|
+
}
|
|
54
|
+
// Build key parts
|
|
55
|
+
const parts = [sanitizeRedisKeyComponent(appName), sanitizeRedisKeyComponent(sanitizedTenantId)];
|
|
56
|
+
// Add userId if provided
|
|
57
|
+
if (userId) {
|
|
58
|
+
parts.push(sanitizeRedisKeyComponent(userId));
|
|
59
|
+
}
|
|
60
|
+
// Add additional segments
|
|
61
|
+
if (segments && segments.length > 0) {
|
|
62
|
+
parts.push(...segments.map((seg) => sanitizeRedisKeyComponent(seg)));
|
|
63
|
+
}
|
|
64
|
+
return parts.join(':');
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Builds a wildcard pattern for Redis key matching
|
|
68
|
+
* Useful for bulk operations like deleting all keys matching a pattern
|
|
69
|
+
*
|
|
70
|
+
* @param options - Pattern building options (same as buildRedisKey)
|
|
71
|
+
* @returns Redis key pattern with wildcards
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* buildRedisKeyPattern({
|
|
76
|
+
* appName: 'CDMBASE_TEST',
|
|
77
|
+
* tenantId: 'default',
|
|
78
|
+
* segments: ['currentPagePermissions']
|
|
79
|
+
* })
|
|
80
|
+
* // Returns: 'CDMBASE_TEST:default:*:currentPagePermissions:*'
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
const buildRedisKeyPattern = ({ appName, tenantId, userId, segments = [], }) => {
|
|
84
|
+
const parts = [sanitizeRedisKeyComponent(appName), tenantId ? sanitizeRedisKeyComponent(tenantId) : '*'];
|
|
85
|
+
// Add userId or wildcard
|
|
86
|
+
parts.push(userId ? sanitizeRedisKeyComponent(userId) : '*');
|
|
87
|
+
// Add segments with wildcards
|
|
88
|
+
if (segments && segments.length > 0) {
|
|
89
|
+
parts.push(...segments.map((seg) => (seg === '*' ? '*' : sanitizeRedisKeyComponent(seg))));
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
parts.push('*');
|
|
93
|
+
}
|
|
94
|
+
return parts.join(':');
|
|
95
|
+
};export{buildRedisKey,buildRedisKeyPattern,isHashLikeTenantId,sanitizeRedisKeyComponent};//# sourceMappingURL=sanitize-redis-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-redis-key.js","sources":["../../src/redis/sanitize-redis-key.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;AAoBG;AACU,MAAA,yBAAyB,GAAG,CAAC,GAAW,KAAY;AAC7D,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,GAAG,CAAC;AACrB,IAAA,QACI,GAAG;AACE,SAAA,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;AAC5B,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,SAAA,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;;AAEtB,SAAA,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,IAAI,EAAE,EACb;AACN,EAAE;AAEF;;;;;;AAMG;AACU,MAAA,kBAAkB,GAAG,CAAC,QAAgB,KAAa;AAC5D,IAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK,CAAC;AACtD,IAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,EAAE;AAuCW,MAAA,aAAa,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,MAAM,EAAwB,KAAY;;AAEhH,IAAA,IAAI,iBAAiB,GAAG,QAAQ,IAAI,SAAS,CAAC;IAC9C,IAAI,iBAAiB,KAAK,SAAS,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,EAAE;QAC1E,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,CAAC,IAAI,CACP,gEAAgE,EAChE,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CACrC,CAAC;SACL;QACD,iBAAiB,GAAG,SAAS,CAAC;KACjC;;AAGD,IAAA,MAAM,KAAK,GAAa,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,CAAC,CAAC;;IAG3G,IAAI,MAAM,EAAE;QACR,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;KACjD;;IAGD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,QAAA,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACxE;AAED,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE;AAEF;;;;;;;;;;;;;;;;AAgBG;AACU,MAAA,oBAAoB,GAAG,CAAC,EACjC,OAAO,EACP,QAAQ,EACR,MAAM,EACN,QAAQ,GAAG,EAAE,GACsB,KAAY;IAC/C,MAAM,KAAK,GAAa,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,yBAAyB,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;;AAGnH,IAAA,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,yBAAyB,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;;IAG7D,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,QAAA,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9F;SAAM;AACH,QAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACnB;AAED,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B"}
|
package/lib/utils/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@common-stack/server-core",
|
|
3
|
-
"version": "8.2.5-alpha.
|
|
3
|
+
"version": "8.2.5-alpha.34",
|
|
4
4
|
"description": "common core for higher packages to depend on",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -42,5 +42,5 @@
|
|
|
42
42
|
"typescript": {
|
|
43
43
|
"definition": "lib/index.d.ts"
|
|
44
44
|
},
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "b2f197c4c14345a0fcfca3c06f4a8bac3ad9067e"
|
|
46
46
|
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { DocumentNode } from 'graphql/language/index.js';
|
|
2
|
-
import { CdmLogger } from '@cdm-logger/core';
|
|
3
|
-
type GenerateQueryCacheKeyOptions = {
|
|
4
|
-
query: string | DocumentNode;
|
|
5
|
-
variables: Record<string, unknown>;
|
|
6
|
-
userId?: string;
|
|
7
|
-
tenantId?: string;
|
|
8
|
-
logger?: CdmLogger.ILogger;
|
|
9
|
-
};
|
|
10
|
-
export declare const generateQueryCacheKey: ({ query, variables, logger, userId, tenantId }: GenerateQueryCacheKeyOptions) => string;
|
|
11
|
-
export {};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import {createHash}from'crypto';import {print}from'graphql/language/index.js';const generateQueryCacheKey = ({ query, variables, logger, userId, tenantId }) => {
|
|
2
|
-
const normalizedQuery = (typeof query === 'string' ? query : print(query)).trim();
|
|
3
|
-
const [, queryName] = normalizedQuery?.match(/{\s*(\w+)/) ?? [];
|
|
4
|
-
// Log the data right before hashing
|
|
5
|
-
if (logger) {
|
|
6
|
-
logger.trace('About to hash normalized query: [%s]', normalizedQuery);
|
|
7
|
-
logger.trace('About to hash variables: [%j]', variables);
|
|
8
|
-
}
|
|
9
|
-
const queryHash = createHash('sha256').update(normalizedQuery).digest('hex');
|
|
10
|
-
const variablesHash = variables ? createHash('sha256').update(JSON.stringify(variables)).digest('hex') : null;
|
|
11
|
-
const prefix = `${tenantId ? `${tenantId}:` : ''}${userId ? `${userId}:` : ''}`;
|
|
12
|
-
return `${prefix}${queryName}:${queryHash}${variablesHash ? `:${variablesHash}` : ''}`;
|
|
13
|
-
};export{generateQueryCacheKey};//# sourceMappingURL=generate-query-cache-key.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-query-cache-key.js","sources":["../../src/utils/generate-query-cache-key.ts"],"sourcesContent":[null],"names":[],"mappings":"8EAWa,MAAA,qBAAqB,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAgC,KAAI;IAClH,MAAM,eAAe,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;AAClF,IAAA,MAAM,GAAG,SAAS,CAAC,GAAG,eAAe,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;;IAGhE,IAAI,MAAM,EAAE;AACR,QAAA,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,eAAe,CAAC,CAAC;AACtE,QAAA,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,SAAS,CAAC,CAAC;KAC5D;AAED,IAAA,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7E,IAAA,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC9G,MAAM,MAAM,GAAG,CAAA,EAAG,QAAQ,GAAG,CAAG,EAAA,QAAQ,CAAG,CAAA,CAAA,GAAG,EAAE,CAAA,EAAG,MAAM,GAAG,CAAG,EAAA,MAAM,CAAG,CAAA,CAAA,GAAG,EAAE,CAAA,CAAE,CAAC;AAChF,IAAA,OAAO,GAAG,MAAM,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,SAAS,GAAG,aAAa,GAAG,CAAA,CAAA,EAAI,aAAa,CAAE,CAAA,GAAG,EAAE,EAAE,CAAC;AAC3F"}
|