pinia-plugin-subscription 0.2.0-beta.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -1
- package/README.md +47 -341
- package/dist/chunks/{index-D-rnwSJk.js → index-VL_PgzVK.js} +27 -33
- package/dist/chunks/index-VL_PgzVK.js.map +1 -0
- package/dist/core/RollbackStateSnapshotsHandler.d.ts +1 -0
- package/dist/helpers.js +2 -1
- package/dist/helpers.js.map +1 -0
- package/dist/lib/main.d.ts +1 -1
- package/dist/pinia-plugin-subscription.js +4 -69
- package/dist/pinia-plugin-subscription.js.map +1 -0
- package/dist/plugins/createPlugin.d.ts +4 -1
- package/dist/tests/defineAStore.test-d.d.ts +1 -0
- package/dist/tests/storeOptionsExtensions.test-d.d.ts +12 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/store.d.ts +32 -2
- package/dist/utils/deep-clone.d.ts +6 -0
- package/dist/utils/store.d.ts +77 -8
- package/docs/authoring-plugins.md +408 -0
- package/docs/using-plugins.md +374 -0
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-VL_PgzVK.js","sources":["../../src/core/PluginSubscriber.ts","../../src/system/Debug.ts","../../src/utils/store.ts","../../src/utils/validation/index.ts","../../src/core/Store.ts","../../src/utils/constantes.ts","../../src/system/log.ts"],"sourcesContent":["import Store from \"./Store\";\nimport type { PiniaPluginContext, Store as PiniaStore } from \"pinia\";\nimport type { AnyObject } from \"../types\";\nimport type {\n PluginExecutionOptions,\n PluginHydrationScheduler,\n PluginSubscriber as PluginSubscriberInterface,\n PluginSubscriptions,\n StoreMutationSubscription,\n StoreOnActionSubscription\n} from \"../types/plugin\";\nimport type { Console } from \"../types/log\";\n\n\ntype CreateInstance<Instance = Store> = (store: PiniaStore, options: AnyObject, debug: boolean, customConsole?: Console) => Instance | undefined\n\n\nexport default abstract class PluginSubscriber<Instance extends Store> implements PluginSubscriberInterface {\n private _console?: Console\n private _createInstance: CreateInstance\n private _name: string\n private _pluginOptions?: AnyObject\n private _storeInstance?: Instance\n protected _resetStoreCallback?: (store?: PiniaStore) => void\n private _storeOnActionSubscription?: StoreOnActionSubscription\n private _storeMutationSubscription?: StoreMutationSubscription\n private _subscriptions?: PluginSubscriptions\n protected pluginCreated?: (store: PiniaStore) => void\n public execution?: PluginExecutionOptions\n public hydrationScheduler?: PluginHydrationScheduler\n\n\n get console(): Console {\n return this._console ?? console\n }\n\n get name(): string {\n return this._name;\n }\n\n get storeInstance(): Instance | undefined {\n return this._storeInstance\n }\n\n get pluginOptions(): AnyObject {\n return this._pluginOptions ?? {};\n }\n\n set pluginOptions(options: AnyObject | undefined) {\n this._pluginOptions = options;\n }\n\n get resetStoreCallback(): ((store?: PiniaStore) => void) | undefined {\n return this._resetStoreCallback as ((store?: PiniaStore) => void) | undefined;\n }\n\n get storeOnActionSubscription(): StoreOnActionSubscription | undefined {\n return this._storeOnActionSubscription;\n }\n\n get storeMutationSubscription(): StoreMutationSubscription | undefined {\n return this._storeMutationSubscription;\n }\n\n get subscriptions(): PluginSubscriptions | undefined {\n return this._subscriptions\n }\n\n set subscriptions(subscriptions: PluginSubscriptions) {\n this._subscriptions = subscriptions\n }\n\n\n constructor(pluginName: string, createInstanceFunction: CreateInstance, pluginConsole?: Console) {\n this._name = pluginName\n this._createInstance = createInstanceFunction\n\n if (pluginConsole) {\n this._console = pluginConsole\n }\n }\n\n\n public afterHydration(context: PiniaPluginContext, debug: boolean): void | Promise<void> {\n return\n }\n\n public hydrate(context: PiniaPluginContext, debug: boolean): void | Promise<void> {\n return\n }\n\n public invoke(\n { store, options }: PiniaPluginContext,\n debug: boolean\n ): boolean {\n this._storeInstance = this._createInstance(store, { ...options, ...this.pluginOptions }, debug, this.console) as Instance\n\n if (!this._storeInstance) {\n return false\n }\n\n this._subscriptions = this._storeInstance.getSubscriptions()\n this._storeMutationSubscription = this._storeInstance.storeSubscribe\n this._storeOnActionSubscription = this._storeInstance.onAction\n\n if (this.pluginCreated) {\n this.pluginCreated(store)\n }\n\n return true\n }\n}","import type { Console } from \"../types/log\"\n\nexport default abstract class Debug {\n protected abstract _className: string\n private _console?: Console\n private _debug: boolean = false\n\n get console(): Console {\n return this._console ?? console\n }\n set console(customConsole: Console) {\n this._console = customConsole\n }\n\n get debug(): boolean { return this._debug }\n set debug(debug: boolean) { this._debug = debug }\n\n constructor(debug: boolean, customConsole?: Console) {\n this._debug = debug\n\n if (customConsole) {\n this._console = customConsole\n }\n }\n\n\n debugLog(...args: any): void {\n if (this._debug) {\n if (Array.isArray(args)) {\n args[0] = `${this._className} - ${args[0]}`\n }\n this.console.log(...args)\n }\n }\n\n logError(...args: any): void {\n this.console.error(...args)\n }\n}","import { defineStore } from \"pinia\"\nimport type {\n DefineSetupStoreOptions,\n DefineStoreOptions,\n SetupStoreDefinition,\n StateTree,\n Store,\n StoreDefinition,\n _ExtractActionsFromSetupStore,\n _ExtractGettersFromSetupStore,\n _ExtractStateFromSetupStore,\n _GettersTree\n} from \"pinia\"\nimport type { AnyObject } from \"../types\"\nimport type {\n DefineAStoreDefinition,\n DefineAStoreSetupContext,\n EmptyExtensions,\n PluginStoreOptions,\n StoreOptions\n} from \"../types/store\"\n\n\nexport const itemState = {\n '@id': undefined,\n id: undefined\n}\n\ntype DefineAStoreSetup<SS, TExtraExtensions extends Record<string, unknown> = EmptyExtensions> =\n (ctx: DefineAStoreSetupContext<SS, TExtraExtensions>) => SS\n\n/**\n * Options parameter of pinia's `defineStore()` for setup stores, derived from\n * the setup function return type.\n */\ntype DefineAStoreSetupOptions<Id extends string, SS> = DefineSetupStoreOptions<\n Id,\n _ExtractStateFromSetupStore<SS>,\n _ExtractGettersFromSetupStore<SS>,\n _ExtractActionsFromSetupStore<SS>\n>\n\nconst defineAStoreSetupContexts = new WeakMap<object, DefineAStoreSetupContext<AnyObject>>()\nconst defineAStoreSetupContextsById = new Map<string, DefineAStoreSetupContext<AnyObject>>()\nconst setupContextDisposeWrappedStores = new WeakSet<object>()\nconst setupContextMapWarnThreshold = 50\n\nfunction isSetupContextDebugEnabled(options: PluginStoreOptions): boolean {\n return options?.storeOptions?.debug === true\n}\n\nfunction logSetupContextMapSizes(id: string, options: PluginStoreOptions, action: string): void {\n if (!isSetupContextDebugEnabled(options)) {\n return\n }\n\n const setupContextByIdSize = defineAStoreSetupContextsById.size\n console.debug(`[defineAStoreSetup] ${id} - ${action} (contextsById=${setupContextByIdSize})`)\n\n if (setupContextByIdSize >= setupContextMapWarnThreshold) {\n console.warn(`[defineAStoreSetup] contextsById reached ${setupContextByIdSize} entries`)\n }\n}\n\nfunction registerSetupContextCleanupOnDispose(\n store: AnyObject,\n id: string,\n options: PluginStoreOptions\n): void {\n if (setupContextDisposeWrappedStores.has(store) || typeof store.$dispose !== 'function') {\n return\n }\n\n const originalDispose = store.$dispose as (...args: unknown[]) => unknown\n store.$dispose = (...args: unknown[]) => {\n defineAStoreSetupContexts.delete(store)\n defineAStoreSetupContextsById.delete(id)\n logSetupContextMapSizes(id, options, 'dispose cleanup')\n return originalDispose.apply(store, args)\n }\n setupContextDisposeWrappedStores.add(store)\n}\n\n/**\n * Define a store with the setup API. State, getters and actions are inferred\n * from the setup function return, exactly like pinia's `defineStore`, so\n * store members are listed by IDEs and action prototypes are preserved.\n * @template Id The type of the store identifier.\n * @template SS The type of the setup function return.\n * @param id The unique identifier for the store.\n * @param storeDefinition The setup function defining the store.\n * @param options Optional store options.\n * @returns The defined store.\n */\nexport function defineAStore<Id extends string, SS>(\n id: Id,\n storeDefinition: (ctx?: DefineAStoreSetupContext<AnyObject>) => SS,\n options?: StoreOptions\n): SetupStoreDefinition<Id, SS>\n/**\n * Define a store with the options API, mirroring pinia's `defineStore` inference.\n * @template Id The type of the store identifier.\n * @template S The type of the store's state.\n * @template G The type of the store's getters.\n * @template A The type of the store's actions.\n * @param id The unique identifier for the store.\n * @param storeDefinition The store options definition.\n * @param options Optional store options.\n * @returns The defined store.\n */\nexport function defineAStore<Id extends string, S extends StateTree = {}, G extends _GettersTree<S> = {}, A = {}>(\n id: Id,\n storeDefinition: Omit<DefineStoreOptions<Id, S, G, A>, 'id'>,\n options?: StoreOptions\n): StoreDefinition<Id, S, G, A>\n/**\n * Define a store with explicit store/state types, e.g. when plugins augment\n * the store with members not returned by the setup function.\n * @template Sto The type of the store.\n * @template Sta The type of the store's state.\n * @param id The unique identifier for the store.\n * @param storeDefinition The store definition, either as an options object or a setup function.\n * @param options Optional store options.\n * @returns The defined store.\n */\nexport function defineAStore<Sto, Sta>(\n id: string,\n storeDefinition:\n | Omit<DefineStoreOptions<string, StateTree & Sta, AnyObject, Partial<Sto>>, 'id'>\n | ((ctx?: DefineAStoreSetupContext<Sto & Sta>) => AnyObject),\n options?: StoreOptions\n): DefineAStoreDefinition<Sto, Sta>\nexport function defineAStore(\n id: string,\n storeDefinition:\n | Omit<DefineStoreOptions<string, StateTree, AnyObject, AnyObject>, 'id'>\n | DefineAStoreSetup<AnyObject>,\n options?: StoreOptions\n): StoreDefinition {\n const storeOptions: PluginStoreOptions = options ? { storeOptions: options } : {} as PluginStoreOptions\n\n return (typeof storeDefinition === 'function'\n ? defineAStoreSetup(\n id,\n storeDefinition as DefineAStoreSetup<AnyObject>,\n storeOptions\n )\n : defineAStoreOptionApi(\n id,\n storeDefinition,\n storeOptions\n )) as StoreDefinition\n}\n\n/**\n * Define a store with a required, fully typed setup context. State, getters\n * and actions are inferred from the setup function return.\n * @template Id The type of the store identifier.\n * @template SS The type of the setup function return.\n * @template TExtraExtensions The type of the store's extra extensions.\n * @param id The unique identifier for the store.\n * @param storeDefinition The setup function defining the store.\n * @param options Optional store options.\n * @returns The defined store with setup context.\n */\nexport function defineAStoreCtx<Id extends string, SS, TExtraExtensions extends Record<string, unknown> = EmptyExtensions>(\n id: Id,\n storeDefinition: (ctx: DefineAStoreSetupContext<AnyObject, TExtraExtensions>) => SS,\n options?: StoreOptions\n): SetupStoreDefinition<Id, SS>\n/**\n * Define a store with a setup context and explicit store/state types, e.g.\n * when plugins augment the store with members not returned by the setup function.\n * @template Sto The type of the store.\n * @template Sta The type of the store's state.\n * @template TExtraExtensions The type of the store's extra extensions.\n * @param id The unique identifier for the store.\n * @param storeDefinition The setup function defining the store.\n * @param options Optional store options.\n * @returns The defined store with setup context.\n */\nexport function defineAStoreCtx<Sto, Sta, TExtraExtensions extends Record<string, unknown> = EmptyExtensions>(\n id: string,\n storeDefinition: (ctx: DefineAStoreSetupContext<Sto & Sta, TExtraExtensions>) => AnyObject,\n options?: StoreOptions\n): DefineAStoreDefinition<Sto, Sta>\nexport function defineAStoreCtx(\n id: string,\n storeDefinition: DefineAStoreSetup<AnyObject, any>,\n options?: StoreOptions\n): StoreDefinition {\n const storeOptions: PluginStoreOptions = options\n ? { storeOptions: { ...options, enhancedStore: true } }\n : { storeOptions: { enhancedStore: true } } as PluginStoreOptions\n\n return defineAStoreSetup(\n id,\n storeDefinition,\n storeOptions\n ) as StoreDefinition\n}\n\nexport function defineAStoreSetup<Id extends string, SS>(\n id: Id,\n storeDefinition: DefineAStoreSetup<SS>,\n options: PluginStoreOptions\n): SetupStoreDefinition<Id, SS> {\n const setupContext: DefineAStoreSetupContext<SS> = {\n id,\n extensions: {}\n }\n\n const shouldStoreSetupContext = options?.storeOptions?.enhancedStore === true\n\n // `storeOptions` augments pinia's DefineStoreOptionsBase (see createPlugin.ts);\n // the assertion stays valid in compilation units where the augmentation is not loaded.\n const useStore = defineStore(\n id,\n () => storeDefinition(setupContext),\n options as unknown as DefineAStoreSetupOptions<Id, SS>\n )\n\n return Object.assign(((...args: Parameters<typeof useStore>) => {\n if (shouldStoreSetupContext) {\n defineAStoreSetupContextsById.set(id, setupContext as DefineAStoreSetupContext<AnyObject>)\n logSetupContextMapSizes(id, options, 'registered context by id')\n }\n\n const store = useStore(...args)\n\n if (shouldStoreSetupContext) {\n defineAStoreSetupContexts.set(store, setupContext as DefineAStoreSetupContext<AnyObject>)\n defineAStoreSetupContextsById.delete(id)\n logSetupContextMapSizes(id, options, 'moved context to weak map')\n registerSetupContextCleanupOnDispose(store as AnyObject, id, options)\n }\n\n return store\n }) as typeof useStore, useStore)\n}\n\nexport function defineAStoreOptionApi<Id extends string, S extends StateTree = {}, G extends _GettersTree<S> = {}, A = {}>(\n id: Id,\n storeDefinition: Omit<DefineStoreOptions<Id, S, G, A>, 'id'>,\n options?: PluginStoreOptions\n): StoreDefinition<Id, S, G, A> {\n if (options) {\n storeDefinition = { ...storeDefinition, ...(options ?? {}) }\n }\n\n return defineStore(id, storeDefinition)\n}\n\nconst deniedFirstChar = new Set<string>(['_', '$'])\n\n/**\n * Check if a property has a denied first character : ['_', '$'].\n * @param property The property name to check.\n * @returns True if the property has a denied first character, false otherwise.\n */\nexport function hasDeniedFirstChar(property: string): boolean {\n return deniedFirstChar.has(property[0] as string)\n}\n\n/**\n * Get the setup context associated with a store instance (or pending store id).\n * @param store The store instance, or an object exposing the store `$id`.\n * @returns The setup context when the store was defined with `enhancedStore` enabled, undefined otherwise.\n */\nexport function getDefineAStoreSetupContext(store: object): DefineAStoreSetupContext<AnyObject> | undefined {\n const storeRecord = store as AnyObject\n\n return defineAStoreSetupContexts.get(store)\n ?? (typeof storeRecord?.$id === 'string'\n ? defineAStoreSetupContextsById.get(storeRecord.$id)\n : undefined)\n}\n\n/**\n * Get the enhanced store from the context.\n * @template TEnhancedStore The type of the enhanced store.\n * @param ctx The context containing the extensions.\n * @returns The enhanced store casted to the specified types.\n */\nexport function getEnhancedStore<TEnhancedStore>(\n ctx: DefineAStoreSetupContext<TEnhancedStore>\n): TEnhancedStore {\n const enhancedStore = ctx.extensions.enhancedStore ?? ctx.extensions.extending\n\n if (!enhancedStore) {\n throw new Error(`${ctx.id}Store - getEnhancedStore - Error: enhanced store is required`)\n }\n\n return enhancedStore\n}\n\n/**\n * Set the enhanced store in context with deprecated alias support.\n * @template TEnhancedStore The type of the enhanced store.\n * @param ctx The context containing the extensions.\n * @param store The store to expose as enhancement.\n */\nexport function setEnhancedStore<TEnhancedStore>(\n ctx: DefineAStoreSetupContext<TEnhancedStore>,\n store: TEnhancedStore\n): void {\n ctx.extensions.enhancedStore = store\n ctx.extensions.extending = store\n}\n\n/**\n * @deprecated Use getEnhancedStore instead.\n */\nexport function getExtendingStore<TEnhancedStore>(\n ctx: DefineAStoreSetupContext<TEnhancedStore>\n): TEnhancedStore {\n console.warn(`${ctx.id}Store - getExtendingStore is deprecated. Use getEnhancedStore instead.`)\n return getEnhancedStore<TEnhancedStore>(ctx)\n}\n\n/**\n * Get the storage key for a given action and store combination.\n * @param actionName The name of the action.\n * @param store The Pinia store instance.\n * @returns The storage key for the action and store combination.\n */\nexport function getActionStoreKey(actionName: string, store: Store): string {\n return `${actionName}-${store.$id}`\n}","export function isEmpty(value: any): boolean {\n if (!value) {\n return (typeof value === 'boolean' || typeof value === 'number') ? false : true\n }\n\n if (Array.isArray(value)) {\n return value.length === 0\n }\n\n if (typeof value === 'object') {\n return Object.keys(value).length === 0\n }\n\n if (typeof value === 'string') {\n return value.trim() === ''\n }\n\n return false\n}","import { ref, toRef, type Ref } from \"vue\"\nimport Debug from \"../system/Debug\"\nimport { getDefineAStoreSetupContext, hasDeniedFirstChar, setEnhancedStore } from \"../utils/store\"\nimport { isEmpty } from \"../utils/validation\"\n\nimport type {\n PluginSubscriptions,\n StoreMutationSubscription,\n StoreMutationSubscriptionCallback,\n StoreMutationSubscriptionReturn,\n StoreOnActionSubscription,\n StoreOnActionSubscriptionCallback,\n StoreOnActionSubscriptionReturn\n} from \"../types/plugin\"\nimport type { Store as PiniaStore, StateTree } from \"pinia\"\nimport type { Console } from \"../types/log\"\nimport type { AnyObject, PluginSubscriberInterface } from \"../types\"\nimport type { StoreOptions, StatePropertyValue } from \"../types/store\"\n\n\nexport default class Store extends Debug {\n protected _className = 'Store'\n private _onAction?: StoreOnActionSubscriptionCallback\n private _options: StoreOptions\n private _store: PiniaStore\n private _subscriptions: PluginSubscriptions = {}\n private _storeSubscribe?: StoreMutationSubscriptionCallback\n\n protected static _requiredKeys?: string[]\n\n get onAction(): StoreOnActionSubscription | undefined {\n if (!this._onAction) {\n return\n }\n\n return () => ({\n store: this.store as PiniaStore,\n callback: this._onAction\n }) as StoreOnActionSubscriptionReturn\n }\n\n set onAction(onAction: StoreOnActionSubscriptionCallback) {\n this._onAction = onAction\n }\n\n get options(): StoreOptions { return this._options }\n\n get state(): StateTree { return this._store.$state }\n\n set state(state: StateTree) { this._store.$state = state }\n\n get store(): AnyObject { return this._store }\n\n get storeSubscribe(): StoreMutationSubscription | undefined {\n if (!this._storeSubscribe) {\n return\n }\n\n return () => ({\n store: this.store as PiniaStore,\n callback: this._storeSubscribe\n }) as StoreMutationSubscriptionReturn\n }\n\n set storeSubscribe(storeSubscribe: StoreMutationSubscriptionCallback) {\n this._storeSubscribe = storeSubscribe\n }\n\n\n constructor(store: PiniaStore, options: AnyObject, debug: boolean = false, customConsole?: Console) {\n super(debug, customConsole)\n this._options = options.storeOptions\n this._store = store\n\n if (this._options?.enhancedStore) {\n const ctx = getDefineAStoreSetupContext(this.store)\n\n if (ctx) {\n setEnhancedStore(ctx, this.store)\n }\n }\n }\n\n /**\n * Add property to state\n * @param name \n * @param value \n */\n addToState(name: string, value?: StatePropertyValue): void {\n if (!this.isOptionApi()) {\n if (!(value as Ref)?.value) {\n value = ref<StatePropertyValue>(value)\n }\n }\n\n this.state[name] = value\n this.store[name] = toRef(this.state, name)\n }\n\n addSubscription(\n pluginName: string,\n subscription: PluginSubscriberInterface,\n options?: { subscriptionOptions?: StoreOptions, stores?: PiniaStore[] }\n ): void {\n this._subscriptions[pluginName] = { subscription, ...(options ?? {}) }\n }\n\n afterHydration(): void | Promise<void> {\n return\n }\n\n /**\n * Create and return a class instance\n * @param store \n * @param options \n * @param debug \n * @returns \n */\n static customizeStore<Instance extends Store>(\n store: PiniaStore,\n options: AnyObject,\n debug: boolean = false,\n customConsole?: Console\n ): Instance | undefined {\n if (options.storeOptions && this.hasRequiredKeys(options.storeOptions)) {\n return new this(store, options, debug, customConsole) as Instance\n }\n }\n\n getOption(optionName: keyof StoreOptions) {\n return this.options && (this.options as StoreOptions)[optionName]\n }\n\n getStatePropertyValue(propertyName: string) {\n return this.getValue(this.state[propertyName])\n }\n\n getSubscriptions(): PluginSubscriptions | undefined {\n if (isEmpty(this._subscriptions)) {\n return\n }\n\n return this._subscriptions\n }\n\n getValue(value: any) {\n return value?.__v_isRef ? value.value : value\n }\n\n protected hasDeniedFirstChar(property: string): boolean {\n return hasDeniedFirstChar(property)\n }\n\n protected static hasRequiredKeys(options: AnyObject): boolean {\n return this._requiredKeys !== undefined && this._requiredKeys?.every(requiredKey => !!options[requiredKey])\n }\n\n hydrate(): void | Promise<void> {\n return\n }\n\n isOptionApi(): boolean { return this.store._isOptionsAPI }\n\n stateHas(property: string): boolean { return Object.prototype.hasOwnProperty.call(this.state, property) }\n\n storeHas(property: string): boolean { return Object.prototype.hasOwnProperty.call(this.store, property) }\n}","export const pluginName: string = 'pinia-plugin-subscription'","import { pluginName } from '../utils/constantes'\nimport type { Console, LogType, StyleDefinition, StyleDefinitions } from '../types/log'\n\n\nconst style = (bgColor: string, color: string = 'white') =>\n `background-color: ${bgColor}; color: ${color}; padding: 1px; margin-right: 5px; font-size: 12px`\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\nexport abstract class CustomConsole implements Console {\n protected _bgColor: string = '#ffec73'\n protected _color: string = 'green'\n protected _icon: string = '🍍⚡'\n protected _errorBgColor: string = '#d24545'\n protected _errorColor: string = 'white'\n protected _errorIcon: string = '🍍⚠️'\n protected abstract _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 ` [${icon} ${pluginName}] - ${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 [this.formatMessage(args, icon)]\n }\n\n if (Array.isArray(args)) {\n return [this.formatMessage(args.shift(), icon), ...(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()"],"names":["PluginSubscriber","pluginName","createInstanceFunction","pluginConsole","__publicField","options","subscriptions","context","debug","store","Debug","customConsole","args","defineAStoreSetupContexts","defineAStoreSetupContextsById","setupContextDisposeWrappedStores","setupContextMapWarnThreshold","isSetupContextDebugEnabled","logSetupContextMapSizes","id","action","setupContextByIdSize","registerSetupContextCleanupOnDispose","originalDispose","defineAStore","storeDefinition","storeOptions","defineAStoreSetup","defineAStoreOptionApi","defineAStoreCtx","setupContext","shouldStoreSetupContext","useStore","defineStore","deniedFirstChar","hasDeniedFirstChar","property","getDefineAStoreSetupContext","storeRecord","getEnhancedStore","ctx","enhancedStore","setEnhancedStore","getExtendingStore","getActionStoreKey","actionName","isEmpty","value","Store","onAction","state","storeSubscribe","name","ref","subscription","optionName","propertyName","requiredKey","style","bgColor","color","log","logStyle","CustomConsole","message","icon","styleDefinition","messageType","PluginConsoleClass","PluginConsole"],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export default class RollbackStateSnapshotsHandler {
|
|
|
11
11
|
/**
|
|
12
12
|
* Adds a rollback action to the given store.
|
|
13
13
|
* This method extends the store with a $rollbackAfterFailure function that handles rollback logic for actions.
|
|
14
|
+
* The action arguments are forwarded through apply(), so they must be provided as a single array.
|
|
14
15
|
* @param {Store} store The store to which the rollback action will be added.
|
|
15
16
|
* @returns void
|
|
16
17
|
*/
|
package/dist/helpers.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { C as a, a as r, S as e, i } from "./chunks/index-
|
|
1
|
+
import { C as a, a as r, S as e, i } from "./chunks/index-VL_PgzVK.js";
|
|
2
2
|
export {
|
|
3
3
|
a as CustomConsole,
|
|
4
4
|
r as PluginSubscriber,
|
|
5
5
|
e as Store,
|
|
6
6
|
i as isEmpty
|
|
7
7
|
};
|
|
8
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
package/dist/lib/main.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import PluginSubscription from '../core/PluginSubscription';
|
|
|
3
3
|
import Store from '../core/Store';
|
|
4
4
|
export { createPlugin } from "../plugins/createPlugin";
|
|
5
5
|
export { createHydrationPlugin } from "../plugins/createHydrationPlugin";
|
|
6
|
-
export type { AnyObject, Console, CustomStore, DefineAStoreSetupContext, DefineAStoreSetupExtensions, EmptyExtensions, PluginExecutionEnvironment, PluginExecutionOptions, PluginHydrationScheduler, PluginHydrationTiming, PluginRuntimeEnvironment, PluginStoreOptions, PluginSubscriptionOptions, PluginSubscriberInterface, PluginSubscriptionDefinition, PluginSubscriptions, StatePropertyValue, StoreOptions, StoreOptionsPropertyValue, StoreMutationSubscription, StoreMutationSubscriptionCallback, StoreOnActionCallbackParameters, StoreOnActionSubscription, StoreOnActionSubscriptionCallback, NativePiniaSubscription, NativePiniaSubscriptionReturn, SearchCollectionCriteria, LogType, StyleDefinition, StyleDefinitionKeys, StyleDefinitions, ConsoleStyleDefinition, ConsoleStyleDefinitionKeys, ConsoleStyleDefinitions, PartialList, ListTypes, ListTypesMap, List } from "../types";
|
|
6
|
+
export type { AnyObject, Console, CustomStore, DefineAStoreSetupContext, DefineAStoreSetupExtensions, EmptyExtensions, PluginExecutionEnvironment, PluginExecutionOptions, PluginHydrationScheduler, PluginHydrationTiming, PluginRuntimeEnvironment, PluginStoreOptions, PluginSubscriptionOptions, PluginSubscriberInterface, PluginSubscriptionDefinition, PluginSubscriptions, StatePropertyValue, StoreOptions, StoreOptionsExtensions, StoreOptionsPropertyValue, StoreMutationSubscription, StoreMutationSubscriptionCallback, StoreOnActionCallbackParameters, StoreOnActionSubscription, StoreOnActionSubscriptionCallback, NativePiniaSubscription, NativePiniaSubscriptionReturn, SearchCollectionCriteria, LogType, StyleDefinition, StyleDefinitionKeys, StyleDefinitions, ConsoleStyleDefinition, ConsoleStyleDefinitionKeys, ConsoleStyleDefinitions, PartialList, ListTypes, ListTypesMap, List } from "../types";
|
|
7
7
|
export type { StoreMutationSubscriptionReturn, StoreOnActionSubscriptionReturn } from "../types/plugin";
|
|
8
8
|
export type { RollbackActionParams, RollbackAfterFailureParams } from "../types/store";
|
|
9
9
|
export { defineAStore, defineAStoreCtx, getDefineAStoreSetupContext, getEnhancedStore, getExtendingStore, setEnhancedStore } from "../utils/store";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var g = Object.defineProperty;
|
|
2
2
|
var E = (n, s, t) => s in n ? g(n, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[s] = t;
|
|
3
3
|
var a = (n, s, t) => E(n, typeof s != "symbol" ? s + "" : s, t);
|
|
4
|
-
import { h as O, g as f, D as m, i as y, P as C } from "./chunks/index-
|
|
5
|
-
import { C as T, p as W, a as L, S as I, d as q, b as G, c as U, e as z, f as B, s as J } from "./chunks/index-
|
|
4
|
+
import { h as O, g as f, D as m, i as y, P as C } from "./chunks/index-VL_PgzVK.js";
|
|
5
|
+
import { C as T, p as W, a as L, S as I, d as q, b as G, c as U, e as z, f as B, s as J } from "./chunks/index-VL_PgzVK.js";
|
|
6
6
|
import { toRaw as _ } from "vue";
|
|
7
7
|
function u(n) {
|
|
8
8
|
if (typeof structuredClone == "function")
|
|
@@ -46,14 +46,8 @@ class v {
|
|
|
46
46
|
a(this, "_storeHasRollbackSnapshots", /* @__PURE__ */ new Set());
|
|
47
47
|
a(this, "_storeRollbackSnapshotsParams", /* @__PURE__ */ new Map());
|
|
48
48
|
}
|
|
49
|
-
/**
|
|
50
|
-
* Adds a rollback action to the given store.
|
|
51
|
-
* This method extends the store with a $rollbackAfterFailure function that handles rollback logic for actions.
|
|
52
|
-
* @param {Store} store The store to which the rollback action will be added.
|
|
53
|
-
* @returns void
|
|
54
|
-
*/
|
|
55
49
|
addRollbackAction(s) {
|
|
56
|
-
typeof s.$rollbackAfterFailure != "function" && (s.$rollbackAfterFailure = async ({ action: t, stateKeys: e },
|
|
50
|
+
typeof s.$rollbackAfterFailure != "function" && (s.$rollbackAfterFailure = async ({ action: t, stateKeys: e }, i = []) => {
|
|
57
51
|
const r = s[t];
|
|
58
52
|
if (typeof r != "function" || O(t))
|
|
59
53
|
return;
|
|
@@ -67,13 +61,6 @@ class v {
|
|
|
67
61
|
}
|
|
68
62
|
});
|
|
69
63
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Creates a rollback snapshot for the specified action and store.
|
|
72
|
-
* This snapshot can be used to restore the store's state in case of an error during the action execution.
|
|
73
|
-
* @param {string} actionName The name of the action for which the rollback snapshot is created.
|
|
74
|
-
* @param {Store} store The Pinia store instance.
|
|
75
|
-
* @returns An object containing `after` and `onError` callbacks for handling the rollback, or `undefined` if no snapshot is created.
|
|
76
|
-
*/
|
|
77
64
|
createOnActionCallbacks(s, t) {
|
|
78
65
|
const e = this._storeRollbackSnapshotsParams.get(
|
|
79
66
|
f(s, t)
|
|
@@ -90,12 +77,6 @@ class v {
|
|
|
90
77
|
}
|
|
91
78
|
};
|
|
92
79
|
}
|
|
93
|
-
/**
|
|
94
|
-
* Initializes the rollback state snapshots handler from the given Pinia plugin context.
|
|
95
|
-
* This method extracts the rollback snapshot parameters from the store options and stores them internally.
|
|
96
|
-
* @param {PiniaPluginContext} param0 The Pinia plugin context containing the store and its options.
|
|
97
|
-
* @returns void
|
|
98
|
-
*/
|
|
99
80
|
initFromPluginContext({ options: s, store: t }) {
|
|
100
81
|
const e = s?.storeOptions?.rollbackAfterFailure;
|
|
101
82
|
e && !this._storeHasRollbackSnapshots.has(t.$id) && (Object.keys(e).forEach((i) => {
|
|
@@ -105,12 +86,6 @@ class v {
|
|
|
105
86
|
);
|
|
106
87
|
}), this._storeHasRollbackSnapshots.add(t.$id)), this.addRollbackAction(t);
|
|
107
88
|
}
|
|
108
|
-
/**
|
|
109
|
-
* Clears all rollback tracking data for the given store.
|
|
110
|
-
* Must be called when the store is disposed to avoid memory leaks with dynamically created stores.
|
|
111
|
-
* @param {Store} store The disposed Pinia store instance.
|
|
112
|
-
* @returns void
|
|
113
|
-
*/
|
|
114
89
|
clearStoreTracking(s) {
|
|
115
90
|
const t = `-${s.$id}`;
|
|
116
91
|
for (const e of Array.from(this._storeRollbackSnapshotsParams.keys()))
|
|
@@ -128,21 +103,9 @@ class v {
|
|
|
128
103
|
console.error(`Failed to patch store with snapshot ${String(s)}`, i);
|
|
129
104
|
}
|
|
130
105
|
}
|
|
131
|
-
/**
|
|
132
|
-
* Removes a state snapshot identified by the given snapshot key from the internal state snapshot tracking.
|
|
133
|
-
* @param snapshotKey The key of the state snapshot to be removed.
|
|
134
|
-
* @returns void
|
|
135
|
-
*/
|
|
136
106
|
removeStateSnapshot(s) {
|
|
137
107
|
s && this._stateSnapshots.delete(s);
|
|
138
108
|
}
|
|
139
|
-
/**
|
|
140
|
-
* Saves the current state snapshot for a given store and action.
|
|
141
|
-
* @param store The Pinia store instance.
|
|
142
|
-
* @param actionName The name of the action being executed.
|
|
143
|
-
* @param stateKeys The state keys to include in the snapshot, or 'all' for the full state.
|
|
144
|
-
* @returns A unique symbol key representing the saved snapshot.
|
|
145
|
-
*/
|
|
146
109
|
saveStateSnapshot(s, t, e) {
|
|
147
110
|
const i = $(
|
|
148
111
|
s.$state,
|
|
@@ -150,11 +113,6 @@ class v {
|
|
|
150
113
|
), r = /* @__PURE__ */ Symbol(`${s.$id}:${t}`);
|
|
151
114
|
return this._stateSnapshots.set(r, i), r;
|
|
152
115
|
}
|
|
153
|
-
/**
|
|
154
|
-
* Checks if the given store has rollback snapshots.
|
|
155
|
-
* @param store The Pinia store instance.
|
|
156
|
-
* @returns True if the store has rollback snapshots, false otherwise.
|
|
157
|
-
*/
|
|
158
116
|
storeHasRollbackSnapshots(s) {
|
|
159
117
|
return this._storeHasRollbackSnapshots.has(s.$id);
|
|
160
118
|
}
|
|
@@ -230,34 +188,16 @@ class k extends m {
|
|
|
230
188
|
for (const i of Object.keys(this._onActionOnErrorSubscriptions))
|
|
231
189
|
i.endsWith(e) && delete this._onActionOnErrorSubscriptions[i];
|
|
232
190
|
}
|
|
233
|
-
/**
|
|
234
|
-
* Creates a callback collector for the specified action and store.
|
|
235
|
-
* @param actionName The name of the action to collect callbacks for.
|
|
236
|
-
* @param store The store instance associated with the action.
|
|
237
|
-
* @returns A function that collects callbacks for the specified action and store.
|
|
238
|
-
*/
|
|
239
191
|
createOnActionAfterCallbackCollector(t, e) {
|
|
240
192
|
return (i) => {
|
|
241
193
|
this.addOnActionAfterCallback(t, e, i);
|
|
242
194
|
};
|
|
243
195
|
}
|
|
244
|
-
/**
|
|
245
|
-
* Creates a callback collector for the specified action and store that handles errors.
|
|
246
|
-
* @param actionName The name of the action to collect error callbacks for.
|
|
247
|
-
* @param store The store instance associated with the action.
|
|
248
|
-
* @returns A function that collects error callbacks for the specified action and store.
|
|
249
|
-
*/
|
|
250
196
|
createOnActionOnErrorCallbackCollector(t, e) {
|
|
251
197
|
return (i) => {
|
|
252
198
|
this.addOnActionOnErrorCallback(t, e, i);
|
|
253
199
|
};
|
|
254
200
|
}
|
|
255
|
-
/**
|
|
256
|
-
* Rolls back the state snapshot for a given action if an error occurs, and removes the snapshot after the action completes or fails.
|
|
257
|
-
* @param actionName The name of the action being executed.
|
|
258
|
-
* @param store The Pinia store instance.
|
|
259
|
-
* @returns void
|
|
260
|
-
*/
|
|
261
201
|
createRollbackSnapshot(t, e) {
|
|
262
202
|
const {
|
|
263
203
|
after: i,
|
|
@@ -294,12 +234,6 @@ class k extends m {
|
|
|
294
234
|
executeResetStoreCallbacks(t) {
|
|
295
235
|
this._resetStoreCallback.forEach((e) => e(t));
|
|
296
236
|
}
|
|
297
|
-
/**
|
|
298
|
-
* Executes the store's onAction subscription for the given plugin subscriber.
|
|
299
|
-
* @param store The Pinia store instance.
|
|
300
|
-
* @param subscriber The plugin subscriber.
|
|
301
|
-
* @returns void
|
|
302
|
-
*/
|
|
303
237
|
executeStoreOnActionSubscription(t) {
|
|
304
238
|
const e = this._onActionSubscriptions, i = this._storeRollbackSnapshotsHandler.storeHasRollbackSnapshots(t);
|
|
305
239
|
!e?.length && !i || t.$onAction(({ after: r, args: o, name: h, onError: c }) => {
|
|
@@ -496,3 +430,4 @@ export {
|
|
|
496
430
|
y as isEmpty,
|
|
497
431
|
J as setEnhancedStore
|
|
498
432
|
};
|
|
433
|
+
//# sourceMappingURL=pinia-plugin-subscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pinia-plugin-subscription.js","sources":["../src/utils/deep-clone.ts","../src/factories/state-snapshot.ts","../src/core/RollbackStateSnapshotsHandler.ts","../src/core/PluginSubscription.ts"],"sourcesContent":["/**\n * Deeply clones the provided value, handling objects, arrays, maps, and sets. Uses `structuredClone` if available, otherwise falls back to a manual deep clone.\n * @template T The type of the value to deep clone.\n * @param value The value to deep clone.\n * @returns A deep clone of the provided value.\n */\nexport function deepClone<T>(value: T): T {\n if (typeof structuredClone === 'function') {\n try {\n return structuredClone(value)\n } catch {\n // fall through to the safe manual clone below\n }\n }\n\n if (value === null || typeof value !== 'object') {\n return value\n }\n\n if (value instanceof Map) {\n return new Map(\n Array.from(value.entries(), ([key, entryValue]) => [deepClone(key), deepClone(entryValue)])\n ) as T\n }\n\n if (value instanceof Set) {\n return new Set(Array.from(value.values(), entryValue => deepClone(entryValue))) as T\n }\n\n if (Array.isArray(value)) {\n return value.map(item => deepClone(item)) as T\n }\n\n if (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null) {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>).map(([key, item]) => [key, deepClone(item)])\n ) as T\n }\n\n const clonedObject = Object.create(Object.getPrototypeOf(value)) as Record<string, unknown>\n for (const [key, item] of Object.entries(value as Record<string, unknown>)) {\n clonedObject[key] = deepClone(item)\n }\n\n return clonedObject as T\n}","import { toRaw } from 'vue'\nimport { deepClone } from '../utils/deep-clone'\n\nimport type { StateTree } from 'pinia'\nimport type { CreateStateSnapshotKeys } from '../types/plugin'\n\n\nexport function createStateSnapshot(state: StateTree, keys: CreateStateSnapshotKeys = 'all') {\n if (Array.isArray(keys)) {\n const clonedState: Partial<StateTree> = {}\n for (const key of keys) {\n if (key in state) {\n clonedState[key] = deepClone(toRaw(state[key]))\n }\n }\n return clonedState\n }\n\n if (keys !== 'all') {\n throw new Error(`Invalid keys parameter: ${keys}`)\n }\n\n return deepClone(toRaw(state))\n}","import { createStateSnapshot } from \"../factories/state-snapshot\"\nimport { getActionStoreKey, hasDeniedFirstChar } from '../utils/store'\n\nimport type { PiniaPluginContext, StateTree, Store } from 'pinia'\nimport type { AnyObject } from '../types'\nimport type { CreateStateSnapshotKeys } from '../types/plugin'\nimport type { RollbackActionParams } from '../types/store'\n\n\n/**\n * Handles rollback state snapshots for Pinia stores.\n * This class provides methods to add rollback actions to stores,\n * create rollback snapshots, and manage the state snapshots internally.\n */\nexport default class RollbackStateSnapshotsHandler {\n private _stateSnapshots: Map<symbol, StateTree> = new Map()\n private _storeHasRollbackSnapshots: Set<string> = new Set()\n private _storeRollbackSnapshotsParams: Map<string, CreateStateSnapshotKeys> = new Map()\n\n\n /**\n * Adds a rollback action to the given store.\n * This method extends the store with a $rollbackAfterFailure function that handles rollback logic for actions.\n * The action arguments are forwarded through apply(), so they must be provided as a single array.\n * @param {Store} store The store to which the rollback action will be added.\n * @returns void\n */\n addRollbackAction(store: Store): void {\n if (typeof store.$rollbackAfterFailure === 'function') {\n return\n }\n\n store.$rollbackAfterFailure = async ({ action, stateKeys }: RollbackActionParams, args: any[] = []) => {\n const actionFn = (store as AnyObject)[action]\n if (typeof actionFn !== 'function' || hasDeniedFirstChar(action)) {\n return\n }\n\n const keys: CreateStateSnapshotKeys = !stateKeys || stateKeys.length === 0 ? 'all' : stateKeys\n\n const snapshotKey = this.saveStateSnapshot(store, action, keys)\n try {\n await actionFn.apply(store, args)\n } catch (error) {\n this.patchStore(snapshotKey, store)\n throw error\n } finally {\n this.removeStateSnapshot(snapshotKey)\n }\n }\n }\n\n /**\n * Creates a rollback snapshot for the specified action and store.\n * This snapshot can be used to restore the store's state in case of an error during the action execution.\n * @param {string} actionName The name of the action for which the rollback snapshot is created.\n * @param {Store} store The Pinia store instance.\n * @returns An object containing `after` and `onError` callbacks for handling the rollback, or `undefined` if no snapshot is created.\n */\n createOnActionCallbacks(\n actionName: string,\n store: Store\n ): {\n after: () => void,\n onError: () => void\n } | undefined {\n const stateKeys = this._storeRollbackSnapshotsParams.get(\n getActionStoreKey(actionName, store)\n )\n\n if (!stateKeys || stateKeys.length === 0) {\n return\n }\n\n const snapshotKey = this.saveStateSnapshot(store, actionName, stateKeys)\n\n return {\n after: () => { this.removeStateSnapshot(snapshotKey) },\n onError: () => {\n this.patchStore(snapshotKey, store)\n this.removeStateSnapshot(snapshotKey)\n }\n }\n }\n\n /**\n * Initializes the rollback state snapshots handler from the given Pinia plugin context.\n * This method extracts the rollback snapshot parameters from the store options and stores them internally.\n * @param {PiniaPluginContext} param0 The Pinia plugin context containing the store and its options.\n * @returns void\n */\n initFromPluginContext({ options, store }: PiniaPluginContext) {\n const rollbackSnapshotParams = options?.storeOptions?.rollbackAfterFailure as Record<string, CreateStateSnapshotKeys>\n if (rollbackSnapshotParams && !this._storeHasRollbackSnapshots.has(store.$id)) {\n Object.keys(rollbackSnapshotParams).forEach(key => {\n this._storeRollbackSnapshotsParams.set(\n getActionStoreKey(key, store),\n rollbackSnapshotParams[key]\n )\n })\n this._storeHasRollbackSnapshots.add(store.$id)\n }\n this.addRollbackAction(store)\n }\n\n /**\n * Clears all rollback tracking data for the given store.\n * Must be called when the store is disposed to avoid memory leaks with dynamically created stores.\n * @param {Store} store The disposed Pinia store instance.\n * @returns void\n */\n clearStoreTracking(store: Store): void {\n const suffix = `-${store.$id}`\n\n for (const key of Array.from(this._storeRollbackSnapshotsParams.keys())) {\n if (key.endsWith(suffix)) {\n this._storeRollbackSnapshotsParams.delete(key)\n }\n }\n\n this._storeHasRollbackSnapshots.delete(store.$id)\n\n for (const snapshotKey of Array.from(this._stateSnapshots.keys())) {\n if (snapshotKey.description?.startsWith(`${store.$id}:`)) {\n this._stateSnapshots.delete(snapshotKey)\n }\n }\n }\n\n private patchStore(snapshotKey: symbol, store: Store): void {\n const stateSnapshot = this._stateSnapshots.get(snapshotKey)\n if (!stateSnapshot) {\n return\n }\n\n try {\n store.$patch(stateSnapshot)\n } catch (error) {\n console.error(`Failed to patch store with snapshot ${String(snapshotKey)}`, error)\n }\n }\n\n /**\n * Removes a state snapshot identified by the given snapshot key from the internal state snapshot tracking.\n * @param snapshotKey The key of the state snapshot to be removed.\n * @returns void\n */\n private removeStateSnapshot(snapshotKey?: symbol): void {\n if (!snapshotKey) {\n return\n }\n\n this._stateSnapshots.delete(snapshotKey)\n }\n\n /**\n * Saves the current state snapshot for a given store and action.\n * @param store The Pinia store instance.\n * @param actionName The name of the action being executed.\n * @param stateKeys The state keys to include in the snapshot, or 'all' for the full state.\n * @returns A unique symbol key representing the saved snapshot.\n */\n private saveStateSnapshot(store: Store, actionName: string, stateKeys: CreateStateSnapshotKeys): symbol {\n const stateSnapshot = createStateSnapshot(\n store.$state,\n stateKeys\n )\n\n const snapshotKey = Symbol(`${store.$id}:${actionName}`)\n this._stateSnapshots.set(snapshotKey, stateSnapshot)\n return snapshotKey\n }\n\n /**\n * Checks if the given store has rollback snapshots.\n * @param store The Pinia store instance.\n * @returns True if the store has rollback snapshots, false otherwise.\n */\n storeHasRollbackSnapshots(store: Store): boolean {\n return this._storeHasRollbackSnapshots.has(store.$id)\n }\n}","import Debug from \"../system/Debug\"\nimport RollbackStateSnapshotsHandler from \"./RollbackStateSnapshotsHandler\"\nimport { deepClone } from '../utils/deep-clone'\nimport { getActionStoreKey } from '../utils/store'\nimport { PluginConsole } from \"../system/log\"\nimport { isEmpty } from \"../utils/validation\"\n\nimport type { PiniaPluginContext, StateTree, Store, SubscriptionCallbackMutation } from \"pinia\"\nimport type { AnyObject } from \"../types\"\nimport type {\n PluginExecutionOptions,\n PluginHydrationScheduler,\n PluginRuntimeEnvironment,\n PluginSubscriber,\n PluginSubscription as PluginSubscriptionDefinition,\n PluginSubscriptionOptions,\n PluginSubscriptions,\n StoreMutationSubscription,\n StoreOnActionAfterCallbackParameter,\n StoreOnActionSubscriptionCallback\n} from \"../types/plugin\"\n\n\nconst className = 'PluginSubscription'\nconst defaultPluginExecution: Required<PluginExecutionOptions> = {\n environment: 'both',\n hydration: 'immediate'\n}\n\nfunction defaultHydrationScheduler(callback: () => void): void {\n if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {\n window.requestAnimationFrame(() => globalThis.setTimeout(callback, 0))\n return\n }\n\n globalThis.setTimeout(callback, 0)\n}\n\nfunction isPluginSubscriptionOptions(\n value: PluginSubscriptionOptions | string[] | undefined\n): value is PluginSubscriptionOptions {\n return value !== undefined && !Array.isArray(value)\n}\n\n\nexport default class PluginSubscription extends Debug {\n protected _className: string = className\n private _hydrationScheduler: PluginHydrationScheduler\n private _onActionSubscriptions: StoreOnActionSubscriptionCallback[] = []\n private _onActionAfterSubscriptions: Record<string, StoreOnActionAfterCallbackParameter[]> = {}\n private _onActionOnErrorSubscriptions: Record<string, Array<(error: unknown) => void>> = {}\n private _options?: PluginSubscriptionOptions\n private _pluginDebug?: string[]\n private _resetStoreCallback: Function[] = []\n private _storeRollbackSnapshotsHandler: RollbackStateSnapshotsHandler = new RollbackStateSnapshotsHandler()\n private _subscribers: PluginSubscriber[] = []\n private _subscribersDelivered: Set<string> = new Set()\n private _subscribersScheduled: Set<string> = new Set()\n private _subscriptions: PluginSubscriptions[] = []\n private _subscriptionsDelivered: Set<string> = new Set()\n private _subscriptionsScheduled: Set<string> = new Set()\n\n set subscribers(subscribers: PluginSubscriber[]) {\n this._subscribers = subscribers\n }\n\n get subscriptions(): PluginSubscriptions[] | undefined {\n if (!isEmpty(this._subscriptions)) {\n return this._subscriptions\n }\n }\n\n constructor(\n subscribers: PluginSubscriber[],\n debugOrOptions?: PluginSubscriptionOptions | string[],\n pluginOptions?: PluginSubscriptionOptions\n ) {\n const debug = Array.isArray(debugOrOptions) ? debugOrOptions : undefined\n const options = isPluginSubscriptionOptions(debugOrOptions) ? debugOrOptions : pluginOptions\n\n super(Array.isArray(debug) && !!debug?.includes(className), PluginConsole)\n this._hydrationScheduler = options?.hydrationScheduler ?? defaultHydrationScheduler\n this._options = options\n this._pluginDebug = Array.isArray(debug) ? debug : undefined\n this._subscribers = subscribers\n }\n\n\n private addOnActionAfterCallback(actionName: string, store: Store, callback: StoreOnActionAfterCallbackParameter): void {\n const key = getActionStoreKey(actionName, store)\n if (!this._onActionAfterSubscriptions[key]) {\n this._onActionAfterSubscriptions[key] = []\n }\n this._onActionAfterSubscriptions[key]?.push(callback)\n }\n\n private addOnActionOnErrorCallback(actionName: string, store: Store, callback: (error: unknown) => void): void {\n const key = getActionStoreKey(actionName, store)\n if (!this._onActionOnErrorSubscriptions[key]) {\n this._onActionOnErrorSubscriptions[key] = []\n }\n this._onActionOnErrorSubscriptions[key]?.push(callback)\n }\n\n private addResetStoreCallback(callback: Function): void {\n this._resetStoreCallback.push(callback)\n }\n\n private clearOnActionCallbacksSubscriptions(storageKey: string): void {\n delete this._onActionAfterSubscriptions[storageKey]\n delete this._onActionOnErrorSubscriptions[storageKey]\n }\n\n private clearStoreTracking(store: Store): void {\n const suffix = `-${store.$id}`\n\n for (const key of Array.from(this._subscribersDelivered)) {\n if (key.endsWith(suffix)) {\n this._subscribersDelivered.delete(key)\n }\n }\n\n for (const key of Array.from(this._subscribersScheduled)) {\n if (key.endsWith(suffix)) {\n this._subscribersScheduled.delete(key)\n }\n }\n\n for (const key of Array.from(this._subscriptionsDelivered)) {\n if (key.endsWith(suffix)) {\n this._subscriptionsDelivered.delete(key)\n }\n }\n\n for (const key of Array.from(this._subscriptionsScheduled)) {\n if (key.endsWith(suffix)) {\n this._subscriptionsScheduled.delete(key)\n }\n }\n\n for (const key of Object.keys(this._onActionAfterSubscriptions)) {\n if (key.endsWith(suffix)) {\n delete this._onActionAfterSubscriptions[key]\n }\n }\n\n for (const key of Object.keys(this._onActionOnErrorSubscriptions)) {\n if (key.endsWith(suffix)) {\n delete this._onActionOnErrorSubscriptions[key]\n }\n }\n }\n\n /**\n * Creates a callback collector for the specified action and store.\n * @param actionName The name of the action to collect callbacks for.\n * @param store The store instance associated with the action.\n * @returns A function that collects callbacks for the specified action and store.\n */\n private createOnActionAfterCallbackCollector(actionName: string, store: Store) {\n return (callback: StoreOnActionAfterCallbackParameter) => {\n this.addOnActionAfterCallback(actionName, store, callback)\n }\n }\n\n /**\n * Creates a callback collector for the specified action and store that handles errors.\n * @param actionName The name of the action to collect error callbacks for.\n * @param store The store instance associated with the action.\n * @returns A function that collects error callbacks for the specified action and store.\n */\n private createOnActionOnErrorCallbackCollector(actionName: string, store: Store) {\n return (callback: (error: unknown) => void) => {\n this.addOnActionOnErrorCallback(actionName, store, callback)\n }\n }\n\n /**\n * Rolls back the state snapshot for a given action if an error occurs, and removes the snapshot after the action completes or fails.\n * @param actionName The name of the action being executed.\n * @param store The Pinia store instance.\n * @returns void\n */\n private createRollbackSnapshot(\n actionName: string,\n store: Store\n ) {\n const {\n after,\n onError\n } = this._storeRollbackSnapshotsHandler.createOnActionCallbacks(\n actionName,\n store\n ) ?? {}\n\n if (!after || !onError) {\n return\n }\n\n this.addOnActionAfterCallback(actionName, store, after)\n this.addOnActionOnErrorCallback(actionName, store, onError)\n }\n\n private defineCurrentEnvironment(): PluginRuntimeEnvironment {\n return this._options?.runtimeEnvironment\n ?? (typeof window === 'undefined' ? 'server' : 'client')\n }\n\n private definePluginDebug(subscriber: PluginSubscriber): boolean {\n return !!this._pluginDebug?.includes(subscriber.name)\n }\n\n private definePluginExecution(subscriber: PluginSubscriber): Required<PluginExecutionOptions> {\n return {\n ...defaultPluginExecution,\n ...(this._options?.execution ?? {}),\n ...(subscriber.execution ?? {}),\n ...(this._options?.subscriberExecution?.[subscriber.name] ?? {}),\n }\n }\n\n private defineHydrationScheduler(subscriber: PluginSubscriber | PluginSubscriptionDefinition['subscription']): PluginHydrationScheduler {\n return subscriber.hydrationScheduler ?? this._hydrationScheduler\n }\n\n private defineSubscriberKey(subscriber: PluginSubscriber, store: Store): string {\n return `${subscriber.name}-${store.$id}`\n }\n\n private defineSubscriptionKey(pluginName: string, store: Store): string {\n return `${pluginName}-${store.$id}`\n }\n\n private executeResetStoreCallbacks(store: Store): void {\n this._resetStoreCallback.forEach(callback => callback(store))\n }\n\n /**\n * Executes the store's onAction subscription for the given plugin subscriber.\n * @param store The Pinia store instance.\n * @param subscriber The plugin subscriber.\n * @returns void\n */\n private executeStoreOnActionSubscription(store: Store): void {\n const onActionSubscriptions = this._onActionSubscriptions\n const hasRollbackSnapshots = this._storeRollbackSnapshotsHandler.storeHasRollbackSnapshots(store)\n\n if (!onActionSubscriptions?.length && !hasRollbackSnapshots) {\n return\n }\n\n store.$onAction(({ after, args, name, onError }) => {\n const storageKey = getActionStoreKey(name, store)\n this.debugLog(`storeOnActionSubscription ${storageKey}`, { args, name, store })\n\n if (hasRollbackSnapshots) {\n this.createRollbackSnapshot(name, store)\n }\n\n if (onActionSubscriptions?.length) {\n onActionSubscriptions.forEach(callback => callback({\n after: this.createOnActionAfterCallbackCollector(name, store),\n args,\n name,\n onError: this.createOnActionOnErrorCallbackCollector(name, store)\n }))\n }\n\n const afterCallbacks = this._onActionAfterSubscriptions[storageKey]\n const onErrorCallbacks = this._onActionOnErrorSubscriptions[storageKey]\n\n this.clearOnActionCallbacksSubscriptions(storageKey)\n\n if (afterCallbacks?.length) {\n after((result) => {\n afterCallbacks.forEach(callback => callback(result))\n })\n }\n if (onErrorCallbacks?.length) {\n onError((error) => {\n onErrorCallbacks.forEach(callback => callback(error))\n })\n }\n })\n }\n\n private executeSubscriber(context: PiniaPluginContext, subscriber: PluginSubscriber): void {\n const subscriberKey = this.defineSubscriberKey(subscriber, context.store)\n const debug = this.definePluginDebug(subscriber)\n\n if (this._subscribersDelivered.has(subscriberKey)) {\n return\n }\n\n if (\n !subscriber.invoke(\n context,\n debug\n )) {\n return\n }\n\n this._subscribersDelivered.add(subscriberKey)\n\n let hydrateResult: void | Promise<void>\n\n try {\n hydrateResult = subscriber.hydrate?.(context, debug)\n } catch (error) {\n this.logError(error, context.store, context.options)\n return\n }\n\n const runAfterHydration = () => {\n try {\n const afterHydration = subscriber.afterHydration?.(context, debug)\n if (afterHydration && typeof (afterHydration as Promise<void>).then === 'function') {\n ; (afterHydration as Promise<void>).catch(error => this.logError(error, context.store, context.options))\n }\n } catch (error) {\n this.logError(error, context.store, context.options)\n }\n }\n\n if (hydrateResult && typeof (hydrateResult as Promise<void>).then === 'function') {\n ; (hydrateResult as Promise<void>)\n .then(() => runAfterHydration())\n .catch(error => this.logError(error, context.store, context.options))\n } else {\n runAfterHydration()\n }\n\n if (subscriber.subscriptions) {\n this.subscriptionDelivery(context, subscriber.subscriptions)\n }\n\n if (subscriber.storeMutationSubscription) {\n this.storeMutationSubscription(subscriber.storeMutationSubscription)\n }\n\n this.storeOnActionSubscription(subscriber)\n\n if (subscriber.resetStoreCallback) {\n this.addResetStoreCallback(subscriber.resetStoreCallback)\n }\n }\n\n private executeSubscriberSafely(context: PiniaPluginContext, subscriber: PluginSubscriber): void {\n try {\n this.executeSubscriber(context, subscriber)\n } catch (e) {\n this.logError(e, context.store, context.options)\n }\n }\n\n plugin({ store, options }: PiniaPluginContext) {\n if (!this._subscribers.length) {\n return\n }\n\n this.debugLog(`plugin() - ${store.$id}`, [\n 'subscriber:', this._subscribers,\n 'store:', store,\n 'options:', options\n ])\n\n try {\n this._subscribers.forEach(\n subscriber => {\n const subscriberKey = this.defineSubscriberKey(subscriber, store)\n const execution = this.definePluginExecution(subscriber)\n\n if (\n this._subscribersDelivered.has(subscriberKey)\n || this._subscribersScheduled.has(subscriberKey)\n ) {\n return\n }\n\n if (!this.shouldInvokePlugin(execution)) {\n return\n }\n\n if (this.shouldScheduleAfterHydration(execution)) {\n this.queueSubscriberExecution({ store, options } as PiniaPluginContext, subscriber, subscriberKey)\n return\n }\n\n this.executeSubscriber({ store, options } as PiniaPluginContext, subscriber)\n }\n )\n\n this.rewriteResetStore({ store } as PiniaPluginContext, store.$state)\n this._storeRollbackSnapshotsHandler.initFromPluginContext({ store, options } as PiniaPluginContext)\n this.executeStoreOnActionSubscription(store)\n this.registerStoreCleanup(store)\n } catch (e) {\n this.logError(e, store, options)\n }\n }\n\n private queueSubscriberExecution(\n context: PiniaPluginContext,\n subscriber: PluginSubscriber,\n subscriberKey: string\n ): void {\n const scheduler = this.defineHydrationScheduler(subscriber)\n\n this._subscribersScheduled.add(subscriberKey)\n scheduler(() => {\n this._subscribersScheduled.delete(subscriberKey)\n this.executeSubscriberSafely(context, subscriber)\n })\n }\n\n private registerStoreCleanup(store: Store): void {\n this._onActionSubscriptions = []\n if (typeof store.$dispose !== 'function') {\n return\n }\n\n const dispose = store.$dispose.bind(store)\n const scopedStore = store as AnyObject\n\n if (scopedStore.__piniaPluginSubscriptionDisposed) {\n return\n }\n\n scopedStore.__piniaPluginSubscriptionDisposed = true\n store.$dispose = () => {\n this.clearStoreTracking(store)\n this._storeRollbackSnapshotsHandler.clearStoreTracking(store)\n return dispose()\n }\n }\n\n private rewriteResetStore({ store }: PiniaPluginContext, initState: StateTree): void {\n const safeState = deepClone(initState)\n\n store.$reset = () => {\n this.debugLog('rewriteResetStore()', { initState: safeState, store })\n\n this.executeResetStoreCallbacks(store)\n\n store.$patch(deepClone(safeState))\n }\n }\n\n private shouldInvokePlugin(execution: Required<PluginExecutionOptions>): boolean {\n const currentEnvironment = this.defineCurrentEnvironment()\n\n return execution.environment === 'both' || execution.environment === currentEnvironment\n }\n\n private shouldScheduleAfterHydration(execution: Required<PluginExecutionOptions>): boolean {\n return this.defineCurrentEnvironment() === 'client' && execution.hydration === 'defer'\n }\n\n private storeOnActionSubscription(subscriber: PluginSubscriber): void {\n const { store, callback } = subscriber?.storeOnActionSubscription?.() ?? {}\n\n if (!store || !callback) {\n return\n }\n\n this._onActionSubscriptions.push(callback)\n }\n\n private storeMutationSubscription(subscription: StoreMutationSubscription): void {\n const { store, callback } = subscription()\n\n store.$subscribe((mutation: SubscriptionCallbackMutation<StateTree>) => {\n this.debugLog(`$subscribe ${store.$id}`, { mutation, store })\n callback(mutation)\n })\n }\n\n private subscriptionDelivery(\n context: PiniaPluginContext,\n pluginSubscriptions: PluginSubscriptions\n ): void {\n Object.entries(pluginSubscriptions).forEach(([pluginName, pluginSubscription]) => {\n const subscriptionKey = this.defineSubscriptionKey(pluginName, context.store)\n const execution = this.definePluginExecution(pluginSubscription.subscription)\n\n if (\n this._subscriptionsDelivered.has(subscriptionKey)\n || this._subscriptionsScheduled.has(subscriptionKey)\n ) {\n return\n }\n\n if (!this.shouldInvokePlugin(execution)) {\n return\n }\n\n if (this.shouldScheduleAfterHydration(execution)) {\n const scheduler = this.defineHydrationScheduler(pluginSubscription.subscription)\n\n this._subscriptionsScheduled.add(subscriptionKey)\n scheduler(() => {\n this._subscriptionsScheduled.delete(subscriptionKey)\n this.subscriptionDeliverySafely(context, pluginName, pluginSubscription)\n })\n return\n }\n\n this.subscriptionDeliverySafely(context, pluginName, pluginSubscription)\n })\n }\n\n private subscriptionDeliverySafely(\n { store, options }: PiniaPluginContext,\n pluginName: string,\n pluginSubscription: PluginSubscriptionDefinition\n ): void {\n try {\n if (this._subscriptionsDelivered.has(this.defineSubscriptionKey(pluginName, store))) {\n return\n }\n\n const { subscription, subscriptionOptions, stores } = pluginSubscription\n\n this.debugLog(`subscriptionDelivery() - store: ${store.$id}`, [\n 'pluginName:', pluginName,\n 'subscription:', subscription,\n 'options:', pluginSubscription,\n 'stores:', stores\n ])\n\n const pluginOptions = {\n storeOptions: { ...((options as AnyObject)?.storeOptions ?? {}), ...subscriptionOptions }\n } as AnyObject\n\n subscription.invoke(\n { store, options: { ...options, ...pluginOptions } } as PiniaPluginContext,\n this.debug\n )\n this._subscriptionsDelivered.add(this.defineSubscriptionKey(pluginName, store))\n\n if (!isEmpty(stores)) {\n stores?.forEach(\n store => subscription.invoke(\n {\n store,\n options: {\n ...options,\n ...pluginOptions,\n ...((store as AnyObject)?.storeOptions ?? {})\n }\n } as PiniaPluginContext,\n this.debug\n )\n )\n }\n } catch (e) {\n this.logError(`subscriptionDelivery()`, e, store, options)\n }\n }\n}"],"names":["deepClone","value","key","entryValue","item","clonedObject","createStateSnapshot","state","keys","clonedState","toRaw","RollbackStateSnapshotsHandler","__publicField","store","action","stateKeys","args","actionFn","hasDeniedFirstChar","snapshotKey","error","actionName","getActionStoreKey","options","rollbackSnapshotParams","suffix","stateSnapshot","className","defaultPluginExecution","defaultHydrationScheduler","callback","isPluginSubscriptionOptions","PluginSubscription","Debug","subscribers","debugOrOptions","pluginOptions","debug","PluginConsole","storageKey","after","onError","subscriber","pluginName","onActionSubscriptions","hasRollbackSnapshots","name","afterCallbacks","onErrorCallbacks","result","context","subscriberKey","hydrateResult","runAfterHydration","afterHydration","e","execution","scheduler","dispose","scopedStore","initState","safeState","currentEnvironment","subscription","mutation","pluginSubscriptions","pluginSubscription","subscriptionKey","subscriptionOptions","stores","isEmpty","store2","createPlugin","createHydrationPlugin","hydrationPlugin"],"mappings":"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"}
|
|
@@ -7,8 +7,11 @@ declare module 'pinia' {
|
|
|
7
7
|
/**
|
|
8
8
|
* Executes an action and restores the previous state snapshot if it fails.
|
|
9
9
|
* Added to every store when the plugin is active.
|
|
10
|
+
*
|
|
11
|
+
* @param params The action name and the state keys to snapshot.
|
|
12
|
+
* @param args The action arguments, passed as a single array (forwarded via `apply`).
|
|
10
13
|
*/
|
|
11
|
-
$rollbackAfterFailure: (params: RollbackActionParams,
|
|
14
|
+
$rollbackAfterFailure: (params: RollbackActionParams, args?: any[]) => Promise<void>;
|
|
12
15
|
}
|
|
13
16
|
interface DefineStoreOptionsBase<S, Store> {
|
|
14
17
|
storeOptions?: StoreOptions;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compile-only contract for the centralized store-options extension point.
|
|
3
|
+
* Simulates a subscriber plugin augmenting the contract through interface
|
|
4
|
+
* merging, instead of redeclaring pinia's `DefineStoreOptionsBase` (which
|
|
5
|
+
* would raise TS2717 on type mismatch in consumer projects).
|
|
6
|
+
*/
|
|
7
|
+
declare module '../types' {
|
|
8
|
+
interface StoreOptionsExtensions {
|
|
9
|
+
testExtension?: string;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export {};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export type ConsoleStyleDefinition = StyleDefinition;
|
|
|
19
19
|
export type ConsoleStyleDefinitionKeys = StyleDefinitionKeys;
|
|
20
20
|
export type ConsoleStyleDefinitions = StyleDefinitions;
|
|
21
21
|
export type { List, ListTypes, ListTypesMap, PartialList } from './list';
|
|
22
|
-
export type { CustomStore, DefineAStoreSetupContext, DefineAStoreSetupExtensions, EmptyExtensions, PluginStoreOptions, StatePropertyValue, StoreOptions, StoreOptionsPropertyValue } from './store';
|
|
22
|
+
export type { CustomStore, DefineAStoreDefinition, DefineAStoreSetupContext, DefineAStoreSetupExtensions, EmptyExtensions, PluginStoreOptions, StatePropertyValue, StoreOptions, StoreOptionsExtensions, StoreOptionsPropertyValue } from './store';
|
|
23
23
|
export type { NativePiniaSubscription, NativePiniaSubscriptionReturn, PluginExecutionEnvironment, PluginExecutionOptions, PluginHydrationScheduler, PluginHydrationTiming, PluginRuntimeEnvironment, PluginSubscriber, PluginSubscription, PluginSubscriptionOptions, PluginSubscriptions, StoreMutationSubscription, StoreMutationSubscriptionCallback, StoreMutationSubscriptionReturn, StoreOnActionCallbackParameters, StoreOnActionSubscription, StoreOnActionSubscriptionCallback, StoreOnActionSubscriptionReturn, } from './plugin';
|
|
24
24
|
export interface PluginSubscriberInterface {
|
|
25
25
|
console?: Console;
|
package/dist/types/store.d.ts
CHANGED
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
import type { AnyObject } from ".";
|
|
2
2
|
import type { CreateStateSnapshotKeys } from "./plugin";
|
|
3
|
-
import type { PiniaCustomProperties, Store, StoreDefinition } from "pinia";
|
|
3
|
+
import type { Pinia, PiniaCustomProperties, StateTree, Store, StoreDefinition, StoreGeneric } from "pinia";
|
|
4
4
|
import type { Ref } from "vue";
|
|
5
5
|
export type CustomStore<TStore, TState> = Store & TStore & TState & PiniaCustomProperties & StoreDefinition;
|
|
6
|
+
/**
|
|
7
|
+
* Store definition returned by `defineAStore`/`defineAStoreCtx` when explicit
|
|
8
|
+
* store/state types are provided, e.g. for stores augmented by plugins with
|
|
9
|
+
* members not returned by the setup function.
|
|
10
|
+
*
|
|
11
|
+
* The call signature exposes `TStore` (actions/getters) and `TState` (state)
|
|
12
|
+
* with precise typings so IDEs list store members and display action
|
|
13
|
+
* prototypes. It extends pinia's `StoreDefinition` to stay assignable
|
|
14
|
+
* wherever a standard store definition is expected.
|
|
15
|
+
*/
|
|
16
|
+
export interface DefineAStoreDefinition<TStore, TState, Id extends string = string> extends StoreDefinition<Id, StateTree & TState> {
|
|
17
|
+
/**
|
|
18
|
+
* Returns a store, creates it if necessary.
|
|
19
|
+
*
|
|
20
|
+
* @param pinia - Pinia instance to retrieve the store
|
|
21
|
+
* @param hot - dev only hot module replacement
|
|
22
|
+
*/
|
|
23
|
+
(pinia?: Pinia | null, hot?: StoreGeneric): Store<Id, StateTree & TState> & TStore;
|
|
24
|
+
}
|
|
6
25
|
export type EmptyExtensions = Record<never, never>;
|
|
7
26
|
export interface DefineAStoreSetupExtensions<TEnhancedStore> {
|
|
8
27
|
/**
|
|
@@ -30,7 +49,18 @@ export type RollbackAfterFailureParams = {
|
|
|
30
49
|
};
|
|
31
50
|
export type StatePropertyValue = StdStatePropertyValue | Ref<StdStatePropertyValue> | StdStatePropertyValue[] | Ref<StdStatePropertyValue[]> | Ref<StdStatePropertyValue>[];
|
|
32
51
|
type StdStatePropertyValue = AnyObject | boolean | null | number | string | undefined;
|
|
33
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Centralized extension point for per-store plugin options.
|
|
54
|
+
*
|
|
55
|
+
* Subscriber plugins MUST NOT redeclare pinia's `DefineStoreOptionsBase`:
|
|
56
|
+
* merging a `storeOptions` property with a different (even compatible) type
|
|
57
|
+
* raises TS2717 in consumer code. Instead, they augment this interface via
|
|
58
|
+
* `declare module 'pinia-plugin-subscription/types'`, which merges safely as
|
|
59
|
+
* long as each plugin declares its own optional keys.
|
|
60
|
+
*/
|
|
61
|
+
export interface StoreOptionsExtensions {
|
|
62
|
+
}
|
|
63
|
+
export interface StoreOptions extends StoreOptionsExtensions {
|
|
34
64
|
[key: string]: StoreOptionsPropertyValue;
|
|
35
65
|
rollbackAfterFailure?: RollbackAfterFailureParams;
|
|
36
66
|
}
|
|
@@ -1 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deeply clones the provided value, handling objects, arrays, maps, and sets. Uses `structuredClone` if available, otherwise falls back to a manual deep clone.
|
|
3
|
+
* @template T The type of the value to deep clone.
|
|
4
|
+
* @param value The value to deep clone.
|
|
5
|
+
* @returns A deep clone of the provided value.
|
|
6
|
+
*/
|
|
1
7
|
export declare function deepClone<T>(value: T): T;
|
package/dist/utils/store.d.ts
CHANGED
|
@@ -1,25 +1,94 @@
|
|
|
1
|
-
import type { DefineStoreOptions, StateTree, Store, StoreDefinition } from "pinia";
|
|
1
|
+
import type { DefineStoreOptions, SetupStoreDefinition, StateTree, Store, StoreDefinition, _GettersTree } from "pinia";
|
|
2
2
|
import type { AnyObject } from "../types";
|
|
3
|
-
import type { DefineAStoreSetupContext, EmptyExtensions, PluginStoreOptions, StoreOptions } from "../types/store";
|
|
3
|
+
import type { DefineAStoreDefinition, DefineAStoreSetupContext, EmptyExtensions, PluginStoreOptions, StoreOptions } from "../types/store";
|
|
4
4
|
export declare const itemState: {
|
|
5
5
|
'@id': undefined;
|
|
6
6
|
id: undefined;
|
|
7
7
|
};
|
|
8
|
-
type DefineAStoreSetup<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
type DefineAStoreSetup<SS, TExtraExtensions extends Record<string, unknown> = EmptyExtensions> = (ctx: DefineAStoreSetupContext<SS, TExtraExtensions>) => SS;
|
|
9
|
+
/**
|
|
10
|
+
* Define a store with the setup API. State, getters and actions are inferred
|
|
11
|
+
* from the setup function return, exactly like pinia's `defineStore`, so
|
|
12
|
+
* store members are listed by IDEs and action prototypes are preserved.
|
|
13
|
+
* @template Id The type of the store identifier.
|
|
14
|
+
* @template SS The type of the setup function return.
|
|
15
|
+
* @param id The unique identifier for the store.
|
|
16
|
+
* @param storeDefinition The setup function defining the store.
|
|
17
|
+
* @param options Optional store options.
|
|
18
|
+
* @returns The defined store.
|
|
19
|
+
*/
|
|
20
|
+
export declare function defineAStore<Id extends string, SS>(id: Id, storeDefinition: (ctx?: DefineAStoreSetupContext<AnyObject>) => SS, options?: StoreOptions): SetupStoreDefinition<Id, SS>;
|
|
21
|
+
/**
|
|
22
|
+
* Define a store with the options API, mirroring pinia's `defineStore` inference.
|
|
23
|
+
* @template Id The type of the store identifier.
|
|
24
|
+
* @template S The type of the store's state.
|
|
25
|
+
* @template G The type of the store's getters.
|
|
26
|
+
* @template A The type of the store's actions.
|
|
27
|
+
* @param id The unique identifier for the store.
|
|
28
|
+
* @param storeDefinition The store options definition.
|
|
29
|
+
* @param options Optional store options.
|
|
30
|
+
* @returns The defined store.
|
|
31
|
+
*/
|
|
32
|
+
export declare function defineAStore<Id extends string, S extends StateTree = {}, G extends _GettersTree<S> = {}, A = {}>(id: Id, storeDefinition: Omit<DefineStoreOptions<Id, S, G, A>, 'id'>, options?: StoreOptions): StoreDefinition<Id, S, G, A>;
|
|
33
|
+
/**
|
|
34
|
+
* Define a store with explicit store/state types, e.g. when plugins augment
|
|
35
|
+
* the store with members not returned by the setup function.
|
|
36
|
+
* @template Sto The type of the store.
|
|
37
|
+
* @template Sta The type of the store's state.
|
|
38
|
+
* @param id The unique identifier for the store.
|
|
39
|
+
* @param storeDefinition The store definition, either as an options object or a setup function.
|
|
40
|
+
* @param options Optional store options.
|
|
41
|
+
* @returns The defined store.
|
|
42
|
+
*/
|
|
43
|
+
export declare function defineAStore<Sto, Sta>(id: string, storeDefinition: Omit<DefineStoreOptions<string, StateTree & Sta, AnyObject, Partial<Sto>>, 'id'> | ((ctx?: DefineAStoreSetupContext<Sto & Sta>) => AnyObject), options?: StoreOptions): DefineAStoreDefinition<Sto, Sta>;
|
|
44
|
+
/**
|
|
45
|
+
* Define a store with a required, fully typed setup context. State, getters
|
|
46
|
+
* and actions are inferred from the setup function return.
|
|
47
|
+
* @template Id The type of the store identifier.
|
|
48
|
+
* @template SS The type of the setup function return.
|
|
49
|
+
* @template TExtraExtensions The type of the store's extra extensions.
|
|
50
|
+
* @param id The unique identifier for the store.
|
|
51
|
+
* @param storeDefinition The setup function defining the store.
|
|
52
|
+
* @param options Optional store options.
|
|
53
|
+
* @returns The defined store with setup context.
|
|
54
|
+
*/
|
|
55
|
+
export declare function defineAStoreCtx<Id extends string, SS, TExtraExtensions extends Record<string, unknown> = EmptyExtensions>(id: Id, storeDefinition: (ctx: DefineAStoreSetupContext<AnyObject, TExtraExtensions>) => SS, options?: StoreOptions): SetupStoreDefinition<Id, SS>;
|
|
56
|
+
/**
|
|
57
|
+
* Define a store with a setup context and explicit store/state types, e.g.
|
|
58
|
+
* when plugins augment the store with members not returned by the setup function.
|
|
59
|
+
* @template Sto The type of the store.
|
|
60
|
+
* @template Sta The type of the store's state.
|
|
61
|
+
* @template TExtraExtensions The type of the store's extra extensions.
|
|
62
|
+
* @param id The unique identifier for the store.
|
|
63
|
+
* @param storeDefinition The setup function defining the store.
|
|
64
|
+
* @param options Optional store options.
|
|
65
|
+
* @returns The defined store with setup context.
|
|
66
|
+
*/
|
|
67
|
+
export declare function defineAStoreCtx<Sto, Sta, TExtraExtensions extends Record<string, unknown> = EmptyExtensions>(id: string, storeDefinition: (ctx: DefineAStoreSetupContext<Sto & Sta, TExtraExtensions>) => AnyObject, options?: StoreOptions): DefineAStoreDefinition<Sto, Sta>;
|
|
68
|
+
export declare function defineAStoreSetup<Id extends string, SS>(id: Id, storeDefinition: DefineAStoreSetup<SS>, options: PluginStoreOptions): SetupStoreDefinition<Id, SS>;
|
|
69
|
+
export declare function defineAStoreOptionApi<Id extends string, S extends StateTree = {}, G extends _GettersTree<S> = {}, A = {}>(id: Id, storeDefinition: Omit<DefineStoreOptions<Id, S, G, A>, 'id'>, options?: PluginStoreOptions): StoreDefinition<Id, S, G, A>;
|
|
70
|
+
/**
|
|
71
|
+
* Check if a property has a denied first character : ['_', '$'].
|
|
72
|
+
* @param property The property name to check.
|
|
73
|
+
* @returns True if the property has a denied first character, false otherwise.
|
|
74
|
+
*/
|
|
13
75
|
export declare function hasDeniedFirstChar(property: string): boolean;
|
|
14
|
-
|
|
76
|
+
/**
|
|
77
|
+
* Get the setup context associated with a store instance (or pending store id).
|
|
78
|
+
* @param store The store instance, or an object exposing the store `$id`.
|
|
79
|
+
* @returns The setup context when the store was defined with `enhancedStore` enabled, undefined otherwise.
|
|
80
|
+
*/
|
|
81
|
+
export declare function getDefineAStoreSetupContext(store: object): DefineAStoreSetupContext<AnyObject> | undefined;
|
|
15
82
|
/**
|
|
16
83
|
* Get the enhanced store from the context.
|
|
84
|
+
* @template TEnhancedStore The type of the enhanced store.
|
|
17
85
|
* @param ctx The context containing the extensions.
|
|
18
86
|
* @returns The enhanced store casted to the specified types.
|
|
19
87
|
*/
|
|
20
88
|
export declare function getEnhancedStore<TEnhancedStore>(ctx: DefineAStoreSetupContext<TEnhancedStore>): TEnhancedStore;
|
|
21
89
|
/**
|
|
22
90
|
* Set the enhanced store in context with deprecated alias support.
|
|
91
|
+
* @template TEnhancedStore The type of the enhanced store.
|
|
23
92
|
* @param ctx The context containing the extensions.
|
|
24
93
|
* @param store The store to expose as enhancement.
|
|
25
94
|
*/
|