@wizzard-packages/persistence 0.1.0 → 0.1.2
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/LICENSE +1 -1
- package/README.md +44 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +11 -2
package/LICENSE
CHANGED
package/README.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# @wizzard-packages/persistence
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
Persistence adapters for Wizzard Stepper. Save wizard state to localStorage or memory.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pnpm add @wizzard-packages/persistence
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage with React
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { LocalStorageAdapter } from '@wizzard-packages/persistence';
|
|
19
|
+
|
|
20
|
+
const config = {
|
|
21
|
+
steps,
|
|
22
|
+
persistence: {
|
|
23
|
+
adapter: new LocalStorageAdapter('wizard_'),
|
|
24
|
+
mode: 'onStepChange',
|
|
25
|
+
debounceTime: 300,
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Adapters
|
|
31
|
+
|
|
32
|
+
- LocalStorageAdapter - persist to browser storage
|
|
33
|
+
- MemoryAdapter - in-memory store (useful for tests)
|
|
34
|
+
|
|
35
|
+
## Fits in the stack
|
|
36
|
+
|
|
37
|
+
- Core engine: @wizzard-packages/core
|
|
38
|
+
- React bindings: @wizzard-packages/react
|
|
39
|
+
- Optional middleware: @wizzard-packages/middleware
|
|
40
|
+
|
|
41
|
+
## Links
|
|
42
|
+
|
|
43
|
+
- Repo: https://github.com/ZizzX/wizzard-packages
|
|
44
|
+
- Docs UI: https://zizzx.github.io/wizzard-packages/
|
package/dist/index.cjs
CHANGED
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/LocalStorageAdapter.ts","../src/MemoryAdapter.ts"],"names":[],"mappings":";;;AAKO,IAAM,sBAAN,MAAyD;AAAA,EAG9D,WAAA,CAAY,SAAiB,SAAA,EAAW;AACtC,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA,EAEQ,OAAO,MAAA,EAAwB;AACrC,IAAA,OAAO,CAAA,EAAG,IAAA,CAAK,MAAM,CAAA,EAAG,MAAM,CAAA,CAAA;AAAA,EAChC;AAAA,EAEA,QAAA,CAAY,QAAgB,IAAA,EAAe;AACzC,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACnC,IAAA,IAAI;AACF,MAAA,MAAM,UAAU,EAAE,SAAA,EAAW,IAAA,CAAK,GAAA,IAAO,IAAA,EAAK;AAC9C,MAAA,YAAA,CAAa,OAAA,CAAQ,KAAK,MAAA,CAAO,MAAM,GAAG,IAAA,CAAK,SAAA,CAAU,OAAO,CAAC,CAAA;AAAA,IACnE,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,IAAA,CAAK,4CAA4C,KAAK,CAAA;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,QAAW,MAAA,EAA+B;AACxC,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,MAAA;AAC1C,IAAA,IAAI;AACF,MAAA,MAAM,OAAO,YAAA,CAAa,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,MAAM,CAAC,CAAA;AACrD,MAAA,IAAI,CAAC,MAAM,OAAO,KAAA,CAAA;AAElB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC9B,MAAA,IAAI,UAAU,OAAO,MAAA,KAAW,YAAY,WAAA,IAAe,MAAA,IAAU,UAAU,MAAA,EAAQ;AACrF,QAAA,OAAO,MAAA,CAAO,IAAA;AAAA,MAChB;AACA,MAAA,OAAO,MAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,IAAA,CAAK,2CAA2C,KAAK,CAAA;AAC7D,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEA,gBAAmB,MAAA,EAA4D;AAC7E,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,MAAA;AAC1C,IAAA,IAAI;AACF,MAAA,MAAM,OAAO,YAAA,CAAa,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,MAAM,CAAC,CAAA;AACrD,MAAA,IAAI,CAAC,MAAM,OAAO,KAAA,CAAA;AAElB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC9B,MAAA,IAAI,UAAU,OAAO,MAAA,KAAW,YAAY,WAAA,IAAe,MAAA,IAAU,UAAU,MAAA,EAAQ;AACrF,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAa,SAAA,EAAW,CAAA,EAAE;AAAA,IAC3C,SAAS,
|
|
1
|
+
{"version":3,"sources":["../src/LocalStorageAdapter.ts","../src/MemoryAdapter.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["import type { IPersistenceAdapter } from '@wizzard-packages/core';\n\n/**\n * Browser persistence adapter backed by localStorage.\n */\nexport class LocalStorageAdapter implements IPersistenceAdapter {\n private prefix: string;\n\n constructor(prefix: string = 'wizard_') {\n this.prefix = prefix;\n }\n\n private getKey(stepId: string): string {\n return `${this.prefix}${stepId}`;\n }\n\n saveStep<T>(stepId: string, data: T): void {\n if (typeof window === 'undefined') return;\n try {\n const payload = { timestamp: Date.now(), data };\n localStorage.setItem(this.getKey(stepId), JSON.stringify(payload));\n } catch (error) {\n console.warn('LocalStorageAdapter: Failed to save step', error);\n }\n }\n\n getStep<T>(stepId: string): T | undefined {\n if (typeof window === 'undefined') return undefined;\n try {\n const item = localStorage.getItem(this.getKey(stepId));\n if (!item) return undefined;\n\n const parsed = JSON.parse(item);\n if (parsed && typeof parsed === 'object' && 'timestamp' in parsed && 'data' in parsed) {\n return parsed.data as T;\n }\n return parsed as T;\n } catch (error) {\n console.warn('LocalStorageAdapter: Failed to get step', error);\n return undefined;\n }\n }\n\n getStepWithMeta<T>(stepId: string): { data: T; timestamp: number } | undefined {\n if (typeof window === 'undefined') return undefined;\n try {\n const item = localStorage.getItem(this.getKey(stepId));\n if (!item) return undefined;\n\n const parsed = JSON.parse(item);\n if (parsed && typeof parsed === 'object' && 'timestamp' in parsed && 'data' in parsed) {\n return parsed as { data: T; timestamp: number };\n }\n return { data: parsed as T, timestamp: 0 };\n } catch (_error) {\n return undefined;\n }\n }\n\n clearStep(stepId: string): void {\n if (typeof window === 'undefined') return;\n try {\n localStorage.removeItem(this.getKey(stepId));\n } catch (error) {\n console.warn('LocalStorageAdapter: Failed to clear step', error);\n }\n }\n\n clear(): void {\n if (typeof window === 'undefined') return;\n Object.keys(localStorage).forEach((key) => {\n if (key.startsWith(this.prefix)) {\n localStorage.removeItem(key);\n }\n });\n }\n}\n","import type { IPersistenceAdapter } from '@wizzard-packages/core';\n\n/**\n * In-memory persistence adapter for tests or ephemeral sessions.\n */\nexport class MemoryAdapter implements IPersistenceAdapter {\n private storage: Record<string, any> = {};\n\n saveStep<T>(stepId: string, data: T): void {\n this.storage[stepId] = data;\n }\n\n getStep<T>(stepId: string): T | undefined {\n return this.storage[stepId] as T;\n }\n\n getStepWithMeta<T>(stepId: string): { data: T; timestamp: number } | undefined {\n const item = this.storage[stepId];\n if (!item) return undefined;\n return { data: item as T, timestamp: Date.now() };\n }\n\n clearStep(stepId: string): void {\n delete this.storage[stepId];\n }\n\n clear(): void {\n this.storage = {};\n }\n}\n"]}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/LocalStorageAdapter.ts","../src/MemoryAdapter.ts"],"names":[],"mappings":";AAKO,IAAM,sBAAN,MAAyD;AAAA,EAG9D,WAAA,CAAY,SAAiB,SAAA,EAAW;AACtC,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA,EAEQ,OAAO,MAAA,EAAwB;AACrC,IAAA,OAAO,CAAA,EAAG,IAAA,CAAK,MAAM,CAAA,EAAG,MAAM,CAAA,CAAA;AAAA,EAChC;AAAA,EAEA,QAAA,CAAY,QAAgB,IAAA,EAAe;AACzC,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACnC,IAAA,IAAI;AACF,MAAA,MAAM,UAAU,EAAE,SAAA,EAAW,IAAA,CAAK,GAAA,IAAO,IAAA,EAAK;AAC9C,MAAA,YAAA,CAAa,OAAA,CAAQ,KAAK,MAAA,CAAO,MAAM,GAAG,IAAA,CAAK,SAAA,CAAU,OAAO,CAAC,CAAA;AAAA,IACnE,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,IAAA,CAAK,4CAA4C,KAAK,CAAA;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,QAAW,MAAA,EAA+B;AACxC,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,MAAA;AAC1C,IAAA,IAAI;AACF,MAAA,MAAM,OAAO,YAAA,CAAa,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,MAAM,CAAC,CAAA;AACrD,MAAA,IAAI,CAAC,MAAM,OAAO,KAAA,CAAA;AAElB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC9B,MAAA,IAAI,UAAU,OAAO,MAAA,KAAW,YAAY,WAAA,IAAe,MAAA,IAAU,UAAU,MAAA,EAAQ;AACrF,QAAA,OAAO,MAAA,CAAO,IAAA;AAAA,MAChB;AACA,MAAA,OAAO,MAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,IAAA,CAAK,2CAA2C,KAAK,CAAA;AAC7D,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEA,gBAAmB,MAAA,EAA4D;AAC7E,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,MAAA;AAC1C,IAAA,IAAI;AACF,MAAA,MAAM,OAAO,YAAA,CAAa,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,MAAM,CAAC,CAAA;AACrD,MAAA,IAAI,CAAC,MAAM,OAAO,KAAA,CAAA;AAElB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC9B,MAAA,IAAI,UAAU,OAAO,MAAA,KAAW,YAAY,WAAA,IAAe,MAAA,IAAU,UAAU,MAAA,EAAQ;AACrF,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAa,SAAA,EAAW,CAAA,EAAE;AAAA,IAC3C,SAAS,
|
|
1
|
+
{"version":3,"sources":["../src/LocalStorageAdapter.ts","../src/MemoryAdapter.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { IPersistenceAdapter } from '@wizzard-packages/core';\n\n/**\n * Browser persistence adapter backed by localStorage.\n */\nexport class LocalStorageAdapter implements IPersistenceAdapter {\n private prefix: string;\n\n constructor(prefix: string = 'wizard_') {\n this.prefix = prefix;\n }\n\n private getKey(stepId: string): string {\n return `${this.prefix}${stepId}`;\n }\n\n saveStep<T>(stepId: string, data: T): void {\n if (typeof window === 'undefined') return;\n try {\n const payload = { timestamp: Date.now(), data };\n localStorage.setItem(this.getKey(stepId), JSON.stringify(payload));\n } catch (error) {\n console.warn('LocalStorageAdapter: Failed to save step', error);\n }\n }\n\n getStep<T>(stepId: string): T | undefined {\n if (typeof window === 'undefined') return undefined;\n try {\n const item = localStorage.getItem(this.getKey(stepId));\n if (!item) return undefined;\n\n const parsed = JSON.parse(item);\n if (parsed && typeof parsed === 'object' && 'timestamp' in parsed && 'data' in parsed) {\n return parsed.data as T;\n }\n return parsed as T;\n } catch (error) {\n console.warn('LocalStorageAdapter: Failed to get step', error);\n return undefined;\n }\n }\n\n getStepWithMeta<T>(stepId: string): { data: T; timestamp: number } | undefined {\n if (typeof window === 'undefined') return undefined;\n try {\n const item = localStorage.getItem(this.getKey(stepId));\n if (!item) return undefined;\n\n const parsed = JSON.parse(item);\n if (parsed && typeof parsed === 'object' && 'timestamp' in parsed && 'data' in parsed) {\n return parsed as { data: T; timestamp: number };\n }\n return { data: parsed as T, timestamp: 0 };\n } catch (_error) {\n return undefined;\n }\n }\n\n clearStep(stepId: string): void {\n if (typeof window === 'undefined') return;\n try {\n localStorage.removeItem(this.getKey(stepId));\n } catch (error) {\n console.warn('LocalStorageAdapter: Failed to clear step', error);\n }\n }\n\n clear(): void {\n if (typeof window === 'undefined') return;\n Object.keys(localStorage).forEach((key) => {\n if (key.startsWith(this.prefix)) {\n localStorage.removeItem(key);\n }\n });\n }\n}\n","import type { IPersistenceAdapter } from '@wizzard-packages/core';\n\n/**\n * In-memory persistence adapter for tests or ephemeral sessions.\n */\nexport class MemoryAdapter implements IPersistenceAdapter {\n private storage: Record<string, any> = {};\n\n saveStep<T>(stepId: string, data: T): void {\n this.storage[stepId] = data;\n }\n\n getStep<T>(stepId: string): T | undefined {\n return this.storage[stepId] as T;\n }\n\n getStepWithMeta<T>(stepId: string): { data: T; timestamp: number } | undefined {\n const item = this.storage[stepId];\n if (!item) return undefined;\n return { data: item as T, timestamp: Date.now() };\n }\n\n clearStep(stepId: string): void {\n delete this.storage[stepId];\n }\n\n clear(): void {\n this.storage = {};\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wizzard-packages/persistence",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Persistence adapters for Wizzard Stepper.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,8 +24,17 @@
|
|
|
24
24
|
"require": "./dist/index.cjs"
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"wizard",
|
|
29
|
+
"stepper",
|
|
30
|
+
"persistence",
|
|
31
|
+
"localstorage",
|
|
32
|
+
"state",
|
|
33
|
+
"form"
|
|
34
|
+
],
|
|
35
|
+
"license": "MIT",
|
|
27
36
|
"dependencies": {
|
|
28
|
-
"@wizzard-packages/core": "0.
|
|
37
|
+
"@wizzard-packages/core": "0.3.0"
|
|
29
38
|
},
|
|
30
39
|
"devDependencies": {
|
|
31
40
|
"tsup": "^8.3.5",
|