@richardmcquiston01/chat-and-react-adapters 0.11.0 → 0.12.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/README.md CHANGED
@@ -43,11 +43,11 @@ const adapter = new WebhookOutputAdapter("https://api.example.com/events", {
43
43
  - **`WebStorageErrorAdapter`** / **`IndexedDbErrorAdapter`** — keep errors in the browser
44
44
  - **`CompositeErrorAdapter`** — send each error to several adapters
45
45
 
46
- All are re-exported from [`@richardmcquiston01/error-log-adapter`](https://www.npmjs.com/package/@richardmcquiston01/error-log-adapter).
46
+ All are imported from [`@richardmcquiston01/error-log-adapter`](https://www.npmjs.com/package/@richardmcquiston01/error-log-adapter).
47
47
 
48
48
  ## Storage adapters
49
49
 
50
- - **`sqliteAdapter`**, **`fileAdapter`**, **`jsonFileAdapter`** — save form progress on a server, re-exported from [`@richardmcquiston01/storage-adapters`](https://www.npmjs.com/package/@richardmcquiston01/storage-adapters). See [Storage Adapters](https://github.com/RichardMcQuiston01/chat-and-react/blob/main/docs/storage-adapters.md).
50
+ - **`sqliteAdapter`**, **`fileAdapter`**, **`jsonFileAdapter`** — save form progress on a server, imported from [`@richardmcquiston01/storage-adapters`](https://www.npmjs.com/package/@richardmcquiston01/storage-adapters). See [Storage Adapters](https://github.com/RichardMcQuiston01/chat-and-react/blob/main/docs/storage-adapters.md).
51
51
 
52
52
  ## Input adapters
53
53
 
package/dist/index.cjs CHANGED
@@ -20,30 +20,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
- CompositeErrorAdapter: () => import_error_log_adapter.CompositeErrorAdapter,
24
23
  EventEmitterOutputAdapter: () => EventEmitterOutputAdapter,
25
- FlatFileErrorAdapter: () => import_error_log_adapter.FlatFileErrorAdapter,
26
- IndexedDbErrorAdapter: () => import_error_log_adapter.IndexedDbErrorAdapter,
27
- JsonFileErrorAdapter: () => import_error_log_adapter.JsonFileErrorAdapter,
28
- MongoDbErrorAdapter: () => import_error_log_adapter.MongoDbErrorAdapter,
29
24
  MongoDbInputAdapter: () => MongoDbInputAdapter,
30
25
  MySqlInputAdapter: () => MySqlInputAdapter,
31
- SqliteErrorAdapter: () => import_error_log_adapter.SqliteErrorAdapter,
32
26
  WebSocketOutputAdapter: () => WebSocketOutputAdapter,
33
- WebStorageErrorAdapter: () => import_error_log_adapter.WebStorageErrorAdapter,
34
- WebhookErrorAdapter: () => import_error_log_adapter.WebhookErrorAdapter,
35
- WebhookOutputAdapter: () => WebhookOutputAdapter,
36
- buildCreateErrorLogTableSql: () => import_error_log_adapter.buildCreateErrorLogTableSql,
37
- createErrorLogStore: () => import_error_log_adapter.createErrorLogStore,
38
- fileAdapter: () => import_file.fileAdapter,
39
- jsonFileAdapter: () => import_json_file.jsonFileAdapter,
40
- sqliteAdapter: () => import_sqlite.sqliteAdapter
27
+ WebhookOutputAdapter: () => WebhookOutputAdapter
41
28
  });
42
29
  module.exports = __toCommonJS(index_exports);
43
- var import_error_log_adapter = require("@richardmcquiston01/error-log-adapter");
44
- var import_file = require("@richardmcquiston01/storage-adapters/file");
45
- var import_json_file = require("@richardmcquiston01/storage-adapters/json-file");
46
- var import_sqlite = require("@richardmcquiston01/storage-adapters/sqlite");
47
30
 
48
31
  // src/input/mongodb-input-adapter.ts
49
32
  var MongoDbInputAdapter = class _MongoDbInputAdapter {
@@ -123,23 +106,10 @@ var WebSocketOutputAdapter = class {
123
106
  };
124
107
  // Annotate the CommonJS export names for ESM import in node:
125
108
  0 && (module.exports = {
126
- CompositeErrorAdapter,
127
109
  EventEmitterOutputAdapter,
128
- FlatFileErrorAdapter,
129
- IndexedDbErrorAdapter,
130
- JsonFileErrorAdapter,
131
- MongoDbErrorAdapter,
132
110
  MongoDbInputAdapter,
133
111
  MySqlInputAdapter,
134
- SqliteErrorAdapter,
135
112
  WebSocketOutputAdapter,
136
- WebStorageErrorAdapter,
137
- WebhookErrorAdapter,
138
- WebhookOutputAdapter,
139
- buildCreateErrorLogTableSql,
140
- createErrorLogStore,
141
- fileAdapter,
142
- jsonFileAdapter,
143
- sqliteAdapter
113
+ WebhookOutputAdapter
144
114
  });
145
115
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/input/mongodb-input-adapter.ts","../src/input/mysql-input-adapter.ts","../src/output/event-emitter-adapter.ts","../src/output/webhook-output-adapter.ts","../src/output/websocket-output-adapter.ts"],"sourcesContent":["// The error-log adapters live in the error-log-adapter package and the storage adapters in\n// the storage-adapters package. They are re-exported here so everything optional can be\n// imported from one place. `nodeFileSystem` (which imports `node:fs`) is not re-exported;\n// import it from '@richardmcquiston01/storage-adapters/file/node'.\nexport type {\n CollectionLike,\n FlatFileErrorOptions,\n IdbDatabaseLike,\n IdbObjectStoreLike,\n IdbTransactionLike,\n IdbUpgradeDatabaseLike,\n IndexedDbErrorOptions,\n IndexedDbErrorRecord,\n JsonFileErrorOptions,\n JsonFileErrorRecord,\n MongoDbErrorOptions,\n SqliteClientLike,\n SqliteErrorOptions,\n StorageLike,\n WebhookErrorOptions,\n WebStorageErrorOptions,\n WebStorageErrorRecord,\n} from '@richardmcquiston01/error-log-adapter';\nexport {\n buildCreateErrorLogTableSql,\n CompositeErrorAdapter,\n createErrorLogStore,\n FlatFileErrorAdapter,\n IndexedDbErrorAdapter,\n JsonFileErrorAdapter,\n MongoDbErrorAdapter,\n SqliteErrorAdapter,\n WebhookErrorAdapter,\n WebStorageErrorAdapter,\n} from '@richardmcquiston01/error-log-adapter';\nexport type { FileAdapterOptions } from '@richardmcquiston01/storage-adapters/file';\nexport { fileAdapter } from '@richardmcquiston01/storage-adapters/file';\nexport type { JsonFileAdapterOptions } from '@richardmcquiston01/storage-adapters/json-file';\nexport { jsonFileAdapter } from '@richardmcquiston01/storage-adapters/json-file';\nexport type {\n SqliteAdapterOptions,\n SqliteDatabaseLike,\n} from '@richardmcquiston01/storage-adapters/sqlite';\nexport { sqliteAdapter } from '@richardmcquiston01/storage-adapters/sqlite';\nexport { MongoDbInputAdapter } from './input/mongodb-input-adapter.js';\nexport { MySqlInputAdapter } from './input/mysql-input-adapter.js';\nexport { EventEmitterOutputAdapter } from './output/event-emitter-adapter.js';\nexport { WebhookOutputAdapter } from './output/webhook-output-adapter.js';\nexport { WebSocketOutputAdapter } from './output/websocket-output-adapter.js';\n","import type { InputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface MongoCollectionLike {\n findOne(filter: object): Promise<object | null>;\n}\n\nexport class MongoDbInputAdapter implements InputAdapter {\n private constructor(private readonly schema: object) {}\n\n /** Fetches one document matching `filter` and caches it as the schema. */\n static async create(\n collection: MongoCollectionLike,\n filter: object,\n ): Promise<MongoDbInputAdapter> {\n const doc = await collection.findOne(filter);\n if (doc === null) {\n throw new Error('MongoDbInputAdapter: no document found');\n }\n return new MongoDbInputAdapter(doc);\n }\n\n transform(_raw: unknown): unknown {\n return this.schema;\n }\n}\n","import type { InputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface MySqlConnectionLike {\n execute(sql: string, params?: unknown[]): Promise<[unknown[], unknown]>;\n}\n\nexport class MySqlInputAdapter implements InputAdapter {\n private constructor(private readonly schema: unknown) {}\n\n /** Executes `sql` and caches the first row as the schema. */\n static async create(\n connection: MySqlConnectionLike,\n sql: string,\n params?: unknown[],\n ): Promise<MySqlInputAdapter> {\n const [rows] = await connection.execute(sql, params);\n if (!Array.isArray(rows) || rows.length === 0) {\n throw new Error('MySqlInputAdapter: query returned no rows');\n }\n return new MySqlInputAdapter(rows[0]);\n }\n\n transform(_raw: unknown): unknown {\n return this.schema;\n }\n}\n","import type { ChatEvent, OutputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface EventEmitterLike {\n emit(event: string, ...args: unknown[]): void;\n}\n\nexport class EventEmitterOutputAdapter implements OutputAdapter {\n constructor(private readonly emitter: EventEmitterLike) {}\n\n emit(event: ChatEvent): void {\n this.emitter.emit(event.type, event);\n }\n}\n","import type { ChatEvent, OutputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface WebhookOptions {\n headers?: Record<string, string>;\n}\n\nexport class WebhookOutputAdapter implements OutputAdapter {\n constructor(\n private readonly url: string,\n private readonly options: WebhookOptions = {},\n ) {}\n\n emit(event: ChatEvent): void {\n fetch(this.url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...this.options.headers },\n body: JSON.stringify(event),\n }).catch((err: unknown) => {\n console.error('[chat-and-react] WebhookOutputAdapter:', err);\n });\n }\n}\n","import type { ChatEvent, OutputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface WebSocketLike {\n readyState: number;\n OPEN: number;\n send(data: string): void;\n}\n\nexport class WebSocketOutputAdapter implements OutputAdapter {\n constructor(private readonly socket: WebSocketLike) {}\n\n emit(event: ChatEvent): void {\n if (this.socket.readyState === this.socket.OPEN) {\n this.socket.send(JSON.stringify(event));\n } else {\n console.warn('[chat-and-react] WebSocketOutputAdapter: socket not open');\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBA,+BAWO;AAEP,kBAA4B;AAE5B,uBAAgC;AAKhC,oBAA8B;;;ACrCvB,IAAM,sBAAN,MAAM,qBAA4C;AAAA,EAC/C,YAA6B,QAAgB;AAAhB;AAAA,EAAiB;AAAA;AAAA,EAGtD,aAAa,OACX,YACA,QAC8B;AAC9B,UAAM,MAAM,MAAM,WAAW,QAAQ,MAAM;AAC3C,QAAI,QAAQ,MAAM;AAChB,YAAM,IAAI,MAAM,wCAAwC;AAAA,IAC1D;AACA,WAAO,IAAI,qBAAoB,GAAG;AAAA,EACpC;AAAA,EAEA,UAAU,MAAwB;AAChC,WAAO,KAAK;AAAA,EACd;AACF;;;AClBO,IAAM,oBAAN,MAAM,mBAA0C;AAAA,EAC7C,YAA6B,QAAiB;AAAjB;AAAA,EAAkB;AAAA;AAAA,EAGvD,aAAa,OACX,YACA,KACA,QAC4B;AAC5B,UAAM,CAAC,IAAI,IAAI,MAAM,WAAW,QAAQ,KAAK,MAAM;AACnD,QAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,GAAG;AAC7C,YAAM,IAAI,MAAM,2CAA2C;AAAA,IAC7D;AACA,WAAO,IAAI,mBAAkB,KAAK,CAAC,CAAC;AAAA,EACtC;AAAA,EAEA,UAAU,MAAwB;AAChC,WAAO,KAAK;AAAA,EACd;AACF;;;ACnBO,IAAM,4BAAN,MAAyD;AAAA,EAC9D,YAA6B,SAA2B;AAA3B;AAAA,EAA4B;AAAA,EAEzD,KAAK,OAAwB;AAC3B,SAAK,QAAQ,KAAK,MAAM,MAAM,KAAK;AAAA,EACrC;AACF;;;ACNO,IAAM,uBAAN,MAAoD;AAAA,EACzD,YACmB,KACA,UAA0B,CAAC,GAC5C;AAFiB;AACA;AAAA,EAChB;AAAA,EAEH,KAAK,OAAwB;AAC3B,UAAM,KAAK,KAAK;AAAA,MACd,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,oBAAoB,GAAG,KAAK,QAAQ,QAAQ;AAAA,MACvE,MAAM,KAAK,UAAU,KAAK;AAAA,IAC5B,CAAC,EAAE,MAAM,CAAC,QAAiB;AACzB,cAAQ,MAAM,0CAA0C,GAAG;AAAA,IAC7D,CAAC;AAAA,EACH;AACF;;;ACbO,IAAM,yBAAN,MAAsD;AAAA,EAC3D,YAA6B,QAAuB;AAAvB;AAAA,EAAwB;AAAA,EAErD,KAAK,OAAwB;AAC3B,QAAI,KAAK,OAAO,eAAe,KAAK,OAAO,MAAM;AAC/C,WAAK,OAAO,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,IACxC,OAAO;AACL,cAAQ,KAAK,0DAA0D;AAAA,IACzE;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/input/mongodb-input-adapter.ts","../src/input/mysql-input-adapter.ts","../src/output/event-emitter-adapter.ts","../src/output/webhook-output-adapter.ts","../src/output/websocket-output-adapter.ts"],"sourcesContent":["export { MongoDbInputAdapter } from './input/mongodb-input-adapter.js';\nexport { MySqlInputAdapter } from './input/mysql-input-adapter.js';\nexport { EventEmitterOutputAdapter } from './output/event-emitter-adapter.js';\nexport { WebhookOutputAdapter } from './output/webhook-output-adapter.js';\nexport { WebSocketOutputAdapter } from './output/websocket-output-adapter.js';\n","import type { InputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface MongoCollectionLike {\n findOne(filter: object): Promise<object | null>;\n}\n\nexport class MongoDbInputAdapter implements InputAdapter {\n private constructor(private readonly schema: object) {}\n\n /** Fetches one document matching `filter` and caches it as the schema. */\n static async create(\n collection: MongoCollectionLike,\n filter: object,\n ): Promise<MongoDbInputAdapter> {\n const doc = await collection.findOne(filter);\n if (doc === null) {\n throw new Error('MongoDbInputAdapter: no document found');\n }\n return new MongoDbInputAdapter(doc);\n }\n\n transform(_raw: unknown): unknown {\n return this.schema;\n }\n}\n","import type { InputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface MySqlConnectionLike {\n execute(sql: string, params?: unknown[]): Promise<[unknown[], unknown]>;\n}\n\nexport class MySqlInputAdapter implements InputAdapter {\n private constructor(private readonly schema: unknown) {}\n\n /** Executes `sql` and caches the first row as the schema. */\n static async create(\n connection: MySqlConnectionLike,\n sql: string,\n params?: unknown[],\n ): Promise<MySqlInputAdapter> {\n const [rows] = await connection.execute(sql, params);\n if (!Array.isArray(rows) || rows.length === 0) {\n throw new Error('MySqlInputAdapter: query returned no rows');\n }\n return new MySqlInputAdapter(rows[0]);\n }\n\n transform(_raw: unknown): unknown {\n return this.schema;\n }\n}\n","import type { ChatEvent, OutputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface EventEmitterLike {\n emit(event: string, ...args: unknown[]): void;\n}\n\nexport class EventEmitterOutputAdapter implements OutputAdapter {\n constructor(private readonly emitter: EventEmitterLike) {}\n\n emit(event: ChatEvent): void {\n this.emitter.emit(event.type, event);\n }\n}\n","import type { ChatEvent, OutputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface WebhookOptions {\n headers?: Record<string, string>;\n}\n\nexport class WebhookOutputAdapter implements OutputAdapter {\n constructor(\n private readonly url: string,\n private readonly options: WebhookOptions = {},\n ) {}\n\n emit(event: ChatEvent): void {\n fetch(this.url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...this.options.headers },\n body: JSON.stringify(event),\n }).catch((err: unknown) => {\n console.error('[chat-and-react] WebhookOutputAdapter:', err);\n });\n }\n}\n","import type { ChatEvent, OutputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface WebSocketLike {\n readyState: number;\n OPEN: number;\n send(data: string): void;\n}\n\nexport class WebSocketOutputAdapter implements OutputAdapter {\n constructor(private readonly socket: WebSocketLike) {}\n\n emit(event: ChatEvent): void {\n if (this.socket.readyState === this.socket.OPEN) {\n this.socket.send(JSON.stringify(event));\n } else {\n console.warn('[chat-and-react] WebSocketOutputAdapter: socket not open');\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMO,IAAM,sBAAN,MAAM,qBAA4C;AAAA,EAC/C,YAA6B,QAAgB;AAAhB;AAAA,EAAiB;AAAA;AAAA,EAGtD,aAAa,OACX,YACA,QAC8B;AAC9B,UAAM,MAAM,MAAM,WAAW,QAAQ,MAAM;AAC3C,QAAI,QAAQ,MAAM;AAChB,YAAM,IAAI,MAAM,wCAAwC;AAAA,IAC1D;AACA,WAAO,IAAI,qBAAoB,GAAG;AAAA,EACpC;AAAA,EAEA,UAAU,MAAwB;AAChC,WAAO,KAAK;AAAA,EACd;AACF;;;AClBO,IAAM,oBAAN,MAAM,mBAA0C;AAAA,EAC7C,YAA6B,QAAiB;AAAjB;AAAA,EAAkB;AAAA;AAAA,EAGvD,aAAa,OACX,YACA,KACA,QAC4B;AAC5B,UAAM,CAAC,IAAI,IAAI,MAAM,WAAW,QAAQ,KAAK,MAAM;AACnD,QAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,GAAG;AAC7C,YAAM,IAAI,MAAM,2CAA2C;AAAA,IAC7D;AACA,WAAO,IAAI,mBAAkB,KAAK,CAAC,CAAC;AAAA,EACtC;AAAA,EAEA,UAAU,MAAwB;AAChC,WAAO,KAAK;AAAA,EACd;AACF;;;ACnBO,IAAM,4BAAN,MAAyD;AAAA,EAC9D,YAA6B,SAA2B;AAA3B;AAAA,EAA4B;AAAA,EAEzD,KAAK,OAAwB;AAC3B,SAAK,QAAQ,KAAK,MAAM,MAAM,KAAK;AAAA,EACrC;AACF;;;ACNO,IAAM,uBAAN,MAAoD;AAAA,EACzD,YACmB,KACA,UAA0B,CAAC,GAC5C;AAFiB;AACA;AAAA,EAChB;AAAA,EAEH,KAAK,OAAwB;AAC3B,UAAM,KAAK,KAAK;AAAA,MACd,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,oBAAoB,GAAG,KAAK,QAAQ,QAAQ;AAAA,MACvE,MAAM,KAAK,UAAU,KAAK;AAAA,IAC5B,CAAC,EAAE,MAAM,CAAC,QAAiB;AACzB,cAAQ,MAAM,0CAA0C,GAAG;AAAA,IAC7D,CAAC;AAAA,EACH;AACF;;;ACbO,IAAM,yBAAN,MAAsD;AAAA,EAC3D,YAA6B,QAAuB;AAAvB;AAAA,EAAwB;AAAA,EAErD,KAAK,OAAwB;AAC3B,QAAI,KAAK,OAAO,eAAe,KAAK,OAAO,MAAM;AAC/C,WAAK,OAAO,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,IACxC,OAAO;AACL,cAAQ,KAAK,0DAA0D;AAAA,IACzE;AAAA,EACF;AACF;","names":[]}
package/dist/index.d.cts CHANGED
@@ -1,7 +1,3 @@
1
- export { CollectionLike, CompositeErrorAdapter, FlatFileErrorAdapter, FlatFileErrorOptions, IdbDatabaseLike, IdbObjectStoreLike, IdbTransactionLike, IdbUpgradeDatabaseLike, IndexedDbErrorAdapter, IndexedDbErrorOptions, IndexedDbErrorRecord, JsonFileErrorAdapter, JsonFileErrorOptions, JsonFileErrorRecord, MongoDbErrorAdapter, MongoDbErrorOptions, SqliteClientLike, SqliteErrorAdapter, SqliteErrorOptions, StorageLike, WebStorageErrorAdapter, WebStorageErrorOptions, WebStorageErrorRecord, WebhookErrorAdapter, WebhookErrorOptions, buildCreateErrorLogTableSql, createErrorLogStore } from '@richardmcquiston01/error-log-adapter';
2
- export { FileAdapterOptions, fileAdapter } from '@richardmcquiston01/storage-adapters/file';
3
- export { JsonFileAdapterOptions, jsonFileAdapter } from '@richardmcquiston01/storage-adapters/json-file';
4
- export { SqliteAdapterOptions, SqliteDatabaseLike, sqliteAdapter } from '@richardmcquiston01/storage-adapters/sqlite';
5
1
  import { InputAdapter, OutputAdapter, ChatEvent } from '@richardmcquiston01/chat-and-react-core';
6
2
 
7
3
  interface MongoCollectionLike {
package/dist/index.d.ts CHANGED
@@ -1,7 +1,3 @@
1
- export { CollectionLike, CompositeErrorAdapter, FlatFileErrorAdapter, FlatFileErrorOptions, IdbDatabaseLike, IdbObjectStoreLike, IdbTransactionLike, IdbUpgradeDatabaseLike, IndexedDbErrorAdapter, IndexedDbErrorOptions, IndexedDbErrorRecord, JsonFileErrorAdapter, JsonFileErrorOptions, JsonFileErrorRecord, MongoDbErrorAdapter, MongoDbErrorOptions, SqliteClientLike, SqliteErrorAdapter, SqliteErrorOptions, StorageLike, WebStorageErrorAdapter, WebStorageErrorOptions, WebStorageErrorRecord, WebhookErrorAdapter, WebhookErrorOptions, buildCreateErrorLogTableSql, createErrorLogStore } from '@richardmcquiston01/error-log-adapter';
2
- export { FileAdapterOptions, fileAdapter } from '@richardmcquiston01/storage-adapters/file';
3
- export { JsonFileAdapterOptions, jsonFileAdapter } from '@richardmcquiston01/storage-adapters/json-file';
4
- export { SqliteAdapterOptions, SqliteDatabaseLike, sqliteAdapter } from '@richardmcquiston01/storage-adapters/sqlite';
5
1
  import { InputAdapter, OutputAdapter, ChatEvent } from '@richardmcquiston01/chat-and-react-core';
6
2
 
7
3
  interface MongoCollectionLike {
package/dist/index.mjs CHANGED
@@ -1,20 +1,3 @@
1
- // src/index.ts
2
- import {
3
- buildCreateErrorLogTableSql,
4
- CompositeErrorAdapter,
5
- createErrorLogStore,
6
- FlatFileErrorAdapter,
7
- IndexedDbErrorAdapter,
8
- JsonFileErrorAdapter,
9
- MongoDbErrorAdapter,
10
- SqliteErrorAdapter,
11
- WebhookErrorAdapter,
12
- WebStorageErrorAdapter
13
- } from "@richardmcquiston01/error-log-adapter";
14
- import { fileAdapter } from "@richardmcquiston01/storage-adapters/file";
15
- import { jsonFileAdapter } from "@richardmcquiston01/storage-adapters/json-file";
16
- import { sqliteAdapter } from "@richardmcquiston01/storage-adapters/sqlite";
17
-
18
1
  // src/input/mongodb-input-adapter.ts
19
2
  var MongoDbInputAdapter = class _MongoDbInputAdapter {
20
3
  constructor(schema) {
@@ -92,23 +75,10 @@ var WebSocketOutputAdapter = class {
92
75
  }
93
76
  };
94
77
  export {
95
- CompositeErrorAdapter,
96
78
  EventEmitterOutputAdapter,
97
- FlatFileErrorAdapter,
98
- IndexedDbErrorAdapter,
99
- JsonFileErrorAdapter,
100
- MongoDbErrorAdapter,
101
79
  MongoDbInputAdapter,
102
80
  MySqlInputAdapter,
103
- SqliteErrorAdapter,
104
81
  WebSocketOutputAdapter,
105
- WebStorageErrorAdapter,
106
- WebhookErrorAdapter,
107
- WebhookOutputAdapter,
108
- buildCreateErrorLogTableSql,
109
- createErrorLogStore,
110
- fileAdapter,
111
- jsonFileAdapter,
112
- sqliteAdapter
82
+ WebhookOutputAdapter
113
83
  };
114
84
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/input/mongodb-input-adapter.ts","../src/input/mysql-input-adapter.ts","../src/output/event-emitter-adapter.ts","../src/output/webhook-output-adapter.ts","../src/output/websocket-output-adapter.ts"],"sourcesContent":["// The error-log adapters live in the error-log-adapter package and the storage adapters in\n// the storage-adapters package. They are re-exported here so everything optional can be\n// imported from one place. `nodeFileSystem` (which imports `node:fs`) is not re-exported;\n// import it from '@richardmcquiston01/storage-adapters/file/node'.\nexport type {\n CollectionLike,\n FlatFileErrorOptions,\n IdbDatabaseLike,\n IdbObjectStoreLike,\n IdbTransactionLike,\n IdbUpgradeDatabaseLike,\n IndexedDbErrorOptions,\n IndexedDbErrorRecord,\n JsonFileErrorOptions,\n JsonFileErrorRecord,\n MongoDbErrorOptions,\n SqliteClientLike,\n SqliteErrorOptions,\n StorageLike,\n WebhookErrorOptions,\n WebStorageErrorOptions,\n WebStorageErrorRecord,\n} from '@richardmcquiston01/error-log-adapter';\nexport {\n buildCreateErrorLogTableSql,\n CompositeErrorAdapter,\n createErrorLogStore,\n FlatFileErrorAdapter,\n IndexedDbErrorAdapter,\n JsonFileErrorAdapter,\n MongoDbErrorAdapter,\n SqliteErrorAdapter,\n WebhookErrorAdapter,\n WebStorageErrorAdapter,\n} from '@richardmcquiston01/error-log-adapter';\nexport type { FileAdapterOptions } from '@richardmcquiston01/storage-adapters/file';\nexport { fileAdapter } from '@richardmcquiston01/storage-adapters/file';\nexport type { JsonFileAdapterOptions } from '@richardmcquiston01/storage-adapters/json-file';\nexport { jsonFileAdapter } from '@richardmcquiston01/storage-adapters/json-file';\nexport type {\n SqliteAdapterOptions,\n SqliteDatabaseLike,\n} from '@richardmcquiston01/storage-adapters/sqlite';\nexport { sqliteAdapter } from '@richardmcquiston01/storage-adapters/sqlite';\nexport { MongoDbInputAdapter } from './input/mongodb-input-adapter.js';\nexport { MySqlInputAdapter } from './input/mysql-input-adapter.js';\nexport { EventEmitterOutputAdapter } from './output/event-emitter-adapter.js';\nexport { WebhookOutputAdapter } from './output/webhook-output-adapter.js';\nexport { WebSocketOutputAdapter } from './output/websocket-output-adapter.js';\n","import type { InputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface MongoCollectionLike {\n findOne(filter: object): Promise<object | null>;\n}\n\nexport class MongoDbInputAdapter implements InputAdapter {\n private constructor(private readonly schema: object) {}\n\n /** Fetches one document matching `filter` and caches it as the schema. */\n static async create(\n collection: MongoCollectionLike,\n filter: object,\n ): Promise<MongoDbInputAdapter> {\n const doc = await collection.findOne(filter);\n if (doc === null) {\n throw new Error('MongoDbInputAdapter: no document found');\n }\n return new MongoDbInputAdapter(doc);\n }\n\n transform(_raw: unknown): unknown {\n return this.schema;\n }\n}\n","import type { InputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface MySqlConnectionLike {\n execute(sql: string, params?: unknown[]): Promise<[unknown[], unknown]>;\n}\n\nexport class MySqlInputAdapter implements InputAdapter {\n private constructor(private readonly schema: unknown) {}\n\n /** Executes `sql` and caches the first row as the schema. */\n static async create(\n connection: MySqlConnectionLike,\n sql: string,\n params?: unknown[],\n ): Promise<MySqlInputAdapter> {\n const [rows] = await connection.execute(sql, params);\n if (!Array.isArray(rows) || rows.length === 0) {\n throw new Error('MySqlInputAdapter: query returned no rows');\n }\n return new MySqlInputAdapter(rows[0]);\n }\n\n transform(_raw: unknown): unknown {\n return this.schema;\n }\n}\n","import type { ChatEvent, OutputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface EventEmitterLike {\n emit(event: string, ...args: unknown[]): void;\n}\n\nexport class EventEmitterOutputAdapter implements OutputAdapter {\n constructor(private readonly emitter: EventEmitterLike) {}\n\n emit(event: ChatEvent): void {\n this.emitter.emit(event.type, event);\n }\n}\n","import type { ChatEvent, OutputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface WebhookOptions {\n headers?: Record<string, string>;\n}\n\nexport class WebhookOutputAdapter implements OutputAdapter {\n constructor(\n private readonly url: string,\n private readonly options: WebhookOptions = {},\n ) {}\n\n emit(event: ChatEvent): void {\n fetch(this.url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...this.options.headers },\n body: JSON.stringify(event),\n }).catch((err: unknown) => {\n console.error('[chat-and-react] WebhookOutputAdapter:', err);\n });\n }\n}\n","import type { ChatEvent, OutputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface WebSocketLike {\n readyState: number;\n OPEN: number;\n send(data: string): void;\n}\n\nexport class WebSocketOutputAdapter implements OutputAdapter {\n constructor(private readonly socket: WebSocketLike) {}\n\n emit(event: ChatEvent): void {\n if (this.socket.readyState === this.socket.OPEN) {\n this.socket.send(JSON.stringify(event));\n } else {\n console.warn('[chat-and-react] WebSocketOutputAdapter: socket not open');\n }\n }\n}\n"],"mappings":";AAuBA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,mBAAmB;AAE5B,SAAS,uBAAuB;AAKhC,SAAS,qBAAqB;;;ACrCvB,IAAM,sBAAN,MAAM,qBAA4C;AAAA,EAC/C,YAA6B,QAAgB;AAAhB;AAAA,EAAiB;AAAA;AAAA,EAGtD,aAAa,OACX,YACA,QAC8B;AAC9B,UAAM,MAAM,MAAM,WAAW,QAAQ,MAAM;AAC3C,QAAI,QAAQ,MAAM;AAChB,YAAM,IAAI,MAAM,wCAAwC;AAAA,IAC1D;AACA,WAAO,IAAI,qBAAoB,GAAG;AAAA,EACpC;AAAA,EAEA,UAAU,MAAwB;AAChC,WAAO,KAAK;AAAA,EACd;AACF;;;AClBO,IAAM,oBAAN,MAAM,mBAA0C;AAAA,EAC7C,YAA6B,QAAiB;AAAjB;AAAA,EAAkB;AAAA;AAAA,EAGvD,aAAa,OACX,YACA,KACA,QAC4B;AAC5B,UAAM,CAAC,IAAI,IAAI,MAAM,WAAW,QAAQ,KAAK,MAAM;AACnD,QAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,GAAG;AAC7C,YAAM,IAAI,MAAM,2CAA2C;AAAA,IAC7D;AACA,WAAO,IAAI,mBAAkB,KAAK,CAAC,CAAC;AAAA,EACtC;AAAA,EAEA,UAAU,MAAwB;AAChC,WAAO,KAAK;AAAA,EACd;AACF;;;ACnBO,IAAM,4BAAN,MAAyD;AAAA,EAC9D,YAA6B,SAA2B;AAA3B;AAAA,EAA4B;AAAA,EAEzD,KAAK,OAAwB;AAC3B,SAAK,QAAQ,KAAK,MAAM,MAAM,KAAK;AAAA,EACrC;AACF;;;ACNO,IAAM,uBAAN,MAAoD;AAAA,EACzD,YACmB,KACA,UAA0B,CAAC,GAC5C;AAFiB;AACA;AAAA,EAChB;AAAA,EAEH,KAAK,OAAwB;AAC3B,UAAM,KAAK,KAAK;AAAA,MACd,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,oBAAoB,GAAG,KAAK,QAAQ,QAAQ;AAAA,MACvE,MAAM,KAAK,UAAU,KAAK;AAAA,IAC5B,CAAC,EAAE,MAAM,CAAC,QAAiB;AACzB,cAAQ,MAAM,0CAA0C,GAAG;AAAA,IAC7D,CAAC;AAAA,EACH;AACF;;;ACbO,IAAM,yBAAN,MAAsD;AAAA,EAC3D,YAA6B,QAAuB;AAAvB;AAAA,EAAwB;AAAA,EAErD,KAAK,OAAwB;AAC3B,QAAI,KAAK,OAAO,eAAe,KAAK,OAAO,MAAM;AAC/C,WAAK,OAAO,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,IACxC,OAAO;AACL,cAAQ,KAAK,0DAA0D;AAAA,IACzE;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/input/mongodb-input-adapter.ts","../src/input/mysql-input-adapter.ts","../src/output/event-emitter-adapter.ts","../src/output/webhook-output-adapter.ts","../src/output/websocket-output-adapter.ts"],"sourcesContent":["import type { InputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface MongoCollectionLike {\n findOne(filter: object): Promise<object | null>;\n}\n\nexport class MongoDbInputAdapter implements InputAdapter {\n private constructor(private readonly schema: object) {}\n\n /** Fetches one document matching `filter` and caches it as the schema. */\n static async create(\n collection: MongoCollectionLike,\n filter: object,\n ): Promise<MongoDbInputAdapter> {\n const doc = await collection.findOne(filter);\n if (doc === null) {\n throw new Error('MongoDbInputAdapter: no document found');\n }\n return new MongoDbInputAdapter(doc);\n }\n\n transform(_raw: unknown): unknown {\n return this.schema;\n }\n}\n","import type { InputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface MySqlConnectionLike {\n execute(sql: string, params?: unknown[]): Promise<[unknown[], unknown]>;\n}\n\nexport class MySqlInputAdapter implements InputAdapter {\n private constructor(private readonly schema: unknown) {}\n\n /** Executes `sql` and caches the first row as the schema. */\n static async create(\n connection: MySqlConnectionLike,\n sql: string,\n params?: unknown[],\n ): Promise<MySqlInputAdapter> {\n const [rows] = await connection.execute(sql, params);\n if (!Array.isArray(rows) || rows.length === 0) {\n throw new Error('MySqlInputAdapter: query returned no rows');\n }\n return new MySqlInputAdapter(rows[0]);\n }\n\n transform(_raw: unknown): unknown {\n return this.schema;\n }\n}\n","import type { ChatEvent, OutputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface EventEmitterLike {\n emit(event: string, ...args: unknown[]): void;\n}\n\nexport class EventEmitterOutputAdapter implements OutputAdapter {\n constructor(private readonly emitter: EventEmitterLike) {}\n\n emit(event: ChatEvent): void {\n this.emitter.emit(event.type, event);\n }\n}\n","import type { ChatEvent, OutputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface WebhookOptions {\n headers?: Record<string, string>;\n}\n\nexport class WebhookOutputAdapter implements OutputAdapter {\n constructor(\n private readonly url: string,\n private readonly options: WebhookOptions = {},\n ) {}\n\n emit(event: ChatEvent): void {\n fetch(this.url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...this.options.headers },\n body: JSON.stringify(event),\n }).catch((err: unknown) => {\n console.error('[chat-and-react] WebhookOutputAdapter:', err);\n });\n }\n}\n","import type { ChatEvent, OutputAdapter } from '@richardmcquiston01/chat-and-react-core';\n\ninterface WebSocketLike {\n readyState: number;\n OPEN: number;\n send(data: string): void;\n}\n\nexport class WebSocketOutputAdapter implements OutputAdapter {\n constructor(private readonly socket: WebSocketLike) {}\n\n emit(event: ChatEvent): void {\n if (this.socket.readyState === this.socket.OPEN) {\n this.socket.send(JSON.stringify(event));\n } else {\n console.warn('[chat-and-react] WebSocketOutputAdapter: socket not open');\n }\n }\n}\n"],"mappings":";AAMO,IAAM,sBAAN,MAAM,qBAA4C;AAAA,EAC/C,YAA6B,QAAgB;AAAhB;AAAA,EAAiB;AAAA;AAAA,EAGtD,aAAa,OACX,YACA,QAC8B;AAC9B,UAAM,MAAM,MAAM,WAAW,QAAQ,MAAM;AAC3C,QAAI,QAAQ,MAAM;AAChB,YAAM,IAAI,MAAM,wCAAwC;AAAA,IAC1D;AACA,WAAO,IAAI,qBAAoB,GAAG;AAAA,EACpC;AAAA,EAEA,UAAU,MAAwB;AAChC,WAAO,KAAK;AAAA,EACd;AACF;;;AClBO,IAAM,oBAAN,MAAM,mBAA0C;AAAA,EAC7C,YAA6B,QAAiB;AAAjB;AAAA,EAAkB;AAAA;AAAA,EAGvD,aAAa,OACX,YACA,KACA,QAC4B;AAC5B,UAAM,CAAC,IAAI,IAAI,MAAM,WAAW,QAAQ,KAAK,MAAM;AACnD,QAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,GAAG;AAC7C,YAAM,IAAI,MAAM,2CAA2C;AAAA,IAC7D;AACA,WAAO,IAAI,mBAAkB,KAAK,CAAC,CAAC;AAAA,EACtC;AAAA,EAEA,UAAU,MAAwB;AAChC,WAAO,KAAK;AAAA,EACd;AACF;;;ACnBO,IAAM,4BAAN,MAAyD;AAAA,EAC9D,YAA6B,SAA2B;AAA3B;AAAA,EAA4B;AAAA,EAEzD,KAAK,OAAwB;AAC3B,SAAK,QAAQ,KAAK,MAAM,MAAM,KAAK;AAAA,EACrC;AACF;;;ACNO,IAAM,uBAAN,MAAoD;AAAA,EACzD,YACmB,KACA,UAA0B,CAAC,GAC5C;AAFiB;AACA;AAAA,EAChB;AAAA,EAEH,KAAK,OAAwB;AAC3B,UAAM,KAAK,KAAK;AAAA,MACd,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,oBAAoB,GAAG,KAAK,QAAQ,QAAQ;AAAA,MACvE,MAAM,KAAK,UAAU,KAAK;AAAA,IAC5B,CAAC,EAAE,MAAM,CAAC,QAAiB;AACzB,cAAQ,MAAM,0CAA0C,GAAG;AAAA,IAC7D,CAAC;AAAA,EACH;AACF;;;ACbO,IAAM,yBAAN,MAAsD;AAAA,EAC3D,YAA6B,QAAuB;AAAvB;AAAA,EAAwB;AAAA,EAErD,KAAK,OAAwB;AAC3B,QAAI,KAAK,OAAO,eAAe,KAAK,OAAO,MAAM;AAC/C,WAAK,OAAO,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,IACxC,OAAO;AACL,cAAQ,KAAK,0DAA0D;AAAA,IACzE;AAAA,EACF;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@richardmcquiston01/chat-and-react-adapters",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "Optional input, output, and error-log adapters (webhook, WebSocket, MongoDB, MySQL, EventEmitter) for chat-and-react.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Richard McQuiston <richard.mcquiston01@gmail.com>",
@@ -47,9 +47,7 @@
47
47
  "typecheck": "tsc --noEmit"
48
48
  },
49
49
  "dependencies": {
50
- "@richardmcquiston01/chat-and-react-core": "0.11.0",
51
- "@richardmcquiston01/error-log-adapter": "^0.2.0",
52
- "@richardmcquiston01/storage-adapters": "^0.5.0"
50
+ "@richardmcquiston01/chat-and-react-core": "0.12.0"
53
51
  },
54
52
  "peerDependencies": {
55
53
  "mongodb": ">=5.0.0",