@dexto/storage 1.7.2 → 1.8.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 (87) hide show
  1. package/README.md +51 -38
  2. package/dist/blob/index.cjs +2 -7
  3. package/dist/blob/index.d.ts +3 -14
  4. package/dist/blob/index.d.ts.map +1 -1
  5. package/dist/blob/index.js +1 -4
  6. package/dist/cache/index.cjs +3 -5
  7. package/dist/cache/index.d.ts +4 -14
  8. package/dist/cache/index.d.ts.map +1 -1
  9. package/dist/cache/index.js +2 -3
  10. package/dist/cache/schemas.cjs +5 -5
  11. package/dist/cache/schemas.js +1 -1
  12. package/dist/database/index.cjs +8 -9
  13. package/dist/database/index.d.ts +5 -15
  14. package/dist/database/index.d.ts.map +1 -1
  15. package/dist/database/index.js +5 -9
  16. package/dist/database/memory-database-store.cjs +16 -0
  17. package/dist/database/memory-database-store.d.ts +4 -0
  18. package/dist/database/memory-database-store.d.ts.map +1 -1
  19. package/dist/database/memory-database-store.js +16 -0
  20. package/dist/database/postgres-store.cjs +25 -0
  21. package/dist/database/postgres-store.d.ts +4 -0
  22. package/dist/database/postgres-store.d.ts.map +1 -1
  23. package/dist/database/postgres-store.js +25 -0
  24. package/dist/database/schemas.cjs +6 -6
  25. package/dist/database/schemas.js +1 -1
  26. package/dist/database/sqlite-store.cjs +18 -0
  27. package/dist/database/sqlite-store.d.ts +4 -0
  28. package/dist/database/sqlite-store.d.ts.map +1 -1
  29. package/dist/database/sqlite-store.js +18 -0
  30. package/dist/index.cjs +12 -19
  31. package/dist/index.d.cts +17 -225
  32. package/dist/index.d.ts +4 -10
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +11 -15
  35. package/package.json +3 -3
  36. package/dist/blob/factories/index.cjs +0 -31
  37. package/dist/blob/factories/index.d.ts +0 -6
  38. package/dist/blob/factories/index.d.ts.map +0 -1
  39. package/dist/blob/factories/index.js +0 -6
  40. package/dist/blob/factories/local.cjs +0 -38
  41. package/dist/blob/factories/local.d.ts +0 -17
  42. package/dist/blob/factories/local.d.ts.map +0 -1
  43. package/dist/blob/factories/local.js +0 -14
  44. package/dist/blob/factories/memory.cjs +0 -44
  45. package/dist/blob/factories/memory.d.ts +0 -17
  46. package/dist/blob/factories/memory.d.ts.map +0 -1
  47. package/dist/blob/factories/memory.js +0 -20
  48. package/dist/blob/factory.cjs +0 -16
  49. package/dist/blob/factory.d.ts +0 -35
  50. package/dist/blob/factory.d.ts.map +0 -1
  51. package/dist/blob/factory.js +0 -0
  52. package/dist/cache/factories/index.cjs +0 -31
  53. package/dist/cache/factories/index.d.ts +0 -6
  54. package/dist/cache/factories/index.d.ts.map +0 -1
  55. package/dist/cache/factories/index.js +0 -6
  56. package/dist/cache/factories/memory.cjs +0 -39
  57. package/dist/cache/factories/memory.d.ts +0 -17
  58. package/dist/cache/factories/memory.d.ts.map +0 -1
  59. package/dist/cache/factories/memory.js +0 -15
  60. package/dist/cache/factories/redis.cjs +0 -65
  61. package/dist/cache/factories/redis.d.ts +0 -20
  62. package/dist/cache/factories/redis.d.ts.map +0 -1
  63. package/dist/cache/factories/redis.js +0 -31
  64. package/dist/cache/factory.cjs +0 -16
  65. package/dist/cache/factory.d.ts +0 -41
  66. package/dist/cache/factory.d.ts.map +0 -1
  67. package/dist/cache/factory.js +0 -0
  68. package/dist/database/factories/index.cjs +0 -34
  69. package/dist/database/factories/index.d.ts +0 -7
  70. package/dist/database/factories/index.d.ts.map +0 -1
  71. package/dist/database/factories/index.js +0 -8
  72. package/dist/database/factories/memory.cjs +0 -39
  73. package/dist/database/factories/memory.d.ts +0 -16
  74. package/dist/database/factories/memory.d.ts.map +0 -1
  75. package/dist/database/factories/memory.js +0 -15
  76. package/dist/database/factories/postgres.cjs +0 -61
  77. package/dist/database/factories/postgres.d.ts +0 -19
  78. package/dist/database/factories/postgres.d.ts.map +0 -1
  79. package/dist/database/factories/postgres.js +0 -27
  80. package/dist/database/factories/sqlite.cjs +0 -65
  81. package/dist/database/factories/sqlite.d.ts +0 -20
  82. package/dist/database/factories/sqlite.d.ts.map +0 -1
  83. package/dist/database/factories/sqlite.js +0 -31
  84. package/dist/database/factory.cjs +0 -16
  85. package/dist/database/factory.d.ts +0 -41
  86. package/dist/database/factory.d.ts.map +0 -1
  87. package/dist/database/factory.js +0 -0
