pinia-plugin-subscription 1.0.0-beta.2 → 1.0.0-beta.4
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/CHANGELOG.md +1 -0
- package/README.md +30 -46
- package/dist/chunks/{constantes-CaTNAbzX.js → constantes-2FeJfVVy.js} +3 -3
- package/dist/chunks/{constantes-CaTNAbzX.js.map → constantes-2FeJfVVy.js.map} +1 -1
- package/dist/core/PluginSubscription.d.ts +2 -0
- package/dist/core/Store.d.ts +2 -2
- package/dist/helpers/index.d.ts +2 -2
- package/dist/helpers.js +215 -131
- package/dist/helpers.js.map +1 -1
- package/dist/pinia-plugin-subscription.js +110 -108
- package/dist/pinia-plugin-subscription.js.map +1 -1
- package/dist/system/log.d.ts +1 -3
- package/dist/types/plugin.d.ts +2 -1
- package/docs/authoring-plugins.md +6 -6
- package/docs/using-plugins.md +20 -26
- package/package.json +2 -2
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../src/system/log.ts","../src/system/Tracer.ts","../src/factories/console-trace-listener.ts","../src/factories/trace-listener.ts","../src/factories/trace-registry.ts"],"sourcesContent":["import { pluginName } from '../utils/constantes'\nimport type { Console, LogType, StyleDefinition, StyleDefinitions } from '../types/log'\nimport type { ConsoleTraceEvent } from '../types/trace'\n\n\nconst style = (bgColor: string, color: string = 'white') =>\n `background-color: ${bgColor}; color: ${color}; padding: 1px; margin-right: 5px; font-size: 12px`\n\nexport function printObject(label: string, payload: object) {\n const isArray = Array.isArray(payload)\n const isEmpty = isArray ? payload.length === 0 : Object.keys(payload).length === 0\n if (isEmpty) {\n console.log(\n '%c%s',\n 'color: #f86f63; padding: 1px; margin-right: 5px; font-size: 10px',\n `[ ${label} ] Empty`\n )\n return\n }\n\n console.groupCollapsed(\n '%c%s',\n 'color: #fafa05; padding: 1px; margin-right: 5px; font-size: 11px',\n `[ ${label} ]`)\n\n if (Array.isArray(payload)) {\n if (typeof payload[0] === 'object') {\n payload.forEach((item: any) => {\n if (item._name) {\n printObject(item._name, item)\n } else if (item._id) {\n printObject(item._id, item)\n } else {\n console.dir(item)\n }\n })\n } else {\n payload.forEach((item: any, index: number) => {\n console.log(\n '%c%s',\n 'color: #cae38f; padding: 1px; margin-right: 5px; font-size: 10px',\n `[ ${index} ]`, item\n )\n })\n }\n } else {\n let emptyKeys: string[] = []\n Object.keys(payload).forEach(key => {\n const value = (payload as Record<string, unknown>)[key]\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n if (typeof value[0] === 'object') {\n printObject(key, value)\n } else {\n console.groupCollapsed(key)\n console.log(value)\n console.groupEnd()\n }\n } else {\n printObject(key, Object.assign({}, value))\n }\n } else {\n if (!value) {\n emptyKeys.push(key)\n } else {\n console.log(\n '%c%s',\n 'color: #b0fa05; padding: 1px; margin-right: 5px; font-size: 10px',\n `[ ${key} ]`, value\n )\n }\n }\n })\n if (emptyKeys.length) {\n console.log(\n '%c%s',\n 'color: #f86f63; font-size: 9px',\n `[ Empty properties ]`, emptyKeys\n )\n }\n }\n console.groupEnd()\n}\n\nfunction printTracePayload(tracePayload: Record<string, unknown>) {\n Object.keys(tracePayload).forEach((key: string) => {\n if (['label', 'namespace', 'scope', 'source'].includes(key)) {\n return\n }\n const arg = tracePayload[key]\n if (!arg) {\n return\n }\n\n switch (typeof arg) {\n case 'string':\n console.log(\n '%c%s',\n 'color: #fafa05; padding: 1px; margin-right: 5px; font-size: 10px',\n `[ ${key} ]`, arg\n )\n break;\n case 'object':\n switch (key) {\n case 'mutation':\n console.groupCollapsed('[mutation]')\n console.dir(arg)\n console.groupEnd()\n break;\n case 'options':\n printObject(key, (arg as { storeOptions?: unknown })?.storeOptions ?? arg)\n break;\n case 'payload':\n printTracePayload(arg as Record<string, unknown>)\n break;\n case 'store':\n printObject(key, Object.keys(arg).reduce((acc, curr) => {\n if ((curr.startsWith('$') && !['$id', '$state'].includes(curr)) || curr.startsWith('_')) {\n return acc\n }\n\n acc[curr] = (arg as Record<string, unknown>)[curr]\n return acc\n }, {} as Record<string, unknown>))\n break;\n default:\n printObject(key, arg)\n }\n break;\n case 'function':\n console.dir(arg)\n break;\n default:\n console.info(arg)\n }\n })\n}\nexport function log(logStyle: string, args: any) {\n if (!logStyle) {\n throw new Error('Style instructions are required')\n }\n\n console.log(\n '%c%s',\n logStyle,\n args.shift(),\n ...args\n )\n}\n\n\nexport function logTrace(logStyle: string, args: any, pluginName: string) {\n if (!logStyle) {\n throw new Error('Style instructions are required')\n }\n\n const label = args.shift()\n const event = args[0]\n\n console.groupCollapsed(\n '%c%s',\n logStyle,\n `${label}\n`,\n event?.source\n )\n\n args.forEach((arg: any) => {\n switch (typeof arg) {\n case 'string':\n console.info(arg)\n break;\n case 'object':\n if (Array.isArray(arg)) {\n console.table(arg)\n } else {\n printTracePayload(arg)\n }\n break;\n case 'function':\n console.dir(arg)\n break;\n default:\n console.info(arg)\n }\n })\n\n console.groupCollapsed(\n '%c%s',\n 'color: #fafa05; padding: 1px; margin-right: 5px; font-size: 10px',\n `[ trace ]`\n )\n console.trace()\n console.groupEnd()\n\n console.groupEnd()\n}\n\nexport abstract class CustomConsole implements Console {\n protected _bgColor: string = 'transparent'\n protected _color: string = '#f2f286'\n protected _icon: string = '🍍⚡'\n protected _errorBgColor: string = '#d24545'\n protected _errorColor: string = 'white'\n protected _errorIcon: string = '🍍⚠️'\n protected _pluginName?: string\n protected _styles: StyleDefinitions = {\n error: { bgColor: this._errorBgColor, color: this._errorColor, icon: this._errorIcon },\n info: { bgColor: this._bgColor, color: this._color, icon: this._icon }\n }\n\n protected formatMessage(message: string, icon: string): string {\n return this._pluginName ? ` [${icon} ${this._pluginName}] \n ${message} \n` : message\n }\n\n protected generateStyle(styleDefinition: StyleDefinition): string {\n return style(styleDefinition.bgColor, styleDefinition.color)\n }\n\n protected getStyleDefinition(messageType?: LogType): StyleDefinition {\n return this._styles[messageType ?? 'info']\n }\n\n log(...args: any) {\n this.useLog(\n this.getStyleDefinition(),\n args\n )\n }\n\n error(...args: any) {\n const logType = 'error'\n this.useLog(\n this.getStyleDefinition(logType),\n args\n )\n }\n\n protected rebuildArgs(args: string | any[], icon: string) {\n if (typeof args === 'string') {\n return [args]\n }\n\n if (Array.isArray(args)) {\n return [args.shift(), ...(args ?? [])]\n }\n }\n\n protected useLog(styleDefinition: StyleDefinition, args: any) {\n log(\n this.generateStyle(styleDefinition),\n this.rebuildArgs(args, styleDefinition.icon)\n )\n }\n}\n\nclass PluginConsoleClass extends CustomConsole {\n protected _pluginName: string = pluginName\n}\n\nexport const PluginConsole = new PluginConsoleClass()\n\nexport class TraceConsole extends CustomConsole {\n protected _pluginName: string = pluginName\n\n constructor(pluginName?: string) {\n super()\n if (pluginName) {\n this._pluginName = pluginName\n }\n }\n\n\n logGroup(label: string, group: ConsoleTraceEvent[]) {\n this.startGroup()\n this.log(label, group)\n this.endGroup()\n }\n\n private startGroup(groupName?: string) {\n console.group(groupName)\n }\n\n private endGroup() {\n console.groupEnd()\n }\n\n protected useLog(styleDefinition: StyleDefinition, args: any) {\n logTrace(\n this.generateStyle(styleDefinition),\n this.rebuildArgs(args, styleDefinition.icon),\n this._pluginName\n )\n }\n}","import type { AnyObject } from '../types'\nimport type {\n TraceEvent,\n TraceEventMetadata,\n TraceLevel,\n TraceListener,\n TracePayload,\n TracerOptions,\n} from '../types/trace'\n\nfunction resolvePayload(payload: TracePayload): AnyObject | undefined {\n if (typeof payload !== 'function') {\n return payload\n }\n\n try {\n return payload()\n } catch (error) {\n return { __tracePayloadError: error }\n }\n}\n\n/**\n * Emits structured trace events.\n *\n * Nothing is allocated when no listener matches:\n * the payload is a factory resolved only once a consumer is known.\n */\nexport default class Tracer {\n private readonly _listeners: TraceListener[] = []\n private _scope?: string\n private readonly _source: string\n\n constructor(source: string, listeners: TraceListener[], options: TracerOptions = {}) {\n this._scope = options.scope\n this._source = source\n this._listeners = listeners\n }\n\n get scope(): string | undefined {\n return this._scope\n }\n\n set scope(scope: string | undefined) {\n this._scope = scope\n }\n\n get source(): string {\n return this._source\n }\n\n debug(label: string, namespace: string, payload?: TracePayload, scope?: string): void {\n this.emit('debug', label, namespace, payload, scope)\n }\n\n /** Relays the error to matching listeners, or reports it when none match. */\n error(label: string, namespace: string, error: unknown, payload?: TracePayload, scope?: string): void {\n this.emit('error', label, namespace, payload, scope, error)\n }\n\n private emit(\n level: TraceLevel,\n label: string,\n namespace: string,\n payload?: TracePayload,\n scope?: string,\n error?: unknown\n ): void {\n if (this._listeners.length === 0) {\n if (level === 'error') {\n console.error('Unhandled error trace event:', error)\n }\n return\n }\n\n const metadata: TraceEventMetadata = {\n label,\n level,\n namespace,\n scope: scope ?? this._scope,\n source: this._source\n }\n\n const matched = this._listeners.filter(listener => {\n try {\n return listener.filter(metadata)\n } catch (error) {\n console.error('Error in trace listener filter:', error)\n return false\n }\n })\n\n if (matched.length === 0) {\n if (level === 'error') {\n console.error('Unhandled error trace event:', error)\n }\n return\n }\n\n const event: TraceEvent = {\n ...metadata,\n ...(error !== undefined && { error }),\n ...(payload !== undefined && { payload: resolvePayload(payload) }),\n timestamp: Date.now()\n }\n\n for (const listener of matched) {\n try {\n listener.handler(event)\n } catch (error) {\n // a faulty listener must never break the traced code\n console.error('Error in trace listener:', error)\n }\n }\n }\n}\n","import { PluginConsole, TraceConsole } from '../system/log'\n\nimport type { Console } from '../types/log'\nimport type {\n ConsoleTraceEvent, ConsoleTraceEventArgs, TraceEvent, TraceListenerGroupBy, ConsoleTraceGroupListener, TraceListener\n} from '../types/trace'\n\n\n/**\n * Builds the console arguments from a trace event.\n * @param event The trace event to build console arguments from.\n * @returns An array containing the formatted trace label and the sanitized event data.\n */\nfunction buildConsoleArgsFromEvent(event: TraceEvent): ConsoleTraceEvent {\n const sanitizedEvent = Object.keys(event).reduce((acc, curr) => {\n if (curr !== 'level' && curr !== 'timestamp') {\n acc[curr] = event[curr as keyof ConsoleTraceEventArgs]\n }\n return acc\n }, {} as Record<string, unknown>)\n\n return [formatTraceLabel(event), sanitizedEvent as ConsoleTraceEventArgs]\n\n /**\n if (event.error !== undefined) {\n args.push(event.error)\n }\n\n if (event.payload !== undefined) {\n if (Array.isArray(event.payload)) {\n args.push(...event.payload)\n } else {\n args.push(event.payload)\n }\n }\n */\n}\n\nfunction formatTraceLabel(event: TraceEvent): string {\n return event.scope\n ? `${event.label} [${event.scope}]`\n : `${event.label}`\n}\n\n/**\n * Creates an opt-in trace listener that reproduces the former console output.\n */\nexport function createConsoleTraceListener(target?: Console): Omit<TraceListener, 'filter'> {\n if (!target) {\n target = new TraceConsole()\n }\n\n return {\n handler(event): void {\n const consoleMethod = event.level === 'error' ? 'error' : 'log'\n target[consoleMethod](...buildConsoleArgsFromEvent(event))\n }\n }\n}\n\n\nexport function createConsoleGroupTraceListener(groupBy: TraceListenerGroupBy = 'scope'): ConsoleTraceGroupListener {\n const target = new TraceConsole()\n const groups = new Map<string, ConsoleTraceEvent[]>()\n\n\n function createGroup(key: string) {\n groups.set(key, [])\n }\n\n function logGroup(key: string): void {\n const group = groups.get(key)\n\n if (!group) {\n target.error(`No group found for key \"${key}\"`)\n return\n }\n\n if (group.length) { target.logGroup(`[ ${groupBy} ] ${key}`, group) }\n\n //groups.delete(key)\n }\n\n return {\n createGroup,\n logGroup,\n handler(event): void {\n const groupKey = event[groupBy] as string\n if (!groups.has(groupKey)) {\n target.error(`No group found for key \"${groupKey}\"`)\n return\n }\n\n groups.get(groupKey)?.push(buildConsoleArgsFromEvent(event))\n }\n }\n}\n\n\n","import { createConsoleTraceListener, createConsoleGroupTraceListener } from \"./console-trace-listener\"\nimport type {\n ConsoleTraceGroupListener,\n TraceEventMetadata,\n TraceFilterFactoryCriterion,\n TraceFilterFactoryParam,\n TraceGroupListener,\n TraceListener\n} from \"../types/trace\"\n\n\nfunction createFilter(criteria: TraceFilterFactoryCriterion[], mode: 'every' | 'some') {\n return (event: TraceEventMetadata) => {\n return criteria[mode](({ comparator = 'equals', target, value }) => {\n const eventValue = event[target]\n if (typeof eventValue !== 'string') return false\n let result = false\n switch (comparator) {\n case 'equals':\n result = eventValue === value\n break\n case 'contains':\n result = eventValue.includes(value)\n break\n case 'startsWith':\n result = eventValue.startsWith(value)\n break\n case 'endsWith':\n result = eventValue.endsWith(value)\n break\n default:\n result = false\n break\n }\n return result\n })\n }\n}\n\n/**\n * Creates a trace group listener with optional filtering.\n * @param filterDef The filter criteria for the trace events.\n * @param filterMode The mode to apply when evaluating multiple filter criteria: 'every' or 'some'.\n * @param groupBy The key of the trace event metadata to group by.\n * @returns A trace listener configured with group handling and filtering.\n */\nexport function createTraceGroupListener(\n filterDef: TraceFilterFactoryCriterion[],\n filterMode: 'every' | 'some' = 'every',\n groupBy: keyof TraceEventMetadata = 'scope'\n) {\n return {\n groupBy,\n ...createConsoleGroupTraceListener(groupBy),\n ...createTraceFilter(filterDef, filterMode)\n } as TraceGroupListener\n\n}\n\nfunction createTraceFilter(\n listenerDef: TraceFilterFactoryParam | TraceFilterFactoryCriterion[],\n filterMode: 'every' | 'some' = 'every'\n) {\n if (Array.isArray(listenerDef)) {\n listenerDef = {\n filter: createFilter(listenerDef, filterMode)\n }\n }\n\n if (listenerDef.filter && Array.isArray(listenerDef.filter)) {\n listenerDef.filter = createFilter(listenerDef.filter, filterMode)\n }\n\n if (!listenerDef.filter || typeof listenerDef.filter !== 'function') {\n listenerDef = { ...listenerDef, filter: () => true }\n }\n\n return listenerDef\n}\n\n/**\n * Creates a trace listener with optional filtering.\n * @param param The trace listener parameters including handler and optional filter criteria.\n * @param filterMode The mode to apply when evaluating multiple filter criteria: 'every' or 'some'.\n * @returns A trace listener configured with the specified handler and filter.\n */\nexport function createTraceListener(listenerDef: TraceFilterFactoryParam | TraceFilterFactoryCriterion[], filterMode: 'every' | 'some' = 'every'): TraceListener {\n listenerDef = createTraceFilter(listenerDef, filterMode)\n\n if (!listenerDef?.handler) {\n listenerDef = { ...listenerDef, ...createConsoleTraceListener() } as TraceFilterFactoryParam\n }\n\n return listenerDef as TraceListener\n}","import Tracer from '../system/Tracer'\nimport { createTraceGroupListener, createTraceListener } from './trace-listener'\nimport type {\n AddTraceListenerOptions,\n TraceEvent,\n TraceFilterFactoryCriterion,\n TraceFilterFactoryParam,\n TraceGroupListener,\n TraceListener,\n TraceListenerFilterMode,\n TraceListenerRemover,\n TraceRegistry,\n TracerOptions,\n} from '../types/trace'\n\n/**\n * Creates a registry for managing trace listeners and creating tracers.\n * @returns An object containing methods to add and clear trace listeners, and to create tracers.\n */\nexport function createTracerRegistry(): TraceRegistry {\n let listeners: TraceListener[] = []\n\n /**\n * Registers a trace listener and returns its remover.\n * Listeners are evaluated in registration order.\n * @param listener The trace listener to register.\n * @param filterMode The mode to use when creating a trace listener from a filter factory parameter. Defaults to 'every'.\n * @returns A function that removes the registered listener when called.\n */\n function addTraceListener(listener: TraceListener | TraceFilterFactoryParam, filterMode: TraceListenerFilterMode = 'every'): TraceListenerRemover {\n if (!listener || !listener?.handler) {\n listener = createTraceListener(listener, filterMode)\n }\n\n if (!('filter' in listener) || typeof listener.filter !== 'function') {\n listener = { ...listener, filter: () => true }\n }\n\n listeners.push(listener as TraceListener)\n\n return () => {\n const index = listeners.indexOf(listener as TraceListener)\n\n if (index !== -1) {\n listeners.splice(index, 1)\n }\n }\n }\n\n /**\n * Clears all registered trace listeners.\n */\n function clearTraceListeners(): void {\n listeners = []\n }\n\n /**\n * Checks if there are any registered trace listeners.\n * @returns True if there are registered trace listeners, otherwise false.\n */\n function hasTraceListeners(): boolean {\n return listeners.length > 0\n }\n\n return {\n addTraceListener,\n clearTraceListeners,\n createTracer: (source: string, options: TracerOptions = {}) => new Tracer(source, listeners, options),\n hasTraceListeners\n }\n}\n\nexport function createTraceGroupsRegistry() {\n let listeners: TraceGroupListener[] = []\n\n /**\n * Registers a trace listener and returns its remover.\n * Listeners are evaluated in registration order.\n * @param listener The trace listener to register.\n * @param filterMode The mode to use when creating a trace listener from a filter factory parameter. Defaults to 'every'.\n * @returns A function that removes the registered listener when called.\n */\n function addListener(\n criteria: TraceFilterFactoryCriterion[],\n { filterMode = 'every', groupBy = 'scope' }: AddTraceListenerOptions = {}\n ): TraceListenerRemover {\n const listenerGroup = createTraceGroupListener(criteria, filterMode ?? 'every', groupBy ?? 'scope')\n listeners.push(listenerGroup)\n\n return () => {\n const index = listeners.indexOf(listenerGroup)\n\n if (index !== -1) {\n listeners.splice(index, 1)\n }\n }\n }\n\n /**\n * Clears all registered trace listeners.\n */\n function clearTraceListeners(): void {\n listeners = []\n }\n\n function getMatchedListener(payload: TraceEvent) {\n return listeners.filter(listener => listener.filter(payload))\n }\n\n /**\n * Checks if there are any registered trace listeners.\n * @returns True if there are registered trace listeners, otherwise false.\n */\n function hasTraceListeners(): boolean {\n return listeners.length > 0\n }\n\n function listenerGroupAction(actionName: 'createGroup' | 'logGroup', payload: TraceEvent) {\n if (!listeners.length) return\n\n getMatchedListener(payload).forEach(listener => {\n const groupLabel = payload[listener.groupBy]\n if (typeof groupLabel === 'string') { listener[actionName](groupLabel) }\n })\n }\n\n\n return {\n addListener,\n clearTraceListeners,\n tracerHandler: {\n closeGroup: (payload: TraceEvent) => listenerGroupAction('logGroup', payload),\n createTracer: (source: string, options: TracerOptions = {}) => new Tracer(source, listeners, options),\n startGroup: (payload: TraceEvent) => listenerGroupAction('createGroup', payload)\n },\n hasTraceListeners\n }\n}"],"names":["style","bgColor","color","printObject","label","payload","item","index","emptyKeys","key","value","printTracePayload","tracePayload","arg","acc","curr","log","logStyle","args","logTrace","pluginName","event","CustomConsole","__publicField","message","icon","styleDefinition","messageType","TraceConsole","group","groupName","resolvePayload","error","Tracer","source","listeners","options","scope","namespace","level","metadata","matched","listener","buildConsoleArgsFromEvent","sanitizedEvent","formatTraceLabel","createConsoleTraceListener","target","consoleMethod","createFilter","criteria","mode","comparator","eventValue","result","createTraceFilter","listenerDef","filterMode","createTraceListener","createTracerRegistry","addTraceListener","clearTraceListeners","hasTraceListeners"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../src/system/log.ts","../src/system/Tracer.ts","../src/factories/console-trace-listener.ts","../src/factories/trace-listener.ts","../src/factories/trace-registry.ts"],"sourcesContent":["import { pluginName } from '../utils/constantes'\nimport type { Console, LogType, StyleDefinition, StyleDefinitions } from '../types/log'\nimport type { ConsoleTraceEvent, ConsoleTraceEventArgs } from '../types/trace'\nimport { Store } from 'pinia'\n\n\nconst style = (bgColor: string, color: string = 'white') =>\n `background-color: ${bgColor}; color: ${color}; padding: 1px; margin-right: 5px; font-size: 12px`\n\nexport function printObject(label: string, payload: object) {\n const isArray = Array.isArray(payload)\n const isEmpty = isArray ? payload.length === 0 : Object.keys(payload).length === 0\n if (isEmpty) {\n console.log(\n '%c%s',\n 'color: #f86f63; padding: 1px; margin-right: 5px; font-size: 10px',\n `[ ${label} ] Empty`\n )\n return\n }\n\n console.groupCollapsed(\n '%c%s',\n 'color: #f7f7b0; padding: 1px; margin-right: 5px; font-size: 11px',\n `[ ${label} ]`)\n\n if (Array.isArray(payload)) {\n if (typeof payload[0] === 'object') {\n payload.forEach((item: any) => {\n if (item._name) {\n printObject(item._name, item)\n } else if (item._id) {\n printObject(item._id, item)\n } else {\n console.dir(item)\n }\n })\n } else {\n payload.forEach((item: any, index: number) => {\n console.log(\n '%c%s',\n 'color: #cae38f; padding: 1px; margin-right: 5px; font-size: 10px',\n `[ ${index} ]`, item\n )\n })\n }\n } else {\n let emptyKeys: string[] = []\n Object.keys(payload).forEach(key => {\n const value = (payload as Record<string, unknown>)[key]\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n if (typeof value[0] === 'object') {\n printObject(key, value)\n } else {\n console.groupCollapsed(key)\n console.log(value)\n console.groupEnd()\n }\n } else {\n printObject(key, Object.assign({}, value))\n }\n } else {\n if (!value) {\n emptyKeys.push(key)\n } else {\n console.log(\n '%c%s',\n 'color: #b0fa05; padding: 1px; margin-right: 5px; font-size: 10px',\n `[ ${key} ]`, value\n )\n }\n }\n })\n if (emptyKeys.length) {\n console.log(\n '%c%s',\n 'color: #f86f63; font-size: 9px',\n `[ Empty properties ]`, emptyKeys\n )\n }\n }\n console.groupEnd()\n}\n\nfunction printTracePayload(tracePayload: Record<string, unknown>) {\n Object.keys(tracePayload).forEach((key: string) => {\n if (['label', 'namespace', 'scope', 'source'].includes(key)) {\n return\n }\n const arg = tracePayload[key]\n if (!arg) {\n return\n }\n\n switch (typeof arg) {\n case 'string':\n console.log(\n '%c%s',\n 'color: #fafa05; padding: 1px; margin-right: 5px; font-size: 10px',\n `[ ${key} ]`, arg\n )\n break;\n case 'object':\n switch (key) {\n case 'mutation':\n console.groupCollapsed('[mutation]')\n console.dir(arg)\n console.groupEnd()\n break;\n case 'options':\n printObject(key, (arg as { storeOptions?: unknown })?.storeOptions ?? arg)\n break;\n case 'payload':\n printTracePayload(arg as Record<string, unknown>)\n break;\n case 'store':\n printObject(key, {\n $state: (arg as Store)['$state'],\n ...Object.keys(arg).reduce((acc, curr) => {\n if ((curr.startsWith('$') && !['$id', '$state'].includes(curr)) || curr.startsWith('_')) {\n return acc\n }\n\n acc[curr] = (arg as Record<string, unknown>)[curr]\n return acc\n }, {} as Record<string, unknown>)\n })\n break;\n default:\n printObject(key, arg)\n }\n break;\n case 'function':\n console.dir(arg)\n break;\n default:\n console.info(arg)\n }\n })\n}\nexport function log(logStyle: string, args: any) {\n if (!logStyle) {\n throw new Error('Style instructions are required')\n }\n\n console.log(\n '%c%s',\n logStyle,\n args.shift(),\n ...args\n )\n}\n\n\nexport function logTrace(logStyle: string, args: any, pluginName: string) {\n if (!logStyle) {\n throw new Error('Style instructions are required')\n }\n\n const label = args.shift()\n const event = args[0]\n\n if (!event?.payload || Object.keys(event.payload).length === 0) {\n console.log(\n '%c%s',\n logStyle,\n `${event?.label ?? event?.namespace}`,\n event?.source\n )\n return\n }\n\n console.groupCollapsed(\n '%c%s',\n logStyle,\n `${label}\n`, event?.source\n )\n\n args.forEach((arg: any) => {\n switch (typeof arg) {\n case 'string':\n console.info(arg)\n break;\n case 'object':\n if (Array.isArray(arg)) {\n console.table(arg)\n } else {\n printTracePayload(arg)\n }\n break;\n case 'function':\n console.dir(arg)\n break;\n default:\n console.info(arg)\n }\n })\n\n /**\n console.groupCollapsed(\n '%c%s',\n 'color: #fafa05; padding: 1px; margin-right: 5px; font-size: 10px',\n `[ trace ]`\n )\n console.trace()\n console.groupEnd()\n */\n\n console.groupEnd()\n}\n\nexport abstract class CustomConsole implements Console {\n protected _bgColor: string = 'transparent'\n protected _color: string = '#f2f286'\n protected _icon: string = '🍍⚡'\n protected _errorBgColor: string = '#d24545'\n protected _errorColor: string = 'white'\n protected _errorIcon: string = '🍍⚠️'\n protected _pluginName?: string\n protected _styles: StyleDefinitions = {\n error: { bgColor: this._errorBgColor, color: this._errorColor, icon: this._errorIcon },\n info: { bgColor: this._bgColor, color: this._color, icon: this._icon }\n }\n\n protected formatMessage(message: string, icon: string): string {\n return this._pluginName ? ` [${icon} ${this._pluginName}] \n ${message} \n` : message\n }\n\n protected generateStyle(styleDefinition: StyleDefinition): string {\n return style(styleDefinition.bgColor, styleDefinition.color)\n }\n\n protected getStyleDefinition(messageType?: LogType): StyleDefinition {\n return this._styles[messageType ?? 'info']\n }\n\n log(...args: any) {\n this.useLog(\n this.getStyleDefinition(),\n args\n )\n }\n\n error(...args: any) {\n const logType = 'error'\n this.useLog(\n this.getStyleDefinition(logType),\n args\n )\n }\n\n protected rebuildArgs(args: string | any[], icon: string) {\n if (typeof args === 'string') {\n return [args]\n }\n\n if (Array.isArray(args)) {\n return [args.shift(), ...(args ?? [])]\n }\n }\n\n protected useLog(styleDefinition: StyleDefinition, args: any) {\n log(\n this.generateStyle(styleDefinition),\n this.rebuildArgs(args, styleDefinition.icon)\n )\n }\n}\n\nclass PluginConsoleClass extends CustomConsole {\n protected _pluginName: string = pluginName\n}\n\nexport const PluginConsole = new PluginConsoleClass()\n\nexport class TraceConsole extends CustomConsole {\n protected _pluginName: string = pluginName\n\n constructor(pluginName?: string) {\n super()\n if (pluginName) {\n this._pluginName = pluginName\n }\n }\n\n\n logGroup(groups: ConsoleTraceEvent[]) {\n const firstEntry = groups.shift()\n const context = firstEntry?.[1] as ConsoleTraceEventArgs\n\n console.groupCollapsed(\n '%c%s',\n 'color: #68ca59; padding: 1px; margin-right: 5px; font-size: 12px',\n `[ 🍍 ${context?.label ?? context?.namespace} ] - ${context?.scope}`\n )\n if (context?.payload) {\n printTracePayload(context.payload)\n }\n console.groupCollapsed(\n '%c%s',\n 'color: #f1f6b7; padding: 1px; margin-right: 5px; font-size: 11px',\n `[ TRACES ]`\n )\n groups.forEach(group => this.log(...group))\n console.groupEnd()\n console.groupEnd()\n }\n\n protected useLog(styleDefinition: StyleDefinition, args: any) {\n logTrace(\n this.generateStyle(styleDefinition),\n this.rebuildArgs(args, styleDefinition.icon),\n this._pluginName\n )\n }\n}","import type { AnyObject } from '../types'\nimport type {\n TraceEvent,\n TraceEventMetadata,\n TraceLevel,\n TraceListener,\n TracePayload,\n TracerOptions,\n} from '../types/trace'\n\nfunction resolvePayload(payload: TracePayload): AnyObject | undefined {\n if (typeof payload !== 'function') {\n return payload\n }\n\n try {\n return payload()\n } catch (error) {\n return { __tracePayloadError: error }\n }\n}\n\n/**\n * Emits structured trace events.\n *\n * Nothing is allocated when no listener matches:\n * the payload is a factory resolved only once a consumer is known.\n */\nexport default class Tracer {\n private readonly _listeners: TraceListener[] = []\n private _scope?: string\n private readonly _source: string\n\n constructor(source: string, listeners: TraceListener[], options: TracerOptions = {}) {\n this._scope = options.scope\n this._source = source\n this._listeners = listeners\n }\n\n get scope(): string | undefined {\n return this._scope\n }\n\n set scope(scope: string | undefined) {\n this._scope = scope\n }\n\n get source(): string {\n return this._source\n }\n\n debug(label: string, namespace: string, payload?: TracePayload, scope?: string): void {\n this.emit('debug', label, namespace, payload, scope)\n }\n\n /** Relays the error to matching listeners, or reports it when none match. */\n error(label: string, namespace: string, error: unknown, payload?: TracePayload, scope?: string): void {\n this.emit('error', label, namespace, payload, scope, error)\n }\n\n private emit(\n level: TraceLevel,\n label: string,\n namespace: string,\n payload?: TracePayload,\n scope?: string,\n error?: unknown\n ): void {\n if (this._listeners.length === 0) {\n if (level === 'error') {\n console.error('Unhandled error trace event:', error)\n }\n return\n }\n\n const metadata: TraceEventMetadata = {\n label,\n level,\n namespace,\n scope: scope ?? this._scope,\n source: this._source\n }\n\n const matched = this._listeners.filter(listener => {\n try {\n return listener.filter(metadata)\n } catch (error) {\n console.error('Error in trace listener filter:', error)\n return false\n }\n })\n\n if (matched.length === 0) {\n if (level === 'error') {\n console.error('Unhandled error trace event:', error)\n }\n return\n }\n\n const event: TraceEvent = {\n ...metadata,\n ...(error !== undefined && { error }),\n ...(payload !== undefined && { payload: resolvePayload(payload) }),\n timestamp: Date.now()\n }\n\n for (const listener of matched) {\n try {\n listener.handler(event)\n } catch (error) {\n // a faulty listener must never break the traced code\n console.error('Error in trace listener:', error)\n }\n }\n }\n}\n","import { PluginConsole, TraceConsole } from '../system/log'\n\nimport type { Console } from '../types/log'\nimport type {\n ConsoleTraceEvent, ConsoleTraceEventArgs, TraceEvent, TraceListenerGroupBy, ConsoleTraceGroupListener, TraceListener\n} from '../types/trace'\n\n\n/**\n * Builds the console arguments from a trace event.\n * @param event The trace event to build console arguments from.\n * @returns An array containing the formatted trace label and the sanitized event data.\n */\nfunction buildConsoleArgsFromEvent(event: TraceEvent): ConsoleTraceEvent {\n const sanitizedEvent = Object.keys(event).reduce((acc, curr) => {\n if (curr !== 'level' && curr !== 'timestamp') {\n acc[curr] = event[curr as keyof ConsoleTraceEventArgs]\n }\n return acc\n }, {} as Record<string, unknown>)\n\n return [formatTraceLabel(event), sanitizedEvent as ConsoleTraceEventArgs]\n\n /**\n if (event.error !== undefined) {\n args.push(event.error)\n }\n\n if (event.payload !== undefined) {\n if (Array.isArray(event.payload)) {\n args.push(...event.payload)\n } else {\n args.push(event.payload)\n }\n }\n */\n}\n\nfunction formatTraceLabel(event: TraceEvent): string {\n return event.scope\n ? `${event.label} [${event.scope}]`\n : `${event.label}`\n}\n\nfunction log(target: Console, event: TraceEvent): void {\n const consoleMethod = event.level === 'error' ? 'error' : 'log'\n target[consoleMethod](...buildConsoleArgsFromEvent(event))\n}\n\n/**\n * Creates an opt-in trace listener that reproduces the former console output.\n */\nexport function createConsoleTraceListener(target?: Console): Omit<TraceListener, 'filter'> {\n if (!target) {\n target = new TraceConsole()\n }\n\n return {\n handler(event): void {\n log(target, event)\n }\n }\n}\n\n\nexport function createConsoleGroupTraceListener(groupBy: TraceListenerGroupBy = 'scope'): ConsoleTraceGroupListener {\n const target = new TraceConsole()\n const groups = new Map<string, ConsoleTraceEvent[]>()\n\n\n function createGroup(key: string) {\n groups.set(key, [])\n }\n\n function logGroup(key: string): void {\n const group = groups.get(key)\n\n if (!group) {\n target.error(`No group found for key \"${key}\"`)\n return\n }\n\n if (group.length) { target.logGroup(group) }\n\n groups.delete(key)\n }\n\n return {\n createGroup,\n logGroup,\n handler(event): void {\n const groupKey = event[groupBy] as string\n if (!groups.has(groupKey)) {\n log(target, event)\n return\n }\n\n groups.get(groupKey)?.push(buildConsoleArgsFromEvent(event))\n }\n }\n}\n\n\n","import { createConsoleTraceListener, createConsoleGroupTraceListener } from \"./console-trace-listener\"\nimport type {\n ConsoleTraceGroupListener,\n TraceEventMetadata,\n TraceFilterFactoryCriterion,\n TraceFilterFactoryParam,\n TraceGroupListener,\n TraceListener\n} from \"../types/trace\"\n\n\nfunction createFilter(criteria: TraceFilterFactoryCriterion[], mode: 'every' | 'some') {\n return (event: TraceEventMetadata) => {\n return criteria[mode](({ comparator = 'equals', target, value }) => {\n const eventValue = event[target]\n if (typeof eventValue !== 'string') return false\n let result = false\n switch (comparator) {\n case 'equals':\n result = eventValue === value\n break\n case 'contains':\n result = eventValue.includes(value)\n break\n case 'startsWith':\n result = eventValue.startsWith(value)\n break\n case 'endsWith':\n result = eventValue.endsWith(value)\n break\n default:\n result = false\n break\n }\n return result\n })\n }\n}\n\n/**\n * Creates a trace group listener with optional filtering.\n * @param filterDef The filter criteria for the trace events.\n * @param filterMode The mode to apply when evaluating multiple filter criteria: 'every' or 'some'.\n * @param groupBy The key of the trace event metadata to group by.\n * @returns A trace listener configured with group handling and filtering.\n */\nexport function createTraceGroupListener(\n filterDef: TraceFilterFactoryCriterion[],\n filterMode: 'every' | 'some' = 'every',\n groupBy: keyof TraceEventMetadata = 'scope'\n) {\n return {\n groupBy,\n ...createConsoleGroupTraceListener(groupBy),\n ...createTraceFilter(filterDef, filterMode)\n } as TraceGroupListener\n\n}\n\nfunction createTraceFilter(\n listenerDef: TraceFilterFactoryParam | TraceFilterFactoryCriterion[],\n filterMode: 'every' | 'some' = 'every'\n) {\n if (Array.isArray(listenerDef)) {\n listenerDef = {\n filter: createFilter(listenerDef, filterMode)\n }\n }\n\n if (listenerDef.filter && Array.isArray(listenerDef.filter)) {\n listenerDef.filter = createFilter(listenerDef.filter, filterMode)\n }\n\n if (!listenerDef.filter || typeof listenerDef.filter !== 'function') {\n listenerDef = { ...listenerDef, filter: () => true }\n }\n\n return listenerDef\n}\n\n/**\n * Creates a trace listener with optional filtering.\n * @param param The trace listener parameters including handler and optional filter criteria.\n * @param filterMode The mode to apply when evaluating multiple filter criteria: 'every' or 'some'.\n * @returns A trace listener configured with the specified handler and filter.\n */\nexport function createTraceListener(listenerDef: TraceFilterFactoryParam | TraceFilterFactoryCriterion[], filterMode: 'every' | 'some' = 'every'): TraceListener {\n listenerDef = createTraceFilter(listenerDef, filterMode)\n\n if (!listenerDef?.handler) {\n listenerDef = { ...listenerDef, ...createConsoleTraceListener() } as TraceFilterFactoryParam\n }\n\n return listenerDef as TraceListener\n}","import Tracer from '../system/Tracer'\nimport { createTraceGroupListener, createTraceListener } from './trace-listener'\nimport type {\n AddTraceListenerOptions,\n TraceEvent,\n TraceFilterFactoryCriterion,\n TraceFilterFactoryParam,\n TraceGroupListener,\n TraceListener,\n TraceListenerFilterMode,\n TraceListenerRemover,\n TraceRegistry,\n TracerOptions,\n} from '../types/trace'\n\n/**\n * Creates a registry for managing trace listeners and creating tracers.\n * @returns An object containing methods to add and clear trace listeners, and to create tracers.\n */\nexport function createTracerRegistry(): TraceRegistry {\n let listeners: TraceListener[] = []\n\n /**\n * Registers a trace listener and returns its remover.\n * Listeners are evaluated in registration order.\n * @param listener The trace listener to register.\n * @param filterMode The mode to use when creating a trace listener from a filter factory parameter. Defaults to 'every'.\n * @returns A function that removes the registered listener when called.\n */\n function addTraceListener(listener: TraceListener | TraceFilterFactoryParam, filterMode: TraceListenerFilterMode = 'every'): TraceListenerRemover {\n if (!listener || !listener?.handler) {\n listener = createTraceListener(listener, filterMode)\n }\n\n if (!('filter' in listener) || typeof listener.filter !== 'function') {\n listener = { ...listener, filter: () => true }\n }\n\n listeners.push(listener as TraceListener)\n\n return () => {\n const index = listeners.indexOf(listener as TraceListener)\n\n if (index !== -1) {\n listeners.splice(index, 1)\n }\n }\n }\n\n /**\n * Clears all registered trace listeners.\n */\n function clearTraceListeners(): void {\n listeners = []\n }\n\n /**\n * Checks if there are any registered trace listeners.\n * @returns True if there are registered trace listeners, otherwise false.\n */\n function hasTraceListeners(): boolean {\n return listeners.length > 0\n }\n\n return {\n addTraceListener,\n clearTraceListeners,\n createTracer: (source: string, options: TracerOptions = {}) => new Tracer(source, listeners, options),\n hasTraceListeners\n }\n}\n\nexport function createTraceGroupsRegistry() {\n let listeners: TraceGroupListener[] = []\n\n /**\n * Registers a trace listener and returns its remover.\n * Listeners are evaluated in registration order.\n * @param criteria The criteria used to create the trace group listener.\n * @param filterMode The mode to use when creating the trace group listener from the criteria. Defaults to 'every'.\n * @param groupBy The property to group traces by. Defaults to 'scope'.\n * @returns A function that removes the registered trace group listener when called.\n */\n function addListener(\n criteria: TraceFilterFactoryCriterion[],\n { filterMode = 'every', groupBy = 'scope' }: AddTraceListenerOptions = {}\n ): TraceListenerRemover {\n const listenerGroup = createTraceGroupListener(criteria, filterMode ?? 'every', groupBy ?? 'scope')\n listeners.push(listenerGroup)\n\n return () => {\n const index = listeners.indexOf(listenerGroup)\n\n if (index !== -1) {\n listeners.splice(index, 1)\n }\n }\n }\n\n /**\n * Clears all registered trace listeners.\n */\n function clearTraceListeners(): void {\n listeners = []\n }\n\n function getMatchedListener(payload: TraceEvent) {\n return listeners.filter(listener => listener.filter(payload))\n }\n\n /**\n * Checks if there are any registered trace listeners.\n * @returns True if there are registered trace listeners, otherwise false.\n */\n function hasTraceListeners(): boolean {\n return listeners.length > 0\n }\n\n function listenerGroupAction(actionName: 'createGroup' | 'logGroup', payload: TraceEvent) {\n if (!listeners.length) return\n\n getMatchedListener(payload).forEach(listener => {\n const groupLabel = payload[listener.groupBy]\n if (typeof groupLabel === 'string') { listener[actionName](groupLabel) }\n })\n }\n\n\n return {\n addListener,\n clearTraceListeners,\n tracerHandler: {\n closeGroup: (payload: TraceEvent) => listenerGroupAction('logGroup', payload),\n createTracer: (source: string, options: TracerOptions = {}) => new Tracer(source, listeners, options),\n startGroup: (payload: TraceEvent) => listenerGroupAction('createGroup', payload)\n },\n hasTraceListeners\n }\n}"],"names":["style","bgColor","color","printObject","label","payload","item","index","emptyKeys","key","value","printTracePayload","tracePayload","arg","acc","curr","log","logStyle","args","logTrace","pluginName","event","CustomConsole","__publicField","message","icon","styleDefinition","messageType","TraceConsole","groups","context","group","resolvePayload","error","Tracer","source","listeners","options","scope","namespace","level","metadata","matched","listener","buildConsoleArgsFromEvent","sanitizedEvent","formatTraceLabel","target","consoleMethod","createConsoleTraceListener","createConsoleGroupTraceListener","groupBy","createGroup","logGroup","groupKey","createFilter","criteria","mode","comparator","eventValue","result","createTraceGroupListener","filterDef","filterMode","createTraceFilter","listenerDef","createTraceListener","createTracerRegistry","addTraceListener","clearTraceListeners","hasTraceListeners","createTraceGroupsRegistry","addListener","listenerGroup","getMatchedListener","listenerGroupAction","actionName","groupLabel"],"mappings":"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"}
|
|
@@ -1,59 +1,59 @@
|
|
|
1
1
|
var k = Object.defineProperty;
|
|
2
|
-
var E = (
|
|
3
|
-
var c = (
|
|
4
|
-
import { h as O, g as b, i as _, p as g } from "./chunks/constantes-
|
|
5
|
-
import { P as
|
|
2
|
+
var E = (s, t, e) => t in s ? k(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;
|
|
3
|
+
var c = (s, t, e) => E(s, typeof t != "symbol" ? t + "" : t, e);
|
|
4
|
+
import { h as O, g as b, i as _, p as g } from "./chunks/constantes-2FeJfVVy.js";
|
|
5
|
+
import { P as T, S as K, d as M, a as F, b as W, c as I, e as q, s as z } from "./chunks/constantes-2FeJfVVy.js";
|
|
6
6
|
import { toRaw as y } from "vue";
|
|
7
|
-
function h(
|
|
7
|
+
function h(s) {
|
|
8
8
|
if (typeof structuredClone == "function")
|
|
9
9
|
try {
|
|
10
|
-
return structuredClone(
|
|
10
|
+
return structuredClone(s);
|
|
11
11
|
} catch {
|
|
12
12
|
}
|
|
13
|
-
if (
|
|
14
|
-
return
|
|
15
|
-
if (
|
|
13
|
+
if (s === null || typeof s != "object")
|
|
14
|
+
return s;
|
|
15
|
+
if (s instanceof Map)
|
|
16
16
|
return new Map(
|
|
17
|
-
Array.from(
|
|
17
|
+
Array.from(s.entries(), ([e, i]) => [h(e), h(i)])
|
|
18
18
|
);
|
|
19
|
-
if (
|
|
20
|
-
return new Set(Array.from(
|
|
21
|
-
if (Array.isArray(
|
|
22
|
-
return
|
|
23
|
-
if (Object.getPrototypeOf(
|
|
19
|
+
if (s instanceof Set)
|
|
20
|
+
return new Set(Array.from(s.values(), (e) => h(e)));
|
|
21
|
+
if (Array.isArray(s))
|
|
22
|
+
return s.map((e) => h(e));
|
|
23
|
+
if (Object.getPrototypeOf(s) === Object.prototype || Object.getPrototypeOf(s) === null)
|
|
24
24
|
return Object.fromEntries(
|
|
25
|
-
Object.entries(
|
|
25
|
+
Object.entries(s).map(([e, i]) => [e, h(i)])
|
|
26
26
|
);
|
|
27
|
-
const t = Object.create(Object.getPrototypeOf(
|
|
28
|
-
for (const [e, i] of Object.entries(
|
|
27
|
+
const t = Object.create(Object.getPrototypeOf(s));
|
|
28
|
+
for (const [e, i] of Object.entries(s))
|
|
29
29
|
t[e] = h(i);
|
|
30
30
|
return t;
|
|
31
31
|
}
|
|
32
|
-
function
|
|
32
|
+
function $(s, t = "all") {
|
|
33
33
|
if (Array.isArray(t)) {
|
|
34
34
|
const e = {};
|
|
35
35
|
for (const i of t)
|
|
36
|
-
i in
|
|
36
|
+
i in s && (e[i] = h(y(s[i])));
|
|
37
37
|
return e;
|
|
38
38
|
}
|
|
39
39
|
if (t !== "all")
|
|
40
40
|
throw new Error(`Invalid keys parameter: ${t}`);
|
|
41
|
-
return h(y(
|
|
41
|
+
return h(y(s));
|
|
42
42
|
}
|
|
43
|
-
class
|
|
43
|
+
class m {
|
|
44
44
|
constructor() {
|
|
45
45
|
c(this, "_stateSnapshots", /* @__PURE__ */ new Map());
|
|
46
46
|
c(this, "_storeHasRollbackSnapshots", /* @__PURE__ */ new Set());
|
|
47
47
|
c(this, "_storeRollbackSnapshotsParams", /* @__PURE__ */ new Map());
|
|
48
48
|
}
|
|
49
49
|
addRollbackAction(t) {
|
|
50
|
-
typeof t.$rollbackAfterFailure != "function" && (t.$rollbackAfterFailure = async ({ action: e, stateKeys: i },
|
|
50
|
+
typeof t.$rollbackAfterFailure != "function" && (t.$rollbackAfterFailure = async ({ action: e, stateKeys: i }, r = []) => {
|
|
51
51
|
const n = t[e];
|
|
52
52
|
if (typeof n != "function" || O(e))
|
|
53
53
|
return;
|
|
54
54
|
const o = !i || i.length === 0 ? "all" : i, a = this.saveStateSnapshot(t, e, o);
|
|
55
55
|
try {
|
|
56
|
-
await n.apply(t,
|
|
56
|
+
await n.apply(t, r);
|
|
57
57
|
} catch (u) {
|
|
58
58
|
throw this.patchStore(a, t), u;
|
|
59
59
|
} finally {
|
|
@@ -67,7 +67,7 @@ class C {
|
|
|
67
67
|
);
|
|
68
68
|
if (!i)
|
|
69
69
|
return;
|
|
70
|
-
const
|
|
70
|
+
const r = i.length === 0 ? "all" : i, n = this.saveStateSnapshot(e, t, r);
|
|
71
71
|
return {
|
|
72
72
|
after: () => {
|
|
73
73
|
this.removeStateSnapshot(n);
|
|
@@ -79,10 +79,10 @@ class C {
|
|
|
79
79
|
}
|
|
80
80
|
initFromPluginContext({ options: t, store: e }) {
|
|
81
81
|
const i = t?.storeOptions?.rollbackAfterFailure;
|
|
82
|
-
i && !this._storeHasRollbackSnapshots.has(e.$id) && (Object.keys(i).forEach((
|
|
82
|
+
i && !this._storeHasRollbackSnapshots.has(e.$id) && (Object.keys(i).forEach((r) => {
|
|
83
83
|
this._storeRollbackSnapshotsParams.set(
|
|
84
|
-
b(
|
|
85
|
-
i[
|
|
84
|
+
b(r, e),
|
|
85
|
+
i[r]
|
|
86
86
|
);
|
|
87
87
|
}), this._storeHasRollbackSnapshots.add(e.$id)), this.addRollbackAction(e);
|
|
88
88
|
}
|
|
@@ -99,38 +99,38 @@ class C {
|
|
|
99
99
|
if (i)
|
|
100
100
|
try {
|
|
101
101
|
e.$patch(i);
|
|
102
|
-
} catch (
|
|
103
|
-
console.error(`Failed to patch store with snapshot ${String(t)}`,
|
|
102
|
+
} catch (r) {
|
|
103
|
+
console.error(`Failed to patch store with snapshot ${String(t)}`, r);
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
removeStateSnapshot(t) {
|
|
107
107
|
t && this._stateSnapshots.delete(t);
|
|
108
108
|
}
|
|
109
109
|
saveStateSnapshot(t, e, i) {
|
|
110
|
-
const
|
|
110
|
+
const r = $(
|
|
111
111
|
t.$state,
|
|
112
112
|
i
|
|
113
113
|
), n = /* @__PURE__ */ Symbol(`${t.$id}:${e}`);
|
|
114
|
-
return this._stateSnapshots.set(n,
|
|
114
|
+
return this._stateSnapshots.set(n, r), n;
|
|
115
115
|
}
|
|
116
116
|
storeHasRollbackSnapshots(t) {
|
|
117
117
|
return this._storeHasRollbackSnapshots.has(t.$id);
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
const
|
|
120
|
+
const C = "PluginSubscription", w = {
|
|
121
121
|
environment: "both",
|
|
122
122
|
hydration: "immediate"
|
|
123
123
|
};
|
|
124
|
-
function
|
|
124
|
+
function H(s) {
|
|
125
125
|
if (typeof window < "u" && typeof window.requestAnimationFrame == "function") {
|
|
126
|
-
window.requestAnimationFrame(() => globalThis.setTimeout(
|
|
126
|
+
window.requestAnimationFrame(() => globalThis.setTimeout(s, 0));
|
|
127
127
|
return;
|
|
128
128
|
}
|
|
129
|
-
globalThis.setTimeout(
|
|
129
|
+
globalThis.setTimeout(s, 0);
|
|
130
130
|
}
|
|
131
131
|
class A {
|
|
132
132
|
constructor(t, e) {
|
|
133
|
-
c(this, "_className",
|
|
133
|
+
c(this, "_className", C);
|
|
134
134
|
c(this, "_hydrationScheduler");
|
|
135
135
|
c(this, "_onActionSubscriptions", /* @__PURE__ */ new Map());
|
|
136
136
|
c(this, "_onActionStores", /* @__PURE__ */ new Set());
|
|
@@ -139,7 +139,7 @@ class A {
|
|
|
139
139
|
c(this, "_options");
|
|
140
140
|
c(this, "_resetStoreCallback", /* @__PURE__ */ new Map());
|
|
141
141
|
c(this, "_disposedStores", /* @__PURE__ */ new WeakSet());
|
|
142
|
-
c(this, "_storeRollbackSnapshotsHandler", new
|
|
142
|
+
c(this, "_storeRollbackSnapshotsHandler", new m());
|
|
143
143
|
c(this, "_subscribers", []);
|
|
144
144
|
c(this, "_subscribersDelivered", /* @__PURE__ */ new Set());
|
|
145
145
|
c(this, "_subscribersScheduled", /* @__PURE__ */ new Set());
|
|
@@ -147,7 +147,7 @@ class A {
|
|
|
147
147
|
c(this, "_subscriptionsDelivered", /* @__PURE__ */ new Set());
|
|
148
148
|
c(this, "_subscriptionsScheduled", /* @__PURE__ */ new Set());
|
|
149
149
|
c(this, "_tracer");
|
|
150
|
-
this._hydrationScheduler = e?.hydrationScheduler ??
|
|
150
|
+
this._hydrationScheduler = e?.hydrationScheduler ?? H, this._options = e, this._subscribers = t, this.initializeTracer();
|
|
151
151
|
}
|
|
152
152
|
set subscribers(t) {
|
|
153
153
|
this._subscribers = t;
|
|
@@ -157,12 +157,12 @@ class A {
|
|
|
157
157
|
return this._subscriptions;
|
|
158
158
|
}
|
|
159
159
|
addOnActionAfterCallback(t, e, i) {
|
|
160
|
-
const
|
|
161
|
-
this._onActionAfterSubscriptions[
|
|
160
|
+
const r = b(t, e);
|
|
161
|
+
this._onActionAfterSubscriptions[r] || (this._onActionAfterSubscriptions[r] = []), this._onActionAfterSubscriptions[r]?.push(i);
|
|
162
162
|
}
|
|
163
163
|
addOnActionOnErrorCallback(t, e, i) {
|
|
164
|
-
const
|
|
165
|
-
this._onActionOnErrorSubscriptions[
|
|
164
|
+
const r = b(t, e);
|
|
165
|
+
this._onActionOnErrorSubscriptions[r] || (this._onActionOnErrorSubscriptions[r] = []), this._onActionOnErrorSubscriptions[r]?.push(i);
|
|
166
166
|
}
|
|
167
167
|
addResetStoreCallback(t, e) {
|
|
168
168
|
this._resetStoreCallback.has(t) || this._resetStoreCallback.set(t, /* @__PURE__ */ new Set()), this._resetStoreCallback.get(t).add(e);
|
|
@@ -199,12 +199,12 @@ class A {
|
|
|
199
199
|
createRollbackSnapshot(t, e) {
|
|
200
200
|
const {
|
|
201
201
|
after: i,
|
|
202
|
-
onError:
|
|
202
|
+
onError: r
|
|
203
203
|
} = this._storeRollbackSnapshotsHandler.createOnActionCallbacks(
|
|
204
204
|
t,
|
|
205
205
|
e
|
|
206
206
|
) ?? {};
|
|
207
|
-
!i || !
|
|
207
|
+
!i || !r || (this.addOnActionAfterCallback(t, e, i), this.addOnActionOnErrorCallback(t, e, r));
|
|
208
208
|
}
|
|
209
209
|
defineCurrentEnvironment() {
|
|
210
210
|
return this._options?.runtimeEnvironment ?? (typeof window > "u" ? "server" : "client");
|
|
@@ -233,13 +233,10 @@ class A {
|
|
|
233
233
|
if (this._onActionStores.has(t) || typeof t.$onAction != "function")
|
|
234
234
|
return;
|
|
235
235
|
const e = this._onActionSubscriptions.get(t), i = this._storeRollbackSnapshotsHandler.storeHasRollbackSnapshots(t);
|
|
236
|
-
!e?.size && !i || (this._onActionStores.add(t), t.$onAction(({ after:
|
|
236
|
+
!e?.size && !i || (this._onActionStores.add(t), t.$onAction(({ after: r, args: n, name: o, onError: a }) => {
|
|
237
|
+
this.traceGroupStart(() => ({ args: n, name: o }), t.$id, "onAction");
|
|
237
238
|
const u = b(o, t);
|
|
238
|
-
this.
|
|
239
|
-
args: n,
|
|
240
|
-
name: o,
|
|
241
|
-
store: t
|
|
242
|
-
}, t.$id), this._storeRollbackSnapshotsHandler.storeHasRollbackSnapshots(t) && this.createRollbackSnapshot(o, t);
|
|
239
|
+
this._storeRollbackSnapshotsHandler.storeHasRollbackSnapshots(t) && this.createRollbackSnapshot(o, t);
|
|
243
240
|
const l = this._onActionSubscriptions.get(t);
|
|
244
241
|
l?.size && l.forEach((d) => d({
|
|
245
242
|
after: this.createOnActionAfterCallbackCollector(o, t),
|
|
@@ -247,60 +244,62 @@ class A {
|
|
|
247
244
|
name: o,
|
|
248
245
|
onError: this.createOnActionOnErrorCallbackCollector(o, t)
|
|
249
246
|
}));
|
|
250
|
-
const
|
|
251
|
-
this.clearOnActionCallbacksSubscriptions(u),
|
|
247
|
+
const f = this._onActionAfterSubscriptions[u], p = this._onActionOnErrorSubscriptions[u];
|
|
248
|
+
this.clearOnActionCallbacksSubscriptions(u), f?.length && r((d) => {
|
|
249
|
+
f.forEach((S) => S(d)), this.traceGroupEnd({}, t.$id);
|
|
250
|
+
}), p?.length && a((d) => {
|
|
252
251
|
p.forEach((S) => S(d));
|
|
253
|
-
}), f?.length
|
|
254
|
-
f.forEach((S) => S(d));
|
|
255
|
-
});
|
|
252
|
+
}), f?.length || this.traceGroupEnd({}, t.$id);
|
|
256
253
|
}));
|
|
257
254
|
}
|
|
258
255
|
executeSubscriber(t, e) {
|
|
259
256
|
const i = this.defineSubscriberKey(e, t.store);
|
|
260
|
-
if (this._subscribersDelivered.has(i) || !e.invoke(t, this._options?.createTracer))
|
|
257
|
+
if (this._subscribersDelivered.has(i) || !e.invoke(t, this._options?.tracerHandler?.createTracer))
|
|
261
258
|
return;
|
|
262
259
|
this._subscribersDelivered.add(i);
|
|
263
|
-
let
|
|
260
|
+
let r;
|
|
264
261
|
try {
|
|
265
|
-
|
|
262
|
+
r = e.hydrate?.(t);
|
|
266
263
|
} catch (o) {
|
|
267
|
-
this.traceError("subscriber:hydrate", o,
|
|
264
|
+
this.traceError("subscriber:hydrate", o, t.store.$id);
|
|
268
265
|
return;
|
|
269
266
|
}
|
|
270
267
|
const n = () => {
|
|
271
268
|
try {
|
|
272
269
|
const o = e.afterHydration?.(t);
|
|
273
|
-
o && typeof o.then == "function" && o.catch(
|
|
270
|
+
o && typeof o.then == "function" && o.catch(
|
|
271
|
+
(a) => this.traceError("subscriber:afterHydration", a, t.store.$id)
|
|
272
|
+
);
|
|
274
273
|
} catch (o) {
|
|
275
|
-
this.traceError("subscriber:afterHydration", o,
|
|
274
|
+
this.traceError("subscriber:afterHydration", o, t.store.$id);
|
|
276
275
|
}
|
|
277
276
|
};
|
|
278
|
-
|
|
277
|
+
r && typeof r.then == "function" ? r.then(() => n()).catch((o) => this.traceError("subscriber:hydrate", o, t.store.$id)) : n(), e.subscriptions && this.subscriptionDelivery(t, e.subscriptions), e.storeMutationSubscription && this.storeMutationSubscription(e.storeMutationSubscription), this.storeOnActionSubscription(e), e.resetStoreCallback && this.addResetStoreCallback(t.store, e.resetStoreCallback);
|
|
279
278
|
}
|
|
280
279
|
executeSubscriberSafely(t, e) {
|
|
281
280
|
try {
|
|
282
281
|
this.executeSubscriber(t, e);
|
|
283
282
|
} catch (i) {
|
|
284
|
-
this.traceError("subscriber:execute", i,
|
|
283
|
+
this.traceError("subscriber:execute", i, t.store.$id);
|
|
285
284
|
}
|
|
286
285
|
}
|
|
287
286
|
initializeTracer() {
|
|
288
|
-
this._options?.
|
|
287
|
+
this._options?.tracerHandler && (this._tracer = this._options.tracerHandler.createTracer(g));
|
|
289
288
|
}
|
|
290
289
|
plugin({ store: t, options: e }) {
|
|
291
290
|
if (this._subscribers.length) {
|
|
292
|
-
this.
|
|
291
|
+
this.traceGroupStart(() => ({
|
|
293
292
|
subscribers: this._subscribers,
|
|
294
293
|
store: t,
|
|
295
294
|
options: e
|
|
296
|
-
}, t.$id);
|
|
295
|
+
}), t.$id);
|
|
297
296
|
try {
|
|
298
297
|
this._subscribers.forEach(
|
|
299
298
|
(i) => {
|
|
300
|
-
const
|
|
301
|
-
if (!(this._subscribersDelivered.has(
|
|
299
|
+
const r = this.defineSubscriberKey(i, t), n = this.definePluginExecution(i);
|
|
300
|
+
if (!(this._subscribersDelivered.has(r) || this._subscribersScheduled.has(r)) && this.shouldInvokePlugin(n)) {
|
|
302
301
|
if (this.shouldScheduleAfterHydration(n)) {
|
|
303
|
-
this.queueSubscriberExecution({ store: t, options: e }, i,
|
|
302
|
+
this.queueSubscriberExecution({ store: t, options: e }, i, r);
|
|
304
303
|
return;
|
|
305
304
|
}
|
|
306
305
|
this.executeSubscriber({ store: t, options: e }, i);
|
|
@@ -308,13 +307,14 @@ class A {
|
|
|
308
307
|
}
|
|
309
308
|
), this.rewriteResetStore({ store: t }, t.$state), this._storeRollbackSnapshotsHandler.initFromPluginContext({ store: t, options: e }), this.executeStoreOnActionSubscription(t), this.registerStoreCleanup(t);
|
|
310
309
|
} catch (i) {
|
|
311
|
-
this.traceError("plugin:invoke", i,
|
|
310
|
+
this.traceError("plugin:invoke", i, t.$id);
|
|
312
311
|
}
|
|
312
|
+
this.traceGroupEnd(() => ({}), t.$id);
|
|
313
313
|
}
|
|
314
314
|
}
|
|
315
315
|
queueSubscriberExecution(t, e, i) {
|
|
316
|
-
const
|
|
317
|
-
this._subscribersScheduled.add(i),
|
|
316
|
+
const r = this.defineHydrationScheduler(e);
|
|
317
|
+
this._subscribersScheduled.add(i), r(() => {
|
|
318
318
|
this._disposedStores.has(t.store) || (this._subscribersScheduled.delete(i), this.executeSubscriberSafely(t, e));
|
|
319
319
|
});
|
|
320
320
|
}
|
|
@@ -327,10 +327,7 @@ class A {
|
|
|
327
327
|
rewriteResetStore({ store: t }, e) {
|
|
328
328
|
const i = h(e);
|
|
329
329
|
t.$reset = () => {
|
|
330
|
-
this.trace("store:reset", {
|
|
331
|
-
initState: i,
|
|
332
|
-
store: t
|
|
333
|
-
}, t.$id), this.executeResetStoreCallbacks(t), t.$patch(h(i));
|
|
330
|
+
this.trace("store:reset", t.$id, () => ({ initialState: i })), this.executeResetStoreCallbacks(t), t.$patch(h(i));
|
|
334
331
|
};
|
|
335
332
|
}
|
|
336
333
|
shouldInvokePlugin(t) {
|
|
@@ -346,36 +343,35 @@ class A {
|
|
|
346
343
|
}
|
|
347
344
|
storeMutationSubscription(t) {
|
|
348
345
|
const { store: e, callback: i } = t();
|
|
349
|
-
e.$subscribe((
|
|
350
|
-
this.
|
|
346
|
+
e.$subscribe((r) => {
|
|
347
|
+
this.traceGroupStart(() => ({ mutation: r }), e.$id, "store:mutation"), i(r), this.traceGroupEnd({}, e.$id);
|
|
351
348
|
});
|
|
352
349
|
}
|
|
353
350
|
subscriptionDelivery(t, e) {
|
|
354
|
-
Object.entries(e).forEach(([i,
|
|
355
|
-
const n = this.defineSubscriptionKey(i, t.store), o = this.definePluginExecution(
|
|
351
|
+
Object.entries(e).forEach(([i, r]) => {
|
|
352
|
+
const n = this.defineSubscriptionKey(i, t.store), o = this.definePluginExecution(r.subscription);
|
|
356
353
|
if (!(this._subscriptionsDelivered.has(n) || this._subscriptionsScheduled.has(n)) && this.shouldInvokePlugin(o)) {
|
|
357
354
|
if (this.shouldScheduleAfterHydration(o)) {
|
|
358
|
-
const a = this.defineHydrationScheduler(
|
|
355
|
+
const a = this.defineHydrationScheduler(r.subscription);
|
|
359
356
|
this._subscriptionsScheduled.add(n), a(() => {
|
|
360
|
-
this._disposedStores.has(t.store) || (this._subscriptionsScheduled.delete(n), this.subscriptionDeliverySafely(t, i,
|
|
357
|
+
this._disposedStores.has(t.store) || (this._subscriptionsScheduled.delete(n), this.subscriptionDeliverySafely(t, i, r));
|
|
361
358
|
});
|
|
362
359
|
return;
|
|
363
360
|
}
|
|
364
|
-
this.subscriptionDeliverySafely(t, i,
|
|
361
|
+
this.subscriptionDeliverySafely(t, i, r);
|
|
365
362
|
}
|
|
366
363
|
});
|
|
367
364
|
}
|
|
368
|
-
subscriptionDeliverySafely({ store: t, options: e }, i,
|
|
365
|
+
subscriptionDeliverySafely({ store: t, options: e }, i, r) {
|
|
369
366
|
try {
|
|
370
367
|
if (this._subscriptionsDelivered.has(this.defineSubscriptionKey(i, t)))
|
|
371
368
|
return;
|
|
372
|
-
const { subscription: n, subscriptionOptions: o, stores: a } =
|
|
373
|
-
this.trace("
|
|
369
|
+
const { subscription: n, subscriptionOptions: o, stores: a } = r;
|
|
370
|
+
this.trace("Subscription:delivery", t.$id, () => ({
|
|
374
371
|
pluginName: i,
|
|
375
372
|
subscription: n,
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
}, t.$id);
|
|
373
|
+
subscriptionOptions: o
|
|
374
|
+
}));
|
|
379
375
|
const u = {
|
|
380
376
|
storeOptions: { ...e?.storeOptions ?? {}, ...o }
|
|
381
377
|
};
|
|
@@ -392,22 +388,28 @@ class A {
|
|
|
392
388
|
})
|
|
393
389
|
);
|
|
394
390
|
} catch (n) {
|
|
395
|
-
this.traceError("subscription:delivery", n,
|
|
391
|
+
this.traceError("subscription:delivery", n, t.$id);
|
|
396
392
|
}
|
|
397
393
|
}
|
|
398
394
|
trace(t, e, i) {
|
|
399
|
-
this._tracer && (t = this._className + ":" + t, this._tracer.debug(t, t.toLowerCase(),
|
|
395
|
+
this._tracer && (t = this._className + ":" + t, this._tracer.debug(t, t.toLowerCase(), i, e));
|
|
396
|
+
}
|
|
397
|
+
traceError(t, e, i, r) {
|
|
398
|
+
this._tracer ? (t = this._className + ":" + t, this._tracer.error(t, t.toLowerCase(), e, r, i)) : console.error(e);
|
|
399
|
+
}
|
|
400
|
+
traceGroupEnd(t, e) {
|
|
401
|
+
this._options?.tracerHandler && this._options.tracerHandler.closeGroup({ ...typeof t == "function" ? t() : t, scope: e });
|
|
400
402
|
}
|
|
401
|
-
|
|
402
|
-
this.
|
|
403
|
+
traceGroupStart(t, e, i) {
|
|
404
|
+
this._options?.tracerHandler && (this._options.tracerHandler.startGroup({ ...typeof t == "function" ? t() : t, scope: e }), this.trace(i ?? "context", e, t));
|
|
403
405
|
}
|
|
404
406
|
}
|
|
405
|
-
function
|
|
406
|
-
const e = new A(
|
|
407
|
+
function x(s, t) {
|
|
408
|
+
const e = new A(s, t);
|
|
407
409
|
return e.plugin.bind(e);
|
|
408
410
|
}
|
|
409
|
-
function
|
|
410
|
-
const e = new A(
|
|
411
|
+
function D(s, t) {
|
|
412
|
+
const e = new A(s, {
|
|
411
413
|
execution: t?.execution,
|
|
412
414
|
hydrationScheduler: t?.hydrationScheduler,
|
|
413
415
|
runtimeEnvironment: t?.runtimeEnvironment,
|
|
@@ -417,16 +419,16 @@ function j(r, t) {
|
|
|
417
419
|
}
|
|
418
420
|
export {
|
|
419
421
|
g as PLUGIN_NAME,
|
|
420
|
-
|
|
422
|
+
T as PluginSubscriber,
|
|
421
423
|
A as PluginSubscription,
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
424
|
+
K as Store,
|
|
425
|
+
D as createHydrationPlugin,
|
|
426
|
+
x as createPlugin,
|
|
427
|
+
M as defineAStore,
|
|
428
|
+
F as defineAStoreCtx,
|
|
429
|
+
W as getDefineAStoreSetupContext,
|
|
430
|
+
I as getEnhancedStore,
|
|
431
|
+
q as getExtendingStore,
|
|
432
|
+
z as setEnhancedStore
|
|
431
433
|
};
|
|
432
434
|
//# sourceMappingURL=pinia-plugin-subscription.js.map
|