@fluixi/storage 0.1.0-alpha.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.
Files changed (134) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +30 -0
  3. package/dist/adapters/memory.cjs +46 -0
  4. package/dist/adapters/memory.d.ts +8 -0
  5. package/dist/adapters/memory.d.ts.map +1 -0
  6. package/dist/adapters/memory.js +26 -0
  7. package/dist/adapters/memory.mjs +25 -0
  8. package/dist/browser/document-cookie.cjs +101 -0
  9. package/dist/browser/document-cookie.d.ts +14 -0
  10. package/dist/browser/document-cookie.d.ts.map +1 -0
  11. package/dist/browser/document-cookie.js +53 -0
  12. package/dist/browser/document-cookie.mjs +80 -0
  13. package/dist/browser/index.cjs +209 -0
  14. package/dist/browser/index.d.ts +4 -0
  15. package/dist/browser/index.d.ts.map +1 -0
  16. package/dist/browser/index.js +3 -0
  17. package/dist/browser/index.mjs +187 -0
  18. package/dist/browser/web-storage.cjs +150 -0
  19. package/dist/browser/web-storage.d.ts +6 -0
  20. package/dist/browser/web-storage.d.ts.map +1 -0
  21. package/dist/browser/web-storage.js +105 -0
  22. package/dist/browser/web-storage.mjs +127 -0
  23. package/dist/core/async-storage.cjs +583 -0
  24. package/dist/core/async-storage.d.ts +17 -0
  25. package/dist/core/async-storage.d.ts.map +1 -0
  26. package/dist/core/async-storage.js +275 -0
  27. package/dist/core/async-storage.mjs +560 -0
  28. package/dist/core/bus.cjs +52 -0
  29. package/dist/core/bus.d.ts +19 -0
  30. package/dist/core/bus.d.ts.map +1 -0
  31. package/dist/core/bus.js +31 -0
  32. package/dist/core/bus.mjs +31 -0
  33. package/dist/core/envelope.cjs +119 -0
  34. package/dist/core/envelope.d.ts +38 -0
  35. package/dist/core/envelope.d.ts.map +1 -0
  36. package/dist/core/envelope.js +83 -0
  37. package/dist/core/envelope.mjs +96 -0
  38. package/dist/core/errors.cjs +115 -0
  39. package/dist/core/errors.d.ts +109 -0
  40. package/dist/core/errors.d.ts.map +1 -0
  41. package/dist/core/errors.js +99 -0
  42. package/dist/core/errors.mjs +94 -0
  43. package/dist/core/storage.cjs +782 -0
  44. package/dist/core/storage.d.ts +63 -0
  45. package/dist/core/storage.d.ts.map +1 -0
  46. package/dist/core/storage.js +260 -0
  47. package/dist/core/storage.mjs +759 -0
  48. package/dist/core/types.cjs +18 -0
  49. package/dist/core/types.d.ts +239 -0
  50. package/dist/core/types.d.ts.map +1 -0
  51. package/dist/core/types.js +1 -0
  52. package/dist/core/types.mjs +0 -0
  53. package/dist/encryption/base64.cjs +38 -0
  54. package/dist/encryption/base64.d.ts +4 -0
  55. package/dist/encryption/base64.d.ts.map +1 -0
  56. package/dist/encryption/base64.js +16 -0
  57. package/dist/encryption/base64.mjs +17 -0
  58. package/dist/encryption/keys.cjs +77 -0
  59. package/dist/encryption/keys.d.ts +14 -0
  60. package/dist/encryption/keys.d.ts.map +1 -0
  61. package/dist/encryption/keys.js +28 -0
  62. package/dist/encryption/keys.mjs +54 -0
  63. package/dist/encryption/seal.cjs +154 -0
  64. package/dist/encryption/seal.d.ts +24 -0
  65. package/dist/encryption/seal.d.ts.map +1 -0
  66. package/dist/encryption/seal.js +83 -0
  67. package/dist/encryption/seal.mjs +131 -0
  68. package/dist/encryption/types.cjs +18 -0
  69. package/dist/encryption/types.d.ts +50 -0
  70. package/dist/encryption/types.d.ts.map +1 -0
  71. package/dist/encryption/types.js +1 -0
  72. package/dist/encryption/types.mjs +0 -0
  73. package/dist/encryption/web-crypto.cjs +81 -0
  74. package/dist/encryption/web-crypto.d.ts +9 -0
  75. package/dist/encryption/web-crypto.d.ts.map +1 -0
  76. package/dist/encryption/web-crypto.js +45 -0
  77. package/dist/encryption/web-crypto.mjs +58 -0
  78. package/dist/index.cjs +870 -0
  79. package/dist/index.d.ts +16 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +13 -0
  82. package/dist/index.mjs +848 -0
  83. package/dist/serialization/json.cjs +83 -0
  84. package/dist/serialization/json.d.ts +3 -0
  85. package/dist/serialization/json.d.ts.map +1 -0
  86. package/dist/serialization/json.js +51 -0
  87. package/dist/serialization/json.mjs +60 -0
  88. package/dist/serialization/serializer.cjs +28 -0
  89. package/dist/serialization/serializer.d.ts +4 -0
  90. package/dist/serialization/serializer.d.ts.map +1 -0
  91. package/dist/serialization/serializer.js +4 -0
  92. package/dist/serialization/serializer.mjs +7 -0
  93. package/dist/server/contracts.cjs +36 -0
  94. package/dist/server/contracts.d.ts +27 -0
  95. package/dist/server/contracts.d.ts.map +1 -0
  96. package/dist/server/contracts.js +16 -0
  97. package/dist/server/contracts.mjs +15 -0
  98. package/dist/server/cookie.cjs +126 -0
  99. package/dist/server/cookie.d.ts +21 -0
  100. package/dist/server/cookie.d.ts.map +1 -0
  101. package/dist/server/cookie.js +71 -0
  102. package/dist/server/cookie.mjs +105 -0
  103. package/dist/server/index.cjs +155 -0
  104. package/dist/server/index.d.ts +5 -0
  105. package/dist/server/index.d.ts.map +1 -0
  106. package/dist/server/index.js +4 -0
  107. package/dist/server/index.mjs +133 -0
  108. package/dist/server/request.cjs +46 -0
  109. package/dist/server/request.d.ts +7 -0
  110. package/dist/server/request.d.ts.map +1 -0
  111. package/dist/server/request.js +25 -0
  112. package/dist/server/request.mjs +25 -0
  113. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  114. package/dist/utils/cookie-names.cjs +38 -0
  115. package/dist/utils/cookie-names.d.ts +10 -0
  116. package/dist/utils/cookie-names.d.ts.map +1 -0
  117. package/dist/utils/cookie-names.js +15 -0
  118. package/dist/utils/cookie-names.mjs +17 -0
  119. package/dist/utils/copy.cjs +38 -0
  120. package/dist/utils/copy.d.ts +17 -0
  121. package/dist/utils/copy.d.ts.map +1 -0
  122. package/dist/utils/copy.js +15 -0
  123. package/dist/utils/copy.mjs +17 -0
  124. package/dist/utils/environment.cjs +28 -0
  125. package/dist/utils/environment.d.ts +3 -0
  126. package/dist/utils/environment.d.ts.map +1 -0
  127. package/dist/utils/environment.js +4 -0
  128. package/dist/utils/environment.mjs +7 -0
  129. package/dist/utils/keys.cjs +33 -0
  130. package/dist/utils/keys.d.ts +5 -0
  131. package/dist/utils/keys.d.ts.map +1 -0
  132. package/dist/utils/keys.js +10 -0
  133. package/dist/utils/keys.mjs +12 -0
  134. package/package.json +61 -0
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/utils/copy.ts
21
+ var copy_exports = {};
22
+ __export(copy_exports, {
23
+ copyStorage: () => copyStorage
24
+ });
25
+ module.exports = __toCommonJS(copy_exports);
26
+ var isAsync = (storage) => "encryption" in storage;
27
+ var pick = (snapshot, keys) => {
28
+ const out = snapshot;
29
+ if (keys) {
30
+ for (const key of Object.keys(out)) if (!keys.includes(key)) delete out[key];
31
+ }
32
+ return out;
33
+ };
34
+ function copyStorage(from, to, options = {}) {
35
+ const restore = { overwrite: options.overwrite };
36
+ if (!isAsync(from) && !isAsync(to)) return to.restore(pick(from.snapshot(), options.keys), restore);
37
+ return (async () => to.restore(pick(await from.snapshot(), options.keys), restore))();
38
+ }
@@ -0,0 +1,17 @@
1
+ import type { AsyncTypedStorage, StorageSchema, TypedStorage } from '../core/types.js';
2
+ type CopyOptions = {
3
+ keys?: string[];
4
+ overwrite?: boolean;
5
+ };
6
+ /**
7
+ * Copies items from one storage to another, metadata included: moving data to a new adapter,
8
+ * seeding a test, backing up a namespace. Existing keys in `to` are kept unless `overwrite`.
9
+ * Returns how many items were written; a promise when either storage is asynchronous.
10
+ *
11
+ * Encrypted items are read decrypted and written encrypted again with `to`'s key, so `to` needs
12
+ * encryption configured for them.
13
+ */
14
+ export declare function copyStorage<S extends StorageSchema>(from: TypedStorage<S>, to: TypedStorage<S>, options?: CopyOptions): number;
15
+ export declare function copyStorage<S extends StorageSchema>(from: TypedStorage<S> | AsyncTypedStorage<S>, to: TypedStorage<S> | AsyncTypedStorage<S>, options?: CopyOptions): Promise<number>;
16
+ export {};
17
+ //# sourceMappingURL=copy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../src/utils/copy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAmB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAExG,KAAK,WAAW,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAU5D;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,aAAa,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;AAChI,wBAAgB,WAAW,CAAC,CAAC,SAAS,aAAa,EACjD,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAC5C,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAC1C,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ const isAsync = (storage) => 'encryption' in storage;
2
+ const pick = (snapshot, keys) => {
3
+ const out = snapshot;
4
+ if (keys)
5
+ for (const key of Object.keys(out))
6
+ if (!keys.includes(key))
7
+ delete out[key];
8
+ return out;
9
+ };
10
+ export function copyStorage(from, to, options = {}) {
11
+ const restore = { overwrite: options.overwrite };
12
+ if (!isAsync(from) && !isAsync(to))
13
+ return to.restore(pick(from.snapshot(), options.keys), restore);
14
+ return (async () => to.restore(pick(await from.snapshot(), options.keys), restore))();
15
+ }
@@ -0,0 +1,17 @@
1
+ // src/utils/copy.ts
2
+ var isAsync = (storage) => "encryption" in storage;
3
+ var pick = (snapshot, keys) => {
4
+ const out = snapshot;
5
+ if (keys) {
6
+ for (const key of Object.keys(out)) if (!keys.includes(key)) delete out[key];
7
+ }
8
+ return out;
9
+ };
10
+ function copyStorage(from, to, options = {}) {
11
+ const restore = { overwrite: options.overwrite };
12
+ if (!isAsync(from) && !isAsync(to)) return to.restore(pick(from.snapshot(), options.keys), restore);
13
+ return (async () => to.restore(pick(await from.snapshot(), options.keys), restore))();
14
+ }
15
+ export {
16
+ copyStorage
17
+ };
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/utils/environment.ts
21
+ var environment_exports = {};
22
+ __export(environment_exports, {
23
+ hasWindow: () => hasWindow
24
+ });
25
+ module.exports = __toCommonJS(environment_exports);
26
+ function hasWindow() {
27
+ return typeof window !== "undefined";
28
+ }
@@ -0,0 +1,3 @@
1
+ /** Lazy checks: nothing here reads a browser global until it is called. */
2
+ export declare function hasWindow(): boolean;
3
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/utils/environment.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,wBAAgB,SAAS,IAAI,OAAO,CAEnC"}
@@ -0,0 +1,4 @@
1
+ /** Lazy checks: nothing here reads a browser global until it is called. */
2
+ export function hasWindow() {
3
+ return typeof window !== 'undefined';
4
+ }
@@ -0,0 +1,7 @@
1
+ // src/utils/environment.ts
2
+ function hasWindow() {
3
+ return typeof window !== "undefined";
4
+ }
5
+ export {
6
+ hasWindow
7
+ };
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/utils/keys.ts
21
+ var keys_exports = {};
22
+ __export(keys_exports, {
23
+ joinNamespace: () => joinNamespace,
24
+ namespacePrefix: () => namespacePrefix
25
+ });
26
+ module.exports = __toCommonJS(keys_exports);
27
+ function namespacePrefix(namespace) {
28
+ return namespace ? `${namespace}:` : "";
29
+ }
30
+ function joinNamespace(parent, child) {
31
+ if (!child) throw new TypeError("A namespace needs a name.");
32
+ return parent ? `${parent}:${child}` : child;
33
+ }
@@ -0,0 +1,5 @@
1
+ /** The prefix a namespace puts before its keys: `app` gives `app:`. */
2
+ export declare function namespacePrefix(namespace: string | undefined): string;
3
+ /** A nested namespace: `app` and `auth` give `app:auth`. */
4
+ export declare function joinNamespace(parent: string | undefined, child: string): string;
5
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/utils/keys.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAErE;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/E"}
@@ -0,0 +1,10 @@
1
+ /** The prefix a namespace puts before its keys: `app` gives `app:`. */
2
+ export function namespacePrefix(namespace) {
3
+ return namespace ? `${namespace}:` : '';
4
+ }
5
+ /** A nested namespace: `app` and `auth` give `app:auth`. */
6
+ export function joinNamespace(parent, child) {
7
+ if (!child)
8
+ throw new TypeError('A namespace needs a name.');
9
+ return parent ? `${parent}:${child}` : child;
10
+ }
@@ -0,0 +1,12 @@
1
+ // src/utils/keys.ts
2
+ function namespacePrefix(namespace) {
3
+ return namespace ? `${namespace}:` : "";
4
+ }
5
+ function joinNamespace(parent, child) {
6
+ if (!child) throw new TypeError("A namespace needs a name.");
7
+ return parent ? `${parent}:${child}` : child;
8
+ }
9
+ export {
10
+ joinNamespace,
11
+ namespacePrefix
12
+ };
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@fluixi/storage",
3
+ "version": "0.1.0-alpha.0",
4
+ "license": "MIT",
5
+ "author": "Ibrahima Touré",
6
+ "private": false,
7
+ "publishConfig": {
8
+ "registry": "https://registry.npmjs.org/",
9
+ "access": "public"
10
+ },
11
+ "description": "A universal storage abstraction: one typed API across browser, SSR, server and custom environments, with adapters, namespaces, expiry and versioned entries.",
12
+ "type": "module",
13
+ "sideEffects": false,
14
+ "files": [
15
+ "dist",
16
+ "README.md",
17
+ "LICENSE"
18
+ ],
19
+ "main": "./dist/index.js",
20
+ "module": "./dist/index.js",
21
+ "types": "./dist/index.d.ts",
22
+ "exports": {
23
+ "./package.json": "./package.json",
24
+ ".": {
25
+ "types": "./dist/index.d.ts",
26
+ "import": "./dist/index.mjs",
27
+ "require": "./dist/index.cjs",
28
+ "default": "./dist/index.js"
29
+ },
30
+ "./browser": {
31
+ "types": "./dist/browser/index.d.ts",
32
+ "import": "./dist/browser/index.mjs",
33
+ "require": "./dist/browser/index.cjs",
34
+ "default": "./dist/browser/index.js"
35
+ },
36
+ "./server": {
37
+ "types": "./dist/server/index.d.ts",
38
+ "import": "./dist/server/index.mjs",
39
+ "require": "./dist/server/index.cjs",
40
+ "default": "./dist/server/index.js"
41
+ }
42
+ },
43
+ "dependencies": {
44
+ "@fluixi/utils": "1.0.0-alpha.93"
45
+ },
46
+ "devDependencies": {
47
+ "@bambiste/mix-builder": "^0.4.0",
48
+ "cross-env": "^7.0.3"
49
+ },
50
+ "repository": {
51
+ "type": "git",
52
+ "url": "https://github.com/fluixi/core.git",
53
+ "directory": "packages/storage"
54
+ },
55
+ "scripts": {
56
+ "build:typings": "tsc -p tsconfig.lib.json",
57
+ "build": "cross-env NODE_ENV=production mix-builder",
58
+ "dev": "tsc -w -p tsconfig.lib.json",
59
+ "test": "vitest run"
60
+ }
61
+ }