@richardmcquiston01/chat-and-react-adapters 0.6.0 → 0.7.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 +11 -3
- package/dist/index.cjs +27 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.mjs +27 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -36,10 +36,18 @@ const adapter = new WebhookOutputAdapter("https://api.example.com/events", {
|
|
|
36
36
|
|
|
37
37
|
## Error-log adapters
|
|
38
38
|
|
|
39
|
-
- **`WebhookErrorAdapter`** — POST
|
|
40
|
-
- **`MongoDbErrorAdapter`** — insert
|
|
39
|
+
- **`WebhookErrorAdapter`** — POST errors to a webhook URL
|
|
40
|
+
- **`MongoDbErrorAdapter`** — insert errors into a MongoDB collection
|
|
41
|
+
- **`JsonFileErrorAdapter`** / **`FlatFileErrorAdapter`** — write to a JSON or text file (Node, Bun)
|
|
42
|
+
- **`SqliteErrorAdapter`** — insert into a SQLite table through any driver
|
|
43
|
+
- **`WebStorageErrorAdapter`** / **`IndexedDbErrorAdapter`** — keep errors in the browser
|
|
44
|
+
- **`CompositeErrorAdapter`** — send each error to several adapters
|
|
41
45
|
|
|
42
|
-
|
|
46
|
+
All are re-exported from [`@richardmcquiston01/error-log-adapter`](https://www.npmjs.com/package/@richardmcquiston01/error-log-adapter).
|
|
47
|
+
|
|
48
|
+
## Storage adapters
|
|
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).
|
|
43
51
|
|
|
44
52
|
## Input adapters
|
|
45
53
|
|
package/dist/index.cjs
CHANGED
|
@@ -20,16 +20,30 @@ 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,
|
|
23
24
|
EventEmitterOutputAdapter: () => EventEmitterOutputAdapter,
|
|
25
|
+
FlatFileErrorAdapter: () => import_error_log_adapter.FlatFileErrorAdapter,
|
|
26
|
+
IndexedDbErrorAdapter: () => import_error_log_adapter.IndexedDbErrorAdapter,
|
|
27
|
+
JsonFileErrorAdapter: () => import_error_log_adapter.JsonFileErrorAdapter,
|
|
24
28
|
MongoDbErrorAdapter: () => import_error_log_adapter.MongoDbErrorAdapter,
|
|
25
29
|
MongoDbInputAdapter: () => MongoDbInputAdapter,
|
|
26
30
|
MySqlInputAdapter: () => MySqlInputAdapter,
|
|
31
|
+
SqliteErrorAdapter: () => import_error_log_adapter.SqliteErrorAdapter,
|
|
27
32
|
WebSocketOutputAdapter: () => WebSocketOutputAdapter,
|
|
33
|
+
WebStorageErrorAdapter: () => import_error_log_adapter.WebStorageErrorAdapter,
|
|
28
34
|
WebhookErrorAdapter: () => import_error_log_adapter.WebhookErrorAdapter,
|
|
29
|
-
WebhookOutputAdapter: () => WebhookOutputAdapter
|
|
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
|
|
30
41
|
});
|
|
31
42
|
module.exports = __toCommonJS(index_exports);
|
|
32
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");
|
|
33
47
|
|
|
34
48
|
// src/input/mongodb-input-adapter.ts
|
|
35
49
|
var MongoDbInputAdapter = class _MongoDbInputAdapter {
|
|
@@ -109,12 +123,23 @@ var WebSocketOutputAdapter = class {
|
|
|
109
123
|
};
|
|
110
124
|
// Annotate the CommonJS export names for ESM import in node:
|
|
111
125
|
0 && (module.exports = {
|
|
126
|
+
CompositeErrorAdapter,
|
|
112
127
|
EventEmitterOutputAdapter,
|
|
128
|
+
FlatFileErrorAdapter,
|
|
129
|
+
IndexedDbErrorAdapter,
|
|
130
|
+
JsonFileErrorAdapter,
|
|
113
131
|
MongoDbErrorAdapter,
|
|
114
132
|
MongoDbInputAdapter,
|
|
115
133
|
MySqlInputAdapter,
|
|
134
|
+
SqliteErrorAdapter,
|
|
116
135
|
WebSocketOutputAdapter,
|
|
136
|
+
WebStorageErrorAdapter,
|
|
117
137
|
WebhookErrorAdapter,
|
|
118
|
-
WebhookOutputAdapter
|
|
138
|
+
WebhookOutputAdapter,
|
|
139
|
+
buildCreateErrorLogTableSql,
|
|
140
|
+
createErrorLogStore,
|
|
141
|
+
fileAdapter,
|
|
142
|
+
jsonFileAdapter,
|
|
143
|
+
sqliteAdapter
|
|
119
144
|
});
|
|
120
145
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -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
|
|
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":[]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
export { CollectionLike, MongoDbErrorAdapter, MongoDbErrorOptions, WebhookErrorAdapter, WebhookErrorOptions } from '@richardmcquiston01/error-log-adapter';
|
|
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';
|
|
2
5
|
import { InputAdapter, OutputAdapter, ChatEvent } from '@richardmcquiston01/chat-and-react-core';
|
|
3
6
|
|
|
4
7
|
interface MongoCollectionLike {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
export { CollectionLike, MongoDbErrorAdapter, MongoDbErrorOptions, WebhookErrorAdapter, WebhookErrorOptions } from '@richardmcquiston01/error-log-adapter';
|
|
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';
|
|
2
5
|
import { InputAdapter, OutputAdapter, ChatEvent } from '@richardmcquiston01/chat-and-react-core';
|
|
3
6
|
|
|
4
7
|
interface MongoCollectionLike {
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
import {
|
|
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";
|
|
3
17
|
|
|
4
18
|
// src/input/mongodb-input-adapter.ts
|
|
5
19
|
var MongoDbInputAdapter = class _MongoDbInputAdapter {
|
|
@@ -78,12 +92,23 @@ var WebSocketOutputAdapter = class {
|
|
|
78
92
|
}
|
|
79
93
|
};
|
|
80
94
|
export {
|
|
95
|
+
CompositeErrorAdapter,
|
|
81
96
|
EventEmitterOutputAdapter,
|
|
97
|
+
FlatFileErrorAdapter,
|
|
98
|
+
IndexedDbErrorAdapter,
|
|
99
|
+
JsonFileErrorAdapter,
|
|
82
100
|
MongoDbErrorAdapter,
|
|
83
101
|
MongoDbInputAdapter,
|
|
84
102
|
MySqlInputAdapter,
|
|
103
|
+
SqliteErrorAdapter,
|
|
85
104
|
WebSocketOutputAdapter,
|
|
105
|
+
WebStorageErrorAdapter,
|
|
86
106
|
WebhookErrorAdapter,
|
|
87
|
-
WebhookOutputAdapter
|
|
107
|
+
WebhookOutputAdapter,
|
|
108
|
+
buildCreateErrorLogTableSql,
|
|
109
|
+
createErrorLogStore,
|
|
110
|
+
fileAdapter,
|
|
111
|
+
jsonFileAdapter,
|
|
112
|
+
sqliteAdapter
|
|
88
113
|
};
|
|
89
114
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -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
|
|
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":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@richardmcquiston01/chat-and-react-adapters",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.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,8 +47,9 @@
|
|
|
47
47
|
"typecheck": "tsc --noEmit"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@richardmcquiston01/chat-and-react-core": "0.
|
|
51
|
-
"@richardmcquiston01/error-log-adapter": "^0.
|
|
50
|
+
"@richardmcquiston01/chat-and-react-core": "0.7.0",
|
|
51
|
+
"@richardmcquiston01/error-log-adapter": "^0.2.0",
|
|
52
|
+
"@richardmcquiston01/storage-adapters": "^0.5.0"
|
|
52
53
|
},
|
|
53
54
|
"peerDependencies": {
|
|
54
55
|
"mongodb": ">=5.0.0",
|