{"_id":"@caravan-logger/transport-sqlite","_rev":"6-09979dcf1bcb86ccffb4dcdba39b0702","name":"@caravan-logger/transport-sqlite","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@caravan-logger/transport-sqlite","version":"1.0.0","author":"Carlos Menezes <carlos.dm.menezes@gmail.com>","license":"MIT","_id":"@caravan-logger/transport-sqlite@1.0.0","maintainers":[{"name":"carlos-menezes","email":"carlos-menezes212@hotmail.com"}],"dist":{"shasum":"5a8324f6855a183c01542bf8922c5047f68a63b4","tarball":"https://registry.npmjs.org/@caravan-logger/transport-sqlite/-/transport-sqlite-1.0.0.tgz","fileCount":9,"integrity":"sha512-Aa4mpFFWAdG9+8X0ECU0BLNropBdoagXg9n5O3QKXsftHVa/gR2Sf3Wgb2+fbR/zDAVzhOrowx2ru17ypelRNA==","signatures":[{"sig":"MEUCIEqlBpRKAsAVUJ9ayOShGwynj8MPWy6FG+RHW7OyhX/8AiEA8THQOsJpDmCuzKW5E1RApwqEO+Am+f70vy2J7UzekYU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17868},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts && tsc -p tsconfig.json"},"_npmUser":{"name":"carlos-menezes","email":"carlos-menezes212@hotmail.com"},"deprecated":"this package has been deprecated","directories":{},"_nodeVersion":"24.14.1","dependencies":{"better-sqlite3":"^13.0.3"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.11","rolldown":"^1.2.5","typescript":"^7.0.2","@types/node":"^26.2.0","@types/better-sqlite3":"^9.6.0","@caravan-logger/logger":"1.0.0","@packages/typescript-config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/transport-sqlite_1.0.0_1787875325325_0.7088595277203011","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@caravan-logger/transport-sqlite","version":"1.0.1","author":"Carlos Menezes <carlos.dm.menezes@gmail.com>","license":"MIT","_id":"@caravan-logger/transport-sqlite@1.0.1","maintainers":[{"name":"carlos-menezes","email":"carlos-menezes212@hotmail.com"}],"dist":{"shasum":"e09e05a482d728b99294d97331312563ba364b5f","tarball":"https://registry.npmjs.org/@caravan-logger/transport-sqlite/-/transport-sqlite-1.0.1.tgz","fileCount":5,"integrity":"sha512-qMHSrZ82dapNrTEhmOxcJgFcjTsU0xcu67Oc7jizU1P9dD1aqQyt34n9V/7yy1dy6Pl2f2yISwMGe18U0ZBeIQ==","signatures":[{"sig":"MEUCIQCXUa9DPRRH6rQ9K81pbtDinfMKPZElHTF0Pwo3V7QyFAIgWn52VSbFQcEueOl8a6M0kSXtJZd03PL+n9ol9HWoQlc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8648},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts && tsc -p tsconfig.json"},"_npmUser":{"name":"carlos-menezes","email":"carlos-menezes212@hotmail.com"},"deprecated":"this package has been deprecated","directories":{},"_nodeVersion":"24.14.1","dependencies":{"better-sqlite3":"^13.0.3"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.11","rolldown":"^1.2.5","typescript":"^7.0.2","@types/node":"^26.2.0","@types/better-sqlite3":"^9.6.0","@caravan-logger/logger":"1.0.1","@packages/typescript-config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/transport-sqlite_1.0.1_1787876468559_0.2724721008926425","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@caravan-logger/transport-sqlite","version":"1.0.2","author":"Carlos Menezes <carlos.dm.menezes@gmail.com>","license":"MIT","_id":"@caravan-logger/transport-sqlite@1.0.2","maintainers":[{"name":"carlos-menezes","email":"carlos-menezes212@hotmail.com"}],"dist":{"shasum":"e6b652457469c32a61a8709d1acaebf50b363ae6","tarball":"https://registry.npmjs.org/@caravan-logger/transport-sqlite/-/transport-sqlite-1.0.2.tgz","fileCount":5,"integrity":"sha512-2Lmps83xbnzNJfaIxSbo4YyZBYXmGkqBv7zuxfeG3jlowejBn8SUCxx/l1fVMTQ/Of9e2I5/6AMjtz6b/n1DSA==","signatures":[{"sig":"MEQCICNEPdZJItpf34i7HS9W1NVnNFoIZhqPACq1BsmakJQeAiB/LWAJuOyeGmw2BSpvqivyYC9OP1je5FVldv8Kft8U3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8648},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"rolldown -c rolldown.config.ts && tsc -p tsconfig.json"},"_npmUser":{"name":"carlos-menezes","email":"carlos-menezes212@hotmail.com"},"directories":{},"_nodeVersion":"24.14.1","dependencies":{"better-sqlite3":"^13.0.3","@caravan-logger/logger":"1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.11","rolldown":"^1.2.5","typescript":"^7.0.2","@types/node":"^26.2.0","@types/better-sqlite3":"^9.6.0","@packages/typescript-config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/transport-sqlite_1.0.2_1787877381100_0.0736795132989132","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@caravan-logger/transport-sqlite","version":"1.0.3","license":"MIT","author":"Carlos Menezes <carlos.dm.menezes@gmail.com>","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"dependencies":{"better-sqlite3":"^13.0.3","@caravan-logger/logger":"1.1.0"},"devDependencies":{"@types/better-sqlite3":"^9.6.0","@types/node":"^26.2.0","rolldown":"^1.2.5","typescript":"^7.0.2","vitest":"^4.1.11","@packages/typescript-config":"0.0.0"},"scripts":{"build":"rolldown -c rolldown.config.ts && tsc -p tsconfig.json","test":"vitest --run"},"_nodeVersion":"24.14.1","_id":"@caravan-logger/transport-sqlite@1.0.3","dist":{"integrity":"sha512-ahF77x0GxOWgeAUftz+SAYT3gFLUKlCKUTpvI9UnzFPq+9JtKGOacTmGte9hU2j8YC73NNN9RRLA+uiRu1scCg==","shasum":"3ba73fff74476eeb7c9fdea2ebf1d98e8c03b19e","tarball":"https://registry.npmjs.org/@caravan-logger/transport-sqlite/-/transport-sqlite-1.0.3.tgz","fileCount":5,"unpackedSize":8730,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBIrgVNBtBLfuQ36KFJ1F9KbTCAute39ksAWHma8BOFGAiB5MvBOuKVMWHICcdiu3hxqUbHGpOBIue2h8KGc9zo/Hg=="}]},"_npmUser":{"name":"carlos-menezes","email":"carlos-menezes212@hotmail.com"},"directories":{},"maintainers":[{"name":"carlos-menezes","email":"carlos-menezes212@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/transport-sqlite_1.0.3_1788035224455_0.5401112998902935"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-28T00:02:04.946Z","modified":"2026-08-29T20:27:04.775Z","1.0.0":"2026-08-28T00:02:05.492Z","1.0.1":"2026-08-28T00:21:08.687Z","1.0.2":"2026-08-28T00:36:21.234Z","1.0.3":"2026-08-29T20:27:04.589Z"},"author":"Carlos Menezes <carlos.dm.menezes@gmail.com>","license":"MIT","maintainers":[{"name":"carlos-menezes","email":"carlos-menezes212@hotmail.com"}],"readme":"# @caravan-logger/transport-sqlite\n\n![NPM Version](https://img.shields.io/npm/v/%40caravan-logger%2Ftransport-sqlite) ![NPM Downloads](https://img.shields.io/npm/dw/%40caravan-logger%2Ftransport-sqlite?style=flat-square) ![npm bundle size](https://img.shields.io/bundlephobia/min/%40caravan-logger%2Ftransport-sqlite?style=flat-square)\n\nA [Caravan](../../README.md) transport that inserts log records as rows into\na SQLite database using [`better-sqlite3`](https://github.com/WiseLibs/better-sqlite3).\n\n## Install\n\n```sh\npnpm add @caravan-logger/transport-sqlite better-sqlite3\n```\n\n## Usage\n\n```ts\nimport Database from \"better-sqlite3\";\nimport { createLogger } from \"@caravan-logger/logger\";\nimport { createSqliteTransport } from \"@caravan-logger/transport-sqlite\";\n\nconst db = new Database(\"app.db\");\n\nconst logger = createLogger(\"app\", {\n  transports: [createSqliteTransport({ db })],\n});\n\nlogger.info(\"Hello, world!\", { context: { user: \"Alice\" } });\nlogger.info(\"Hello, world!\");\nawait logger.flush();\n```\n\nQuerying the database will show the records inserted by the transport:\n\n| id  | level | time          | message         | context                      |\n| --- | ----- | ------------- | --------------- | ---------------------------- |\n| boo | INFO  | 1787849349827 | \"Hello, world!\" | {\"context\":{\"user\":\"Alice\"}} |\n| boo | INFO  | 1787849349827 | \"Hello, world!\" | NULL                         |\n\n## Schema\n\nOn creation, the transport runs `CREATE TABLE IF NOT EXISTS` for the\nconfigured table (`logs` by default) with the following columns:\n\n| Column    | Type    | Description                               |\n| --------- | ------- | ----------------------------------------- |\n| `id`      | TEXT    | The logger's `id`.                        |\n| `level`   | TEXT    | The record's level.                       |\n| `time`    | INTEGER | `Date.now()` when the record was created. |\n| `message` | TEXT    | The record's message.                     |\n| `context` | TEXT    | JSON-serialized context, or `NULL`.       |\n\n## Options\n\n| Option             | Type                                               | Default                                 | Description                                                                                  |\n| ------------------ | -------------------------------------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------- |\n| `db`               | `Database.Database`                                | —                                       | An already-constructed `better-sqlite3` database (required).                                 |\n| `table`            | `string`                                           | `\"logs\"`                                | Table log records are inserted into. Must be a valid SQL identifier.                         |\n| `serializeContext` | `(context: object \\| undefined) => string \\| null` | `JSON.stringify`, or `null` when absent | Serializes a record's context to the stored `context` column.                                |\n| `batchSize`        | `number`                                           | `1`                                     | Number of records buffered before a batch insert runs.                                       |\n| `flushInterval`    | `number`                                           | —                                       | Interval, in milliseconds, at which buffered records are inserted regardless of `batchSize`. |\n| `level`            | `TDefaultLevels`                                   | inherits the logger's level             | Drops records below this level before `write()` runs.                                        |\n","readmeFilename":""}