UNPKG

@satoshibits/cache-keys

Version:
119 lines 4.79 kB
"use strict"; import { createKeyFactory, createSimpleKeyFactory } from '../factory.mjs'; import { sanitizeKeyComponent, splitKeyComponents } from '../sanitizer.mjs'; /** * Analytics-related cache key factories */ export var analyticsKeys = { /** * Real-time analytics data key * @example analyticsKeys.realtime.key('dashboard123') * @returns 'analytics:realtime:dashboard123' */ realtime: createSimpleKeyFactory('analytics', 'realtime'), /** * Hourly aggregated metrics key * @example analyticsKeys.hourly.key('metric123', '2024-01-15', 14) * @returns 'analytics:hourly:metric123:2024-01-15:14' */ hourly: createKeyFactory('analytics', 'hourly', function (metricId, date, hour) { return "".concat(sanitizeKeyComponent(String(metricId)), ":").concat(sanitizeKeyComponent(date), ":").concat(hour); }, function (suffix) { var _a, _b, _c; var parts = splitKeyComponents(suffix, ':', true); if (parts.length !== 3) return null; return { metricId: (_a = parts[0]) !== null && _a !== void 0 ? _a : '', date: (_b = parts[1]) !== null && _b !== void 0 ? _b : '', hour: (_c = parts[2]) !== null && _c !== void 0 ? _c : '' }; }), /** * Daily aggregated metrics key * @example analyticsKeys.daily.key('metric123', '2024-01-15') * @returns 'analytics:daily:metric123:2024-01-15' */ daily: createKeyFactory('analytics', 'daily', function (metricId, date) { return "".concat(sanitizeKeyComponent(String(metricId)), ":").concat(sanitizeKeyComponent(date)); }, function (suffix) { var _a, _b; var parts = splitKeyComponents(suffix, ':', true); if (parts.length !== 2) return null; return { metricId: (_a = parts[0]) !== null && _a !== void 0 ? _a : '', date: (_b = parts[1]) !== null && _b !== void 0 ? _b : '' }; }), /** * Monthly aggregated metrics key * @example analyticsKeys.monthly.key('metric123', '2024-01') * @returns 'analytics:monthly:metric123:2024-01' */ monthly: createKeyFactory('analytics', 'monthly', function (metricId, yearMonth) { return "".concat(sanitizeKeyComponent(String(metricId)), ":").concat(sanitizeKeyComponent(yearMonth)); }, function (suffix) { var _a, _b; var parts = splitKeyComponents(suffix, ':', true); if (parts.length !== 2) return null; return { metricId: (_a = parts[0]) !== null && _a !== void 0 ? _a : '', yearMonth: (_b = parts[1]) !== null && _b !== void 0 ? _b : '' }; }), /** * Custom report key * @example analyticsKeys.report.key('report123') * @returns 'analytics:report:report123' */ report: createSimpleKeyFactory('analytics', 'report'), /** * Funnel analysis key * @example analyticsKeys.funnel.key('funnel123', '2024-01-15') * @returns 'analytics:funnel:funnel123:2024-01-15' */ funnel: createKeyFactory('analytics', 'funnel', function (funnelId, date) { return "".concat(sanitizeKeyComponent(String(funnelId)), ":").concat(sanitizeKeyComponent(date)); }, function (suffix) { var _a, _b; var parts = splitKeyComponents(suffix, ':', true); if (parts.length !== 2) return null; return { funnelId: (_a = parts[0]) !== null && _a !== void 0 ? _a : '', date: (_b = parts[1]) !== null && _b !== void 0 ? _b : '' }; }), /** * Cohort analysis key * @example analyticsKeys.cohort.key('cohort123', '2024-W03') * @returns 'analytics:cohort:cohort123:2024-W03' */ cohort: createKeyFactory('analytics', 'cohort', function (cohortId, period) { return "".concat(sanitizeKeyComponent(String(cohortId)), ":").concat(sanitizeKeyComponent(period)); }, function (suffix) { var _a, _b; var parts = splitKeyComponents(suffix, ':', true); if (parts.length !== 2) return null; return { cohortId: (_a = parts[0]) !== null && _a !== void 0 ? _a : '', period: (_b = parts[1]) !== null && _b !== void 0 ? _b : '' }; }), /** * Event stream buffer key * @example analyticsKeys.eventStream.key('stream123') * @returns 'analytics:eventStream:stream123' */ eventStream: createSimpleKeyFactory('analytics', 'eventStream'), /** * Dashboard configuration key * @example analyticsKeys.dashboard.key('dashboard123') * @returns 'analytics:dashboard:dashboard123' */ dashboard: createSimpleKeyFactory('analytics', 'dashboard'), }; //# sourceMappingURL=analytics.mjs.map