@@ -1,61 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var postgres_exports = {};
30
- __export(postgres_exports, {
31
- postgresDatabaseFactory: () => postgresDatabaseFactory
32
- });
33
- module.exports = __toCommonJS(postgres_exports);
34
- var import_schemas = require("../schemas.js");
35
- var import_core = require("@dexto/core");
36
- const postgresDatabaseFactory = {
37
- configSchema: import_schemas.PostgresDatabaseSchema,
38
- create: async (config, logger) => {
39
- try {
40
- const module2 = await import("../postgres-store.js");
41
- logger.info("Connecting to PostgreSQL database");
42
- return new module2.PostgresStore(config, logger);
43
- } catch (error) {
44
- const err = error;
45
- if (err.code === "ERR_MODULE_NOT_FOUND") {
46
- throw import_core.StorageError.dependencyNotInstalled("PostgreSQL", "pg", "npm install pg");
47
- }
48
- throw error;
49
- }
50
- },
51
- metadata: {
52
- displayName: "PostgreSQL",
53
- description: "Production PostgreSQL database with connection pooling",
54
- requiresNetwork: true,
55
- supportsListOperations: true
56
- }
57
- };
58
- // Annotate the CommonJS export names for ESM import in node:
59
- 0 && (module.exports = {
60
- postgresDatabaseFactory
61
- });
@@ -1,19 +0,0 @@
1
- import type { PostgresDatabaseConfig } from '../schemas.js';
2
- import type { DatabaseFactory } from '../factory.js';
3
- /**
4
- * Factory for PostgreSQL database storage.
5
- *
6
- * This factory stores data in a PostgreSQL database server using the pg package.
7
- * It's ideal for production deployments requiring scalability and multi-machine access.
8
- *
9
- * Features:
10
- * - Connection pooling for efficient resource usage
11
- * - JSONB storage for flexible data types
12
- * - Transaction support
13
- * - Suitable for distributed deployments
14
- *
15
- * Note: pg is an optional dependency. Install it with:
16
- * npm install pg
17
- */
18
- export declare const postgresDatabaseFactory: DatabaseFactory<PostgresDatabaseConfig>;
19
- //# sourceMappingURL=postgres.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../src/database/factories/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB,EAAE,eAAe,CAAC,sBAAsB,CAqB3E,CAAC"}
@@ -1,27 +0,0 @@
1
- import { PostgresDatabaseSchema } from "../schemas.js";
2
- import { StorageError } from "@dexto/core";
3
- const postgresDatabaseFactory = {
4
- configSchema: PostgresDatabaseSchema,
5
- create: async (config, logger) => {
6
- try {
7
- const module = await import("../postgres-store.js");
8
- logger.info("Connecting to PostgreSQL database");
9
- return new module.PostgresStore(config, logger);
10
- } catch (error) {
11
- const err = error;
12
- if (err.code === "ERR_MODULE_NOT_FOUND") {
13
- throw StorageError.dependencyNotInstalled("PostgreSQL", "pg", "npm install pg");
14
- }
15
- throw error;
16
- }
17
- },
18
- metadata: {
19
- displayName: "PostgreSQL",
20
- description: "Production PostgreSQL database with connection pooling",
21
- requiresNetwork: true,
22
- supportsListOperations: true
23
- }
24
- };
25
- export {
26
- postgresDatabaseFactory
27
- };
@@ -1,65 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var sqlite_exports = {};
30
- __export(sqlite_exports, {
31
- sqliteDatabaseFactory: () => sqliteDatabaseFactory
32
- });
33
- module.exports = __toCommonJS(sqlite_exports);
34
- var import_schemas = require("../schemas.js");
35
- var import_core = require("@dexto/core");
36
- const sqliteDatabaseFactory = {
37
- configSchema: import_schemas.SqliteDatabaseSchema,
38
- create: async (config, logger) => {
39
- try {
40
- const module2 = await import("../sqlite-store.js");
41
- logger.info(`Creating SQLite database store: ${config.path}`);
42
- return new module2.SQLiteStore(config, logger);
43
- } catch (error) {
44
- const err = error;
45
- if (err.code === "ERR_MODULE_NOT_FOUND" && typeof err.message === "string" && err.message.includes("better-sqlite3")) {
46
- throw import_core.StorageError.dependencyNotInstalled(
47
- "SQLite",
48
- "better-sqlite3",
49
- "npm install better-sqlite3"
50
- );
51
- }
52
- throw error;
53
- }
54
- },
55
- metadata: {
56
- displayName: "SQLite",
57
- description: "Local SQLite database for persistent storage",
58
- requiresNetwork: false,
59
- supportsListOperations: true
60
- }
61
- };
62
- // Annotate the CommonJS export names for ESM import in node:
63
- 0 && (module.exports = {
64
- sqliteDatabaseFactory
65
- });
@@ -1,20 +0,0 @@
1
- import type { SqliteDatabaseConfig } from '../schemas.js';
2
- import type { DatabaseFactory } from '../factory.js';
3
- /**
4
- * Factory for SQLite database storage.
5
- *
6
- * This factory stores data in a local SQLite database file using better-sqlite3.
7
- * It's ideal for single-machine deployments and development scenarios where
8
- * persistence is required without the overhead of a database server.
9
- *
10
- * Features:
11
- * - Uses better-sqlite3 for synchronous, fast operations
12
- * - WAL mode enabled for better concurrency
13
- * - No external server required
14
- * - Persistent storage survives restarts
15
- *
16
- * Note: better-sqlite3 is an optional dependency. Install it with:
17
- * npm install better-sqlite3
18
- */
19
- export declare const sqliteDatabaseFactory: DatabaseFactory<SqliteDatabaseConfig>;
20
- //# sourceMappingURL=sqlite.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/database/factories/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAG1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,EAAE,eAAe,CAAC,oBAAoB,CA6BvE,CAAC"}
@@ -1,31 +0,0 @@
1
- import { SqliteDatabaseSchema } from "../schemas.js";
2
- import { StorageError } from "@dexto/core";
3
- const sqliteDatabaseFactory = {
4
- configSchema: SqliteDatabaseSchema,
5
- create: async (config, logger) => {
6
- try {
7
- const module = await import("../sqlite-store.js");
8
- logger.info(`Creating SQLite database store: ${config.path}`);
9
- return new module.SQLiteStore(config, logger);
10
- } catch (error) {
11
- const err = error;
12
- if (err.code === "ERR_MODULE_NOT_FOUND" && typeof err.message === "string" && err.message.includes("better-sqlite3")) {
13
- throw StorageError.dependencyNotInstalled(
14
- "SQLite",
15
- "better-sqlite3",
16
- "npm install better-sqlite3"
17
- );
18
- }
19
- throw error;
20
- }
21
- },
22
- metadata: {
23
- displayName: "SQLite",
24
- description: "Local SQLite database for persistent storage",
25
- requiresNetwork: false,
26
- supportsListOperations: true
27
- }
28
- };
29
- export {
30
- sqliteDatabaseFactory
31
- };
@@ -1,16 +0,0 @@
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 __copyProps = (to, from, except, desc) => {
7
- if (from && typeof from === "object" || typeof from === "function") {
8
- for (let key of __getOwnPropNames(from))
9
- if (!__hasOwnProp.call(to, key) && key !== except)
10
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
- }
12
- return to;
13
- };
14
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
- var factory_exports = {};
16
- module.exports = __toCommonJS(factory_exports);
@@ -1,41 +0,0 @@
1
- import type { Database } from './types.js';
2
- import type { Logger } from '@dexto/core';
3
- import type { z } from 'zod';
4
- /**
5
- * Factory interface for creating database instances.
6
- *
7
- * Factories are plain exports (no global registries). Images decide which factories are
8
- * available by including them in `image.storage.database`.
9
- */
10
- export interface DatabaseFactory<TConfig = unknown> {
11
- /**
12
- * Zod schema for validating factory-specific configuration.
13
- * The schema must output the `TConfig` type.
14
- */
15
- configSchema: z.ZodType<TConfig, unknown>;
16
- /**
17
- * Factory function to create a Database instance.
18
- *
19
- * Database factories may return a Promise to support lazy loading of optional
20
- * dependencies (e.g., `better-sqlite3`, `pg`).
21
- *
22
- * @param config - Validated configuration specific to this backend
23
- * @param logger - Logger instance for the database
24
- * @returns A Database implementation (or Promise for async backends)
25
- */
26
- create(config: TConfig, logger: Logger): Database | Promise<Database>;
27
- /**
28
- * Optional metadata for documentation, UIs, and discovery.
29
- */
30
- metadata?: {
31
- /** Human-readable name (e.g., "SQLite", "PostgreSQL") */
32
- displayName: string;
33
- /** Brief description of this storage backend */
34
- description: string;
35
- /** Whether this backend requires network connectivity */
36
- requiresNetwork?: boolean;
37
- /** Whether this backend supports list operations (append/getRange) */
38
- supportsListOperations?: boolean;
39
- };
40
- }
41
- //# sourceMappingURL=factory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/database/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,OAAO,GAAG,OAAO;IAC9C;;;OAGG;IACH,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE1C;;;;;;;;;OASG;IACH,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtE;;OAEG;IACH,QAAQ,CAAC,EAAE;QACP,yDAAyD;QACzD,WAAW,EAAE,MAAM,CAAC;QACpB,gDAAgD;QAChD,WAAW,EAAE,MAAM,CAAC;QACpB,yDAAyD;QACzD,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,sEAAsE;QACtE,sBAAsB,CAAC,EAAE,OAAO,CAAC;KACpC,CAAC;CACL"}
File without changes