@effect/sql-sqlite-bun
Advanced tools
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| exports.make = exports.layer = exports.TypeId = exports.SqliteClient = void 0; | ||
| var Client = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql/SqlClient")); | ||
| var _SqlError = /*#__PURE__*/require("@effect/sql/SqlError"); | ||
| var Statement = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql/Statement")); | ||
| var Otel = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@opentelemetry/semantic-conventions")); | ||
| var _bunSqlite = /*#__PURE__*/require("bun:sqlite"); | ||
| var Config = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Config")); | ||
| var Context = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Context")); | ||
| var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect")); | ||
| var _Function = /*#__PURE__*/require("effect/Function"); | ||
| var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Layer")); | ||
| var Scope = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Scope")); | ||
| function _getRequireWildcardCache(e) { | ||
| if ("function" != typeof WeakMap) return null; | ||
| var r = new WeakMap(), | ||
| t = new WeakMap(); | ||
| return (_getRequireWildcardCache = function (e) { | ||
| return e ? t : r; | ||
| })(e); | ||
| } | ||
| function _interopRequireWildcard(e, r) { | ||
| if (!r && e && e.__esModule) return e; | ||
| if (null === e || "object" != typeof e && "function" != typeof e) return { | ||
| default: e | ||
| }; | ||
| var t = _getRequireWildcardCache(r); | ||
| if (t && t.has(e)) return t.get(e); | ||
| var n = { | ||
| __proto__: null | ||
| }, | ||
| a = Object.defineProperty && Object.getOwnPropertyDescriptor; | ||
| for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { | ||
| var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; | ||
| i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; | ||
| } | ||
| return n.default = e, t && t.set(e, n), n; | ||
| } | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| /** | ||
| * @category type ids | ||
| * @since 1.0.0 | ||
| */ | ||
| const TypeId = exports.TypeId = /*#__PURE__*/Symbol.for("@effect/sql-sqlite-bun/SqliteClient"); | ||
| /** | ||
| * @category tags | ||
| * @since 1.0.0 | ||
| */ | ||
| const SqliteClient = exports.SqliteClient = /*#__PURE__*/Context.GenericTag("@effect/sql-sqlite-bun/Client"); | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| const make = options => Effect.gen(function* (_) { | ||
| const compiler = Statement.makeCompilerSqlite(options.transformQueryNames); | ||
| const transformRows = Statement.defaultTransforms(options.transformResultNames).array; | ||
| const makeConnection = Effect.gen(function* (_) { | ||
| const db = new _bunSqlite.Database(options.filename, { | ||
| readonly: options.readonly, | ||
| readwrite: options.readwrite ?? true, | ||
| create: options.create ?? true | ||
| }); | ||
| yield* _(Effect.addFinalizer(() => Effect.sync(() => db.close()))); | ||
| if (options.disableWAL !== true) { | ||
| db.run("PRAGMA journal_mode = WAL;"); | ||
| } | ||
| const run = (sql, params = []) => Effect.try({ | ||
| try: () => db.query(sql).all(...params), | ||
| catch: error => new _SqlError.SqlError({ | ||
| error | ||
| }) | ||
| }); | ||
| const runTransform = options.transformResultNames ? (sql, params) => Effect.map(run(sql, params), transformRows) : run; | ||
| const runValues = (sql, params = []) => Effect.try({ | ||
| try: () => db.query(sql).values(...params), | ||
| catch: error => new _SqlError.SqlError({ | ||
| error | ||
| }) | ||
| }); | ||
| return (0, _Function.identity)({ | ||
| execute(sql, params) { | ||
| return runTransform(sql, params); | ||
| }, | ||
| executeValues(sql, params) { | ||
| return runValues(sql, params); | ||
| }, | ||
| executeWithoutTransform(sql, params) { | ||
| return run(sql, params); | ||
| }, | ||
| executeRaw(sql, params) { | ||
| return runTransform(sql, params); | ||
| }, | ||
| executeStream(_sql, _params) { | ||
| return Effect.dieMessage("executeStream not implemented"); | ||
| }, | ||
| export: Effect.try({ | ||
| try: () => db.serialize(), | ||
| catch: error => new _SqlError.SqlError({ | ||
| error | ||
| }) | ||
| }), | ||
| loadExtension: path => Effect.try({ | ||
| try: () => db.loadExtension(path), | ||
| catch: error => new _SqlError.SqlError({ | ||
| error | ||
| }) | ||
| }) | ||
| }); | ||
| }); | ||
| const semaphore = yield* _(Effect.makeSemaphore(1)); | ||
| const connection = yield* _(makeConnection); | ||
| const acquirer = semaphore.withPermits(1)(Effect.succeed(connection)); | ||
| const transactionAcquirer = Effect.uninterruptibleMask(restore => Effect.as(Effect.zipRight(restore(semaphore.take(1)), Effect.tap(Effect.scope, scope => Scope.addFinalizer(scope, semaphore.release(1)))), connection)); | ||
| return Object.assign(Client.make({ | ||
| acquirer, | ||
| compiler, | ||
| transactionAcquirer, | ||
| spanAttributes: [...(options.spanAttributes ? Object.entries(options.spanAttributes) : []), [Otel.SEMATTRS_DB_SYSTEM, Otel.DBSYSTEMVALUES_SQLITE]] | ||
| }), { | ||
| [TypeId]: TypeId, | ||
| config: options, | ||
| export: Effect.flatMap(acquirer, _ => _.export), | ||
| loadExtension: path => Effect.flatMap(acquirer, _ => _.loadExtension(path)) | ||
| }); | ||
| }); | ||
| /** | ||
| * @category layers | ||
| * @since 1.0.0 | ||
| */ | ||
| exports.make = make; | ||
| const layer = config => Layer.scopedContext(Config.unwrap(config).pipe(Effect.flatMap(make), Effect.map(client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client))))); | ||
| exports.layer = layer; | ||
| //# sourceMappingURL=SqliteClient.js.map |
| {"version":3,"file":"SqliteClient.js","names":["Client","_interopRequireWildcard","require","_SqlError","Statement","Otel","_bunSqlite","Config","Context","Effect","_Function","Layer","Scope","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TypeId","exports","Symbol","for","SqliteClient","GenericTag","make","options","gen","_","compiler","makeCompilerSqlite","transformQueryNames","transformRows","defaultTransforms","transformResultNames","array","makeConnection","db","Database","filename","readonly","readwrite","create","addFinalizer","sync","close","disableWAL","run","sql","params","try","query","all","catch","error","SqlError","runTransform","map","runValues","values","identity","execute","executeValues","executeWithoutTransform","executeRaw","executeStream","_sql","_params","dieMessage","export","serialize","loadExtension","path","semaphore","makeSemaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","as","zipRight","take","tap","scope","release","assign","spanAttributes","entries","SEMATTRS_DB_SYSTEM","DBSYSTEMVALUES_SQLITE","config","flatMap","layer","scopedContext","unwrap","pipe","client","add","SqlClient"],"sources":["../../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| var _exportNames = { | ||
| run: true, | ||
| layer: true | ||
| }; | ||
| exports.run = exports.layer = void 0; | ||
| var Command = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Command")); | ||
| var _FileSystem = /*#__PURE__*/require("@effect/platform/FileSystem"); | ||
| var _Path = /*#__PURE__*/require("@effect/platform/Path"); | ||
| var Migrator = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql/Migrator")); | ||
| Object.keys(Migrator).forEach(function (key) { | ||
| if (key === "default" || key === "__esModule") return; | ||
| if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; | ||
| if (key in exports && exports[key] === Migrator[key]) return; | ||
| Object.defineProperty(exports, key, { | ||
| enumerable: true, | ||
| get: function () { | ||
| return Migrator[key]; | ||
| } | ||
| }); | ||
| }); | ||
| var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect")); | ||
| var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Layer")); | ||
| var _SqliteClient = /*#__PURE__*/require("./SqliteClient.js"); | ||
| var _FileSystem2 = /*#__PURE__*/require("@effect/sql/Migrator/FileSystem"); | ||
| Object.keys(_FileSystem2).forEach(function (key) { | ||
| if (key === "default" || key === "__esModule") return; | ||
| if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; | ||
| if (key in exports && exports[key] === _FileSystem2[key]) return; | ||
| Object.defineProperty(exports, key, { | ||
| enumerable: true, | ||
| get: function () { | ||
| return _FileSystem2[key]; | ||
| } | ||
| }); | ||
| }); | ||
| function _getRequireWildcardCache(e) { | ||
| if ("function" != typeof WeakMap) return null; | ||
| var r = new WeakMap(), | ||
| t = new WeakMap(); | ||
| return (_getRequireWildcardCache = function (e) { | ||
| return e ? t : r; | ||
| })(e); | ||
| } | ||
| function _interopRequireWildcard(e, r) { | ||
| if (!r && e && e.__esModule) return e; | ||
| if (null === e || "object" != typeof e && "function" != typeof e) return { | ||
| default: e | ||
| }; | ||
| var t = _getRequireWildcardCache(r); | ||
| if (t && t.has(e)) return t.get(e); | ||
| var n = { | ||
| __proto__: null | ||
| }, | ||
| a = Object.defineProperty && Object.getOwnPropertyDescriptor; | ||
| for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { | ||
| var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; | ||
| i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; | ||
| } | ||
| return n.default = e, t && t.set(e, n), n; | ||
| } | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| const run = exports.run = /*#__PURE__*/Migrator.make({ | ||
| dumpSchema(path, table) { | ||
| const dump = args => Effect.gen(function* (_) { | ||
| const sql = yield* _SqliteClient.SqliteClient; | ||
| const dump = yield* _(Command.make("sqlite3", sql.config.filename, ...args), Command.string); | ||
| return dump.replace(/^create table sqlite_sequence\(.*$/im, "").replace(/\n{2,}/gm, "\n\n").trim(); | ||
| }).pipe(Effect.mapError(error => new Migrator.MigrationError({ | ||
| reason: "failed", | ||
| message: error.message | ||
| }))); | ||
| const dumpSchema = dump([".schema"]); | ||
| const dumpMigrations = dump(["--cmd", `.mode insert ${table}`, `select * from ${table}`]); | ||
| const dumpAll = Effect.map(Effect.all([dumpSchema, dumpMigrations], { | ||
| concurrency: 2 | ||
| }), ([schema, migrations]) => schema + "\n\n" + migrations); | ||
| const dumpFile = file => Effect.gen(function* (_) { | ||
| const fs = yield* _(_FileSystem.FileSystem); | ||
| const path = yield* _(_Path.Path); | ||
| const dump = yield* _(dumpAll); | ||
| yield* _(fs.makeDirectory(path.dirname(file), { | ||
| recursive: true | ||
| })); | ||
| yield* _(fs.writeFileString(file, dump)); | ||
| }).pipe(Effect.mapError(error => new Migrator.MigrationError({ | ||
| reason: "failed", | ||
| message: error.message | ||
| }))); | ||
| return dumpFile(path); | ||
| } | ||
| }); | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| const layer = options => Layer.effectDiscard(run(options)); | ||
| exports.layer = layer; | ||
| //# sourceMappingURL=SqliteMigrator.js.map |
| {"version":3,"file":"SqliteMigrator.js","names":["Command","_interopRequireWildcard","require","_FileSystem","_Path","Migrator","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","Effect","Layer","_SqliteClient","_FileSystem2","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","n","__proto__","a","getOwnPropertyDescriptor","u","i","set","run","make","dumpSchema","path","table","dump","args","gen","_","sql","SqliteClient","config","filename","string","replace","trim","pipe","mapError","error","MigrationError","reason","message","dumpMigrations","dumpAll","map","all","concurrency","schema","migrations","dumpFile","file","fs","FileSystem","Path","makeDirectory","dirname","recursive","writeFileString","layer","options","effectDiscard"],"sources":["../../src/SqliteMigrator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]} |
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| import * as Client from "@effect/sql/SqlClient"; | ||
| import { SqlError } from "@effect/sql/SqlError"; | ||
| import * as Config from "effect/Config"; | ||
| import type { ConfigError } from "effect/ConfigError"; | ||
| import * as Context from "effect/Context"; | ||
| import * as Effect from "effect/Effect"; | ||
| import * as Layer from "effect/Layer"; | ||
| import * as Scope from "effect/Scope"; | ||
| /** | ||
| * @category type ids | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const TypeId: unique symbol; | ||
| /** | ||
| * @category type ids | ||
| * @since 1.0.0 | ||
| */ | ||
| export type TypeId = typeof TypeId; | ||
| /** | ||
| * @category models | ||
| * @since 1.0.0 | ||
| */ | ||
| export interface SqliteClient extends Client.SqlClient { | ||
| readonly [TypeId]: TypeId; | ||
| readonly config: SqliteClientConfig; | ||
| readonly export: Effect.Effect<Uint8Array, SqlError>; | ||
| readonly loadExtension: (path: string) => Effect.Effect<void, SqlError>; | ||
| /** Not supported in sqlite */ | ||
| readonly updateValues: never; | ||
| } | ||
| /** | ||
| * @category tags | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const SqliteClient: Context.Tag<SqliteClient, SqliteClient>; | ||
| /** | ||
| * @category models | ||
| * @since 1.0.0 | ||
| */ | ||
| export interface SqliteClientConfig { | ||
| readonly filename: string; | ||
| readonly readonly?: boolean | undefined; | ||
| readonly create?: boolean | undefined; | ||
| readonly readwrite?: boolean | undefined; | ||
| readonly disableWAL?: boolean | undefined; | ||
| readonly spanAttributes?: Record<string, unknown> | undefined; | ||
| readonly transformResultNames?: ((str: string) => string) | undefined; | ||
| readonly transformQueryNames?: ((str: string) => string) | undefined; | ||
| } | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const make: (options: SqliteClientConfig) => Effect.Effect<SqliteClient, never, Scope.Scope>; | ||
| /** | ||
| * @category layers | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const layer: (config: Config.Config.Wrap<SqliteClientConfig>) => Layer.Layer<SqliteClient | Client.SqlClient, ConfigError>; | ||
| //# sourceMappingURL=SqliteClient.d.ts.map |
| {"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../../src/SqliteClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAI/C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAA0D,CAAA;AAEtF;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,SAAS;IACpD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACpD,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAEvE,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,yCAAoE,CAAA;AAE7F;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAEzC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAE7D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;CACrE;AAOD;;;GAGG;AACH,eAAO,MAAM,IAAI,YACN,kBAAkB,KAC1B,OAAO,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,CAuG7C,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,KAAK,WACR,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAC7C,MAAM,KAAK,CAAC,YAAY,GAAG,OAAO,SAAS,EAAE,WAAW,CAUxD,CAAA"} |
| import type { CommandExecutor } from "@effect/platform/CommandExecutor"; | ||
| import { FileSystem } from "@effect/platform/FileSystem"; | ||
| import { Path } from "@effect/platform/Path"; | ||
| import * as Migrator from "@effect/sql/Migrator"; | ||
| import type * as Client from "@effect/sql/SqlClient"; | ||
| import type { SqlError } from "@effect/sql/SqlError"; | ||
| import * as Effect from "effect/Effect"; | ||
| import * as Layer from "effect/Layer"; | ||
| import { SqliteClient } from "./SqliteClient.js"; | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * from "@effect/sql/Migrator"; | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * from "@effect/sql/Migrator/FileSystem"; | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const run: <R2 = never>(options: Migrator.MigratorOptions<R2>) => Effect.Effect<ReadonlyArray<readonly [id: number, name: string]>, Migrator.MigrationError | SqlError, FileSystem | Path | SqliteClient | Client.SqlClient | CommandExecutor | R2>; | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const layer: <R>(options: Migrator.MigratorOptions<R>) => Layer.Layer<never, SqlError | Migrator.MigrationError, SqliteClient | Client.SqlClient | CommandExecutor | FileSystem | Path | R>; | ||
| //# sourceMappingURL=SqliteMigrator.d.ts.map |
| {"version":3,"file":"SqliteMigrator.d.ts","sourceRoot":"","sources":["../../src/SqliteMigrator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAChD,OAAO,KAAK,KAAK,MAAM,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD;;GAEG;AACH,cAAc,sBAAsB,CAAA;AAEpC;;GAEG;AACH,cAAc,iCAAiC,CAAA;AAE/C;;;GAGG;AACH,eAAO,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,EAC3B,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAClC,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAClD,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAClC,UAAU,GAAG,IAAI,GAAG,YAAY,GAAG,MAAM,CAAC,SAAS,GAAG,eAAe,GAAG,EAAE,CA2C1E,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,eACP,SAAS,eAAe,CAAC,CAAC,CAAC,KACnC,MAAM,KAAK,CACZ,KAAK,EACL,QAAQ,GAAG,SAAS,cAAc,EAClC,YAAY,GAAG,OAAO,SAAS,GAAG,eAAe,GAAG,UAAU,GAAG,IAAI,GAAG,CAAC,CACrC,CAAA"} |
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| import * as Client from "@effect/sql/SqlClient"; | ||
| import { SqlError } from "@effect/sql/SqlError"; | ||
| import * as Statement from "@effect/sql/Statement"; | ||
| import * as Otel from "@opentelemetry/semantic-conventions"; | ||
| import { Database } from "bun:sqlite"; | ||
| import * as Config from "effect/Config"; | ||
| import * as Context from "effect/Context"; | ||
| import * as Effect from "effect/Effect"; | ||
| import { identity } from "effect/Function"; | ||
| import * as Layer from "effect/Layer"; | ||
| import * as Scope from "effect/Scope"; | ||
| /** | ||
| * @category type ids | ||
| * @since 1.0.0 | ||
| */ | ||
| export const TypeId = /*#__PURE__*/Symbol.for("@effect/sql-sqlite-bun/SqliteClient"); | ||
| /** | ||
| * @category tags | ||
| * @since 1.0.0 | ||
| */ | ||
| export const SqliteClient = /*#__PURE__*/Context.GenericTag("@effect/sql-sqlite-bun/Client"); | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export const make = options => Effect.gen(function* (_) { | ||
| const compiler = Statement.makeCompilerSqlite(options.transformQueryNames); | ||
| const transformRows = Statement.defaultTransforms(options.transformResultNames).array; | ||
| const makeConnection = Effect.gen(function* (_) { | ||
| const db = new Database(options.filename, { | ||
| readonly: options.readonly, | ||
| readwrite: options.readwrite ?? true, | ||
| create: options.create ?? true | ||
| }); | ||
| yield* _(Effect.addFinalizer(() => Effect.sync(() => db.close()))); | ||
| if (options.disableWAL !== true) { | ||
| db.run("PRAGMA journal_mode = WAL;"); | ||
| } | ||
| const run = (sql, params = []) => Effect.try({ | ||
| try: () => db.query(sql).all(...params), | ||
| catch: error => new SqlError({ | ||
| error | ||
| }) | ||
| }); | ||
| const runTransform = options.transformResultNames ? (sql, params) => Effect.map(run(sql, params), transformRows) : run; | ||
| const runValues = (sql, params = []) => Effect.try({ | ||
| try: () => db.query(sql).values(...params), | ||
| catch: error => new SqlError({ | ||
| error | ||
| }) | ||
| }); | ||
| return identity({ | ||
| execute(sql, params) { | ||
| return runTransform(sql, params); | ||
| }, | ||
| executeValues(sql, params) { | ||
| return runValues(sql, params); | ||
| }, | ||
| executeWithoutTransform(sql, params) { | ||
| return run(sql, params); | ||
| }, | ||
| executeRaw(sql, params) { | ||
| return runTransform(sql, params); | ||
| }, | ||
| executeStream(_sql, _params) { | ||
| return Effect.dieMessage("executeStream not implemented"); | ||
| }, | ||
| export: Effect.try({ | ||
| try: () => db.serialize(), | ||
| catch: error => new SqlError({ | ||
| error | ||
| }) | ||
| }), | ||
| loadExtension: path => Effect.try({ | ||
| try: () => db.loadExtension(path), | ||
| catch: error => new SqlError({ | ||
| error | ||
| }) | ||
| }) | ||
| }); | ||
| }); | ||
| const semaphore = yield* _(Effect.makeSemaphore(1)); | ||
| const connection = yield* _(makeConnection); | ||
| const acquirer = semaphore.withPermits(1)(Effect.succeed(connection)); | ||
| const transactionAcquirer = Effect.uninterruptibleMask(restore => Effect.as(Effect.zipRight(restore(semaphore.take(1)), Effect.tap(Effect.scope, scope => Scope.addFinalizer(scope, semaphore.release(1)))), connection)); | ||
| return Object.assign(Client.make({ | ||
| acquirer, | ||
| compiler, | ||
| transactionAcquirer, | ||
| spanAttributes: [...(options.spanAttributes ? Object.entries(options.spanAttributes) : []), [Otel.SEMATTRS_DB_SYSTEM, Otel.DBSYSTEMVALUES_SQLITE]] | ||
| }), { | ||
| [TypeId]: TypeId, | ||
| config: options, | ||
| export: Effect.flatMap(acquirer, _ => _.export), | ||
| loadExtension: path => Effect.flatMap(acquirer, _ => _.loadExtension(path)) | ||
| }); | ||
| }); | ||
| /** | ||
| * @category layers | ||
| * @since 1.0.0 | ||
| */ | ||
| export const layer = config => Layer.scopedContext(Config.unwrap(config).pipe(Effect.flatMap(make), Effect.map(client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client))))); | ||
| //# sourceMappingURL=SqliteClient.js.map |
| {"version":3,"file":"SqliteClient.js","names":["Client","SqlError","Statement","Otel","Database","Config","Context","Effect","identity","Layer","Scope","TypeId","Symbol","for","SqliteClient","GenericTag","make","options","gen","_","compiler","makeCompilerSqlite","transformQueryNames","transformRows","defaultTransforms","transformResultNames","array","makeConnection","db","filename","readonly","readwrite","create","addFinalizer","sync","close","disableWAL","run","sql","params","try","query","all","catch","error","runTransform","map","runValues","values","execute","executeValues","executeWithoutTransform","executeRaw","executeStream","_sql","_params","dieMessage","export","serialize","loadExtension","path","semaphore","makeSemaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","as","zipRight","take","tap","scope","release","Object","assign","spanAttributes","entries","SEMATTRS_DB_SYSTEM","DBSYSTEMVALUES_SQLITE","config","flatMap","layer","scopedContext","unwrap","pipe","client","add","SqlClient"],"sources":["../../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]} |
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| import * as Command from "@effect/platform/Command"; | ||
| import { FileSystem } from "@effect/platform/FileSystem"; | ||
| import { Path } from "@effect/platform/Path"; | ||
| import * as Migrator from "@effect/sql/Migrator"; | ||
| import * as Effect from "effect/Effect"; | ||
| import * as Layer from "effect/Layer"; | ||
| import { SqliteClient } from "./SqliteClient.js"; | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * from "@effect/sql/Migrator"; | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * from "@effect/sql/Migrator/FileSystem"; | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export const run = /*#__PURE__*/Migrator.make({ | ||
| dumpSchema(path, table) { | ||
| const dump = args => Effect.gen(function* (_) { | ||
| const sql = yield* SqliteClient; | ||
| const dump = yield* _(Command.make("sqlite3", sql.config.filename, ...args), Command.string); | ||
| return dump.replace(/^create table sqlite_sequence\(.*$/im, "").replace(/\n{2,}/gm, "\n\n").trim(); | ||
| }).pipe(Effect.mapError(error => new Migrator.MigrationError({ | ||
| reason: "failed", | ||
| message: error.message | ||
| }))); | ||
| const dumpSchema = dump([".schema"]); | ||
| const dumpMigrations = dump(["--cmd", `.mode insert ${table}`, `select * from ${table}`]); | ||
| const dumpAll = Effect.map(Effect.all([dumpSchema, dumpMigrations], { | ||
| concurrency: 2 | ||
| }), ([schema, migrations]) => schema + "\n\n" + migrations); | ||
| const dumpFile = file => Effect.gen(function* (_) { | ||
| const fs = yield* _(FileSystem); | ||
| const path = yield* _(Path); | ||
| const dump = yield* _(dumpAll); | ||
| yield* _(fs.makeDirectory(path.dirname(file), { | ||
| recursive: true | ||
| })); | ||
| yield* _(fs.writeFileString(file, dump)); | ||
| }).pipe(Effect.mapError(error => new Migrator.MigrationError({ | ||
| reason: "failed", | ||
| message: error.message | ||
| }))); | ||
| return dumpFile(path); | ||
| } | ||
| }); | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export const layer = options => Layer.effectDiscard(run(options)); | ||
| //# sourceMappingURL=SqliteMigrator.js.map |
| {"version":3,"file":"SqliteMigrator.js","names":["Command","FileSystem","Path","Migrator","Effect","Layer","SqliteClient","run","make","dumpSchema","path","table","dump","args","gen","_","sql","config","filename","string","replace","trim","pipe","mapError","error","MigrationError","reason","message","dumpMigrations","dumpAll","map","all","concurrency","schema","migrations","dumpFile","file","fs","makeDirectory","dirname","recursive","writeFileString","layer","options","effectDiscard"],"sources":["../../src/SqliteMigrator.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,0BAA0B;AAEnD,SAASC,UAAU,QAAQ,6BAA6B;AACxD,SAASC,IAAI,QAAQ,uBAAuB;AAC5C,OAAO,KAAKC,QAAQ,MAAM,sBAAsB;AAGhD,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,YAAY,QAAQ,mBAAmB;AAEhD;;;AAGA,cAAc,sBAAsB;AAEpC;;;AAGA,cAAc,iCAAiC;AAE/C;;;;AAIA,OAAO,MAAMC,GAAG,gBAMZJ,QAAQ,CAACK,IAAI,CAAC;EAChBC,UAAUA,CAACC,IAAI,EAAEC,KAAK;IACpB,MAAMC,IAAI,GAAIC,IAAmB,IAC/BT,MAAM,CAACU,GAAG,CAAC,WAAUC,CAAC;MACpB,MAAMC,GAAG,GAAG,OAAOV,YAAY;MAC/B,MAAMM,IAAI,GAAG,OAAOG,CAAC,CACnBf,OAAO,CAACQ,IAAI,CAAC,SAAS,EAAGQ,GAAoB,CAACC,MAAM,CAACC,QAAQ,EAAE,GAAGL,IAAI,CAAC,EACvEb,OAAO,CAACmB,MAAM,CACf;MACD,OAAOP,IAAI,CAACQ,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAC5DA,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAC3BC,IAAI,EAAE;IACX,CAAC,CAAC,CAACC,IAAI,CACLlB,MAAM,CAACmB,QAAQ,CAAEC,KAAK,IAAK,IAAIrB,QAAQ,CAACsB,cAAc,CAAC;MAAEC,MAAM,EAAE,QAAQ;MAAEC,OAAO,EAAEH,KAAK,CAACG;IAAO,CAAE,CAAC,CAAC,CACtG;IAEH,MAAMlB,UAAU,GAAGG,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;IAEpC,MAAMgB,cAAc,GAAGhB,IAAI,CAAC,CAC1B,OAAO,EACP,gBAAgBD,KAAK,EAAE,EACvB,iBAAiBA,KAAK,EAAE,CACzB,CAAC;IAEF,MAAMkB,OAAO,GAAGzB,MAAM,CAAC0B,GAAG,CACxB1B,MAAM,CAAC2B,GAAG,CAAC,CAACtB,UAAU,EAAEmB,cAAc,CAAC,EAAE;MAAEI,WAAW,EAAE;IAAC,CAAE,CAAC,EAC5D,CAAC,CAACC,MAAM,EAAEC,UAAU,CAAC,KAAKD,MAAM,GAAG,MAAM,GAAGC,UAAU,CACvD;IAED,MAAMC,QAAQ,GAAIC,IAAY,IAC5BhC,MAAM,CAACU,GAAG,CAAC,WAAUC,CAAC;MACpB,MAAMsB,EAAE,GAAG,OAAOtB,CAAC,CAACd,UAAU,CAAC;MAC/B,MAAMS,IAAI,GAAG,OAAOK,CAAC,CAACb,IAAI,CAAC;MAC3B,MAAMU,IAAI,GAAG,OAAOG,CAAC,CAACc,OAAO,CAAC;MAC9B,OAAOd,CAAC,CAACsB,EAAE,CAACC,aAAa,CAAC5B,IAAI,CAAC6B,OAAO,CAACH,IAAI,CAAC,EAAE;QAAEI,SAAS,EAAE;MAAI,CAAE,CAAC,CAAC;MACnE,OAAOzB,CAAC,CAACsB,EAAE,CAACI,eAAe,CAACL,IAAI,EAAExB,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAACU,IAAI,CACLlB,MAAM,CAACmB,QAAQ,CAAEC,KAAK,IAAK,IAAIrB,QAAQ,CAACsB,cAAc,CAAC;MAAEC,MAAM,EAAE,QAAQ;MAAEC,OAAO,EAAEH,KAAK,CAACG;IAAO,CAAE,CAAC,CAAC,CACtG;IAEH,OAAOQ,QAAQ,CAACzB,IAAI,CAAC;EACvB;CACD,CAAC;AAEF;;;;AAIA,OAAO,MAAMgC,KAAK,GAChBC,OAAoC,IAKjCtC,KAAK,CAACuC,aAAa,CAACrC,GAAG,CAACoC,OAAO,CAAC,CAAC","ignoreList":[]} |
| { | ||
| "main": "../dist/cjs/SqliteClient.js", | ||
| "module": "../dist/esm/SqliteClient.js", | ||
| "types": "../dist/dts/SqliteClient.d.ts", | ||
| "sideEffects": [] | ||
| } |
| { | ||
| "main": "../dist/cjs/SqliteMigrator.js", | ||
| "module": "../dist/esm/SqliteMigrator.js", | ||
| "types": "../dist/dts/SqliteMigrator.d.ts", | ||
| "sideEffects": [] | ||
| } |
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| import * as Client from "@effect/sql/SqlClient" | ||
| import type { Connection } from "@effect/sql/SqlConnection" | ||
| import { SqlError } from "@effect/sql/SqlError" | ||
| import * as Statement from "@effect/sql/Statement" | ||
| import * as Otel from "@opentelemetry/semantic-conventions" | ||
| import { Database } from "bun:sqlite" | ||
| import * as Config from "effect/Config" | ||
| import type { ConfigError } from "effect/ConfigError" | ||
| import * as Context from "effect/Context" | ||
| import * as Effect from "effect/Effect" | ||
| import { identity } from "effect/Function" | ||
| import * as Layer from "effect/Layer" | ||
| import * as Scope from "effect/Scope" | ||
| /** | ||
| * @category type ids | ||
| * @since 1.0.0 | ||
| */ | ||
| export const TypeId: unique symbol = Symbol.for("@effect/sql-sqlite-bun/SqliteClient") | ||
| /** | ||
| * @category type ids | ||
| * @since 1.0.0 | ||
| */ | ||
| export type TypeId = typeof TypeId | ||
| /** | ||
| * @category models | ||
| * @since 1.0.0 | ||
| */ | ||
| export interface SqliteClient extends Client.SqlClient { | ||
| readonly [TypeId]: TypeId | ||
| readonly config: SqliteClientConfig | ||
| readonly export: Effect.Effect<Uint8Array, SqlError> | ||
| readonly loadExtension: (path: string) => Effect.Effect<void, SqlError> | ||
| /** Not supported in sqlite */ | ||
| readonly updateValues: never | ||
| } | ||
| /** | ||
| * @category tags | ||
| * @since 1.0.0 | ||
| */ | ||
| export const SqliteClient = Context.GenericTag<SqliteClient>("@effect/sql-sqlite-bun/Client") | ||
| /** | ||
| * @category models | ||
| * @since 1.0.0 | ||
| */ | ||
| export interface SqliteClientConfig { | ||
| readonly filename: string | ||
| readonly readonly?: boolean | undefined | ||
| readonly create?: boolean | undefined | ||
| readonly readwrite?: boolean | undefined | ||
| readonly disableWAL?: boolean | undefined | ||
| readonly spanAttributes?: Record<string, unknown> | undefined | ||
| readonly transformResultNames?: ((str: string) => string) | undefined | ||
| readonly transformQueryNames?: ((str: string) => string) | undefined | ||
| } | ||
| interface SqliteConnection extends Connection { | ||
| readonly export: Effect.Effect<Uint8Array, SqlError> | ||
| readonly loadExtension: (path: string) => Effect.Effect<void, SqlError> | ||
| } | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export const make = ( | ||
| options: SqliteClientConfig | ||
| ): Effect.Effect<SqliteClient, never, Scope.Scope> => | ||
| Effect.gen(function*(_) { | ||
| const compiler = Statement.makeCompilerSqlite(options.transformQueryNames) | ||
| const transformRows = Statement.defaultTransforms( | ||
| options.transformResultNames! | ||
| ).array | ||
| const makeConnection = Effect.gen(function*(_) { | ||
| const db = new Database(options.filename, { | ||
| readonly: options.readonly, | ||
| readwrite: options.readwrite ?? true, | ||
| create: options.create ?? true | ||
| } as any) | ||
| yield* _(Effect.addFinalizer(() => Effect.sync(() => db.close()))) | ||
| if (options.disableWAL !== true) { | ||
| db.run("PRAGMA journal_mode = WAL;") | ||
| } | ||
| const run = ( | ||
| sql: string, | ||
| params: ReadonlyArray<Statement.Primitive> = [] | ||
| ) => | ||
| Effect.try({ | ||
| try: () => db.query(sql).all(...(params as any)) as Array<any>, | ||
| catch: (error) => new SqlError({ error }) | ||
| }) | ||
| const runTransform = options.transformResultNames | ||
| ? (sql: string, params?: ReadonlyArray<Statement.Primitive>) => Effect.map(run(sql, params), transformRows) | ||
| : run | ||
| const runValues = ( | ||
| sql: string, | ||
| params: ReadonlyArray<Statement.Primitive> = [] | ||
| ) => | ||
| Effect.try({ | ||
| try: () => db.query(sql).values(...(params as any)) as Array<any>, | ||
| catch: (error) => new SqlError({ error }) | ||
| }) | ||
| return identity<SqliteConnection>({ | ||
| execute(sql, params) { | ||
| return runTransform(sql, params) | ||
| }, | ||
| executeValues(sql, params) { | ||
| return runValues(sql, params) | ||
| }, | ||
| executeWithoutTransform(sql, params) { | ||
| return run(sql, params) | ||
| }, | ||
| executeRaw(sql, params) { | ||
| return runTransform(sql, params) | ||
| }, | ||
| executeStream(_sql, _params) { | ||
| return Effect.dieMessage("executeStream not implemented") | ||
| }, | ||
| export: Effect.try({ | ||
| try: () => db.serialize(), | ||
| catch: (error) => new SqlError({ error }) | ||
| }), | ||
| loadExtension: (path) => | ||
| Effect.try({ | ||
| try: () => db.loadExtension(path), | ||
| catch: (error) => new SqlError({ error }) | ||
| }) | ||
| }) | ||
| }) | ||
| const semaphore = yield* _(Effect.makeSemaphore(1)) | ||
| const connection = yield* _(makeConnection) | ||
| const acquirer = semaphore.withPermits(1)(Effect.succeed(connection)) | ||
| const transactionAcquirer = Effect.uninterruptibleMask((restore) => | ||
| Effect.as( | ||
| Effect.zipRight( | ||
| restore(semaphore.take(1)), | ||
| Effect.tap( | ||
| Effect.scope, | ||
| (scope) => Scope.addFinalizer(scope, semaphore.release(1)) | ||
| ) | ||
| ), | ||
| connection | ||
| ) | ||
| ) | ||
| return Object.assign( | ||
| Client.make({ | ||
| acquirer, | ||
| compiler, | ||
| transactionAcquirer, | ||
| spanAttributes: [ | ||
| ...(options.spanAttributes ? Object.entries(options.spanAttributes) : []), | ||
| [Otel.SEMATTRS_DB_SYSTEM, Otel.DBSYSTEMVALUES_SQLITE] | ||
| ] | ||
| }) as SqliteClient, | ||
| { | ||
| [TypeId]: TypeId as TypeId, | ||
| config: options, | ||
| export: Effect.flatMap(acquirer, (_) => _.export), | ||
| loadExtension: (path: string) => Effect.flatMap(acquirer, (_) => _.loadExtension(path)) | ||
| } | ||
| ) | ||
| }) | ||
| /** | ||
| * @category layers | ||
| * @since 1.0.0 | ||
| */ | ||
| export const layer = ( | ||
| config: Config.Config.Wrap<SqliteClientConfig> | ||
| ): Layer.Layer<SqliteClient | Client.SqlClient, ConfigError> => | ||
| Layer.scopedContext( | ||
| Config.unwrap(config).pipe( | ||
| Effect.flatMap(make), | ||
| Effect.map((client) => | ||
| Context.make(SqliteClient, client).pipe( | ||
| Context.add(Client.SqlClient, client) | ||
| ) | ||
| ) | ||
| ) | ||
| ) |
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| import * as Command from "@effect/platform/Command" | ||
| import type { CommandExecutor } from "@effect/platform/CommandExecutor" | ||
| import { FileSystem } from "@effect/platform/FileSystem" | ||
| import { Path } from "@effect/platform/Path" | ||
| import * as Migrator from "@effect/sql/Migrator" | ||
| import type * as Client from "@effect/sql/SqlClient" | ||
| import type { SqlError } from "@effect/sql/SqlError" | ||
| import * as Effect from "effect/Effect" | ||
| import * as Layer from "effect/Layer" | ||
| import { SqliteClient } from "./SqliteClient.js" | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * from "@effect/sql/Migrator" | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * from "@effect/sql/Migrator/FileSystem" | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export const run: <R2 = never>( | ||
| options: Migrator.MigratorOptions<R2> | ||
| ) => Effect.Effect< | ||
| ReadonlyArray<readonly [id: number, name: string]>, | ||
| Migrator.MigrationError | SqlError, | ||
| FileSystem | Path | SqliteClient | Client.SqlClient | CommandExecutor | R2 | ||
| > = Migrator.make({ | ||
| dumpSchema(path, table) { | ||
| const dump = (args: Array<string>) => | ||
| Effect.gen(function*(_) { | ||
| const sql = yield* SqliteClient | ||
| const dump = yield* _( | ||
| Command.make("sqlite3", (sql as SqliteClient).config.filename, ...args), | ||
| Command.string | ||
| ) | ||
| return dump.replace(/^create table sqlite_sequence\(.*$/im, "") | ||
| .replace(/\n{2,}/gm, "\n\n") | ||
| .trim() | ||
| }).pipe( | ||
| Effect.mapError((error) => new Migrator.MigrationError({ reason: "failed", message: error.message })) | ||
| ) | ||
| const dumpSchema = dump([".schema"]) | ||
| const dumpMigrations = dump([ | ||
| "--cmd", | ||
| `.mode insert ${table}`, | ||
| `select * from ${table}` | ||
| ]) | ||
| const dumpAll = Effect.map( | ||
| Effect.all([dumpSchema, dumpMigrations], { concurrency: 2 }), | ||
| ([schema, migrations]) => schema + "\n\n" + migrations | ||
| ) | ||
| const dumpFile = (file: string) => | ||
| Effect.gen(function*(_) { | ||
| const fs = yield* _(FileSystem) | ||
| const path = yield* _(Path) | ||
| const dump = yield* _(dumpAll) | ||
| yield* _(fs.makeDirectory(path.dirname(file), { recursive: true })) | ||
| yield* _(fs.writeFileString(file, dump)) | ||
| }).pipe( | ||
| Effect.mapError((error) => new Migrator.MigrationError({ reason: "failed", message: error.message })) | ||
| ) | ||
| return dumpFile(path) | ||
| } | ||
| }) | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export const layer = <R>( | ||
| options: Migrator.MigratorOptions<R> | ||
| ): Layer.Layer< | ||
| never, | ||
| SqlError | Migrator.MigrationError, | ||
| SqliteClient | Client.SqlClient | CommandExecutor | FileSystem | Path | R | ||
| > => Layer.effectDiscard(run(options)) |
@@ -6,7 +6,7 @@ "use strict"; | ||
| }); | ||
| exports.migrator = exports.client = void 0; | ||
| var _client = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Client.js")); | ||
| exports.client = _client; | ||
| var _migrator = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Migrator.js")); | ||
| exports.migrator = _migrator; | ||
| exports.SqliteMigrator = exports.SqliteClient = void 0; | ||
| var _SqliteClient = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./SqliteClient.js")); | ||
| exports.SqliteClient = _SqliteClient; | ||
| var _SqliteMigrator = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./SqliteMigrator.js")); | ||
| exports.SqliteMigrator = _SqliteMigrator; | ||
| function _getRequireWildcardCache(e) { | ||
@@ -13,0 +13,0 @@ if ("function" != typeof WeakMap) return null; |
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * as SqliteClient from "./SqliteClient.js"; | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * as client from "./Client.js"; | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * as migrator from "./Migrator.js"; | ||
| export * as SqliteMigrator from "./SqliteMigrator.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA"} |
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * as SqliteClient from "./SqliteClient.js"; | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * as client from "./Client.js"; | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * as migrator from "./Migrator.js"; | ||
| export * as SqliteMigrator from "./SqliteMigrator.js"; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","names":["client","migrator"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;;;AAGA,OAAO,KAAKA,MAAM,MAAM,aAAa;AAErC;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe","ignoreList":[]} | ||
| {"version":3,"file":"index.js","names":["SqliteClient","SqliteMigrator"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB","ignoreList":[]} |
+16
-16
| { | ||
| "name": "@effect/sql-sqlite-bun", | ||
| "version": "0.0.0-snapshot-d173a21c87b057e0151a0df4c89e7b7420ff7a99", | ||
| "version": "0.0.0-snapshot-d33d8b050b8e3c87dcde9587083e6c1cf733f72b", | ||
| "description": "A SQLite toolkit for Effect", | ||
@@ -16,5 +16,5 @@ "license": "MIT", | ||
| "peerDependencies": { | ||
| "@effect/platform": "^0.0.0-snapshot-d173a21c87b057e0151a0df4c89e7b7420ff7a99", | ||
| "@effect/sql": "^0.0.0-snapshot-d173a21c87b057e0151a0df4c89e7b7420ff7a99", | ||
| "effect": "^0.0.0-snapshot-d173a21c87b057e0151a0df4c89e7b7420ff7a99" | ||
| "@effect/platform": "^0.0.0-snapshot-d33d8b050b8e3c87dcde9587083e6c1cf733f72b", | ||
| "@effect/sql": "^0.0.0-snapshot-d33d8b050b8e3c87dcde9587083e6c1cf733f72b", | ||
| "effect": "^0.0.0-snapshot-d33d8b050b8e3c87dcde9587083e6c1cf733f72b" | ||
| }, | ||
@@ -34,11 +34,11 @@ "publishConfig": { | ||
| }, | ||
| "./Client": { | ||
| "types": "./dist/dts/Client.d.ts", | ||
| "import": "./dist/esm/Client.js", | ||
| "default": "./dist/cjs/Client.js" | ||
| "./SqliteClient": { | ||
| "types": "./dist/dts/SqliteClient.d.ts", | ||
| "import": "./dist/esm/SqliteClient.js", | ||
| "default": "./dist/cjs/SqliteClient.js" | ||
| }, | ||
| "./Migrator": { | ||
| "types": "./dist/dts/Migrator.d.ts", | ||
| "import": "./dist/esm/Migrator.js", | ||
| "default": "./dist/cjs/Migrator.js" | ||
| "./SqliteMigrator": { | ||
| "types": "./dist/dts/SqliteMigrator.d.ts", | ||
| "import": "./dist/esm/SqliteMigrator.js", | ||
| "default": "./dist/cjs/SqliteMigrator.js" | ||
| } | ||
@@ -48,7 +48,7 @@ }, | ||
| "*": { | ||
| "Client": [ | ||
| "./dist/dts/Client.d.ts" | ||
| "SqliteClient": [ | ||
| "./dist/dts/SqliteClient.d.ts" | ||
| ], | ||
| "Migrator": [ | ||
| "./dist/dts/Migrator.d.ts" | ||
| "SqliteMigrator": [ | ||
| "./dist/dts/SqliteMigrator.d.ts" | ||
| ] | ||
@@ -55,0 +55,0 @@ } |
+2
-6
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * as SqliteClient from "./SqliteClient.js" | ||
@@ -8,7 +9,2 @@ /** | ||
| */ | ||
| export * as client from "./Client.js" | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * as migrator from "./Migrator.js" | ||
| export * as SqliteMigrator from "./SqliteMigrator.js" |
| { | ||
| "main": "../dist/cjs/Client.js", | ||
| "module": "../dist/esm/Client.js", | ||
| "types": "../dist/dts/Client.d.ts", | ||
| "sideEffects": [] | ||
| } |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| exports.make = exports.layer = exports.TypeId = exports.SqliteClient = void 0; | ||
| var Client = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql/Client")); | ||
| var _Error = /*#__PURE__*/require("@effect/sql/Error"); | ||
| var Statement = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql/Statement")); | ||
| var Otel = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@opentelemetry/semantic-conventions")); | ||
| var _bunSqlite = /*#__PURE__*/require("bun:sqlite"); | ||
| var Config = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Config")); | ||
| var Context = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Context")); | ||
| var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect")); | ||
| var _Function = /*#__PURE__*/require("effect/Function"); | ||
| var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Layer")); | ||
| var Scope = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Scope")); | ||
| function _getRequireWildcardCache(e) { | ||
| if ("function" != typeof WeakMap) return null; | ||
| var r = new WeakMap(), | ||
| t = new WeakMap(); | ||
| return (_getRequireWildcardCache = function (e) { | ||
| return e ? t : r; | ||
| })(e); | ||
| } | ||
| function _interopRequireWildcard(e, r) { | ||
| if (!r && e && e.__esModule) return e; | ||
| if (null === e || "object" != typeof e && "function" != typeof e) return { | ||
| default: e | ||
| }; | ||
| var t = _getRequireWildcardCache(r); | ||
| if (t && t.has(e)) return t.get(e); | ||
| var n = { | ||
| __proto__: null | ||
| }, | ||
| a = Object.defineProperty && Object.getOwnPropertyDescriptor; | ||
| for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { | ||
| var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; | ||
| i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; | ||
| } | ||
| return n.default = e, t && t.set(e, n), n; | ||
| } | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| /** | ||
| * @category type ids | ||
| * @since 1.0.0 | ||
| */ | ||
| const TypeId = exports.TypeId = /*#__PURE__*/Symbol.for("@effect/sql-sqlite-bun/Client"); | ||
| /** | ||
| * @category tags | ||
| * @since 1.0.0 | ||
| */ | ||
| const SqliteClient = exports.SqliteClient = /*#__PURE__*/Context.GenericTag("@effect/sql-sqlite-bun/Client"); | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| const make = options => Effect.gen(function* (_) { | ||
| const compiler = Statement.makeCompilerSqlite(options.transformQueryNames); | ||
| const transformRows = Statement.defaultTransforms(options.transformResultNames).array; | ||
| const makeConnection = Effect.gen(function* (_) { | ||
| const db = new _bunSqlite.Database(options.filename, { | ||
| readonly: options.readonly, | ||
| readwrite: options.readwrite ?? true, | ||
| create: options.create ?? true | ||
| }); | ||
| yield* _(Effect.addFinalizer(() => Effect.sync(() => db.close()))); | ||
| if (options.disableWAL !== true) { | ||
| db.run("PRAGMA journal_mode = WAL;"); | ||
| } | ||
| const run = (sql, params = []) => Effect.try({ | ||
| try: () => db.query(sql).all(...params), | ||
| catch: error => new _Error.SqlError({ | ||
| error | ||
| }) | ||
| }); | ||
| const runTransform = options.transformResultNames ? (sql, params) => Effect.map(run(sql, params), transformRows) : run; | ||
| const runValues = (sql, params = []) => Effect.try({ | ||
| try: () => db.query(sql).values(...params), | ||
| catch: error => new _Error.SqlError({ | ||
| error | ||
| }) | ||
| }); | ||
| return (0, _Function.identity)({ | ||
| execute(sql, params) { | ||
| return runTransform(sql, params); | ||
| }, | ||
| executeValues(sql, params) { | ||
| return runValues(sql, params); | ||
| }, | ||
| executeWithoutTransform(sql, params) { | ||
| return run(sql, params); | ||
| }, | ||
| executeRaw(sql, params) { | ||
| return runTransform(sql, params); | ||
| }, | ||
| executeStream(_sql, _params) { | ||
| return Effect.dieMessage("executeStream not implemented"); | ||
| }, | ||
| export: Effect.try({ | ||
| try: () => db.serialize(), | ||
| catch: error => new _Error.SqlError({ | ||
| error | ||
| }) | ||
| }), | ||
| loadExtension: path => Effect.try({ | ||
| try: () => db.loadExtension(path), | ||
| catch: error => new _Error.SqlError({ | ||
| error | ||
| }) | ||
| }) | ||
| }); | ||
| }); | ||
| const semaphore = yield* _(Effect.makeSemaphore(1)); | ||
| const connection = yield* _(makeConnection); | ||
| const acquirer = semaphore.withPermits(1)(Effect.succeed(connection)); | ||
| const transactionAcquirer = Effect.uninterruptibleMask(restore => Effect.as(Effect.zipRight(restore(semaphore.take(1)), Effect.tap(Effect.scope, scope => Scope.addFinalizer(scope, semaphore.release(1)))), connection)); | ||
| return Object.assign(Client.make({ | ||
| acquirer, | ||
| compiler, | ||
| transactionAcquirer, | ||
| spanAttributes: [...(options.spanAttributes ? Object.entries(options.spanAttributes) : []), [Otel.SEMATTRS_DB_SYSTEM, Otel.DBSYSTEMVALUES_SQLITE]] | ||
| }), { | ||
| [TypeId]: TypeId, | ||
| config: options, | ||
| export: Effect.flatMap(acquirer, _ => _.export), | ||
| loadExtension: path => Effect.flatMap(acquirer, _ => _.loadExtension(path)) | ||
| }); | ||
| }); | ||
| /** | ||
| * @category layers | ||
| * @since 1.0.0 | ||
| */ | ||
| exports.make = make; | ||
| const layer = config => Layer.scopedContext(Config.unwrap(config).pipe(Effect.flatMap(make), Effect.map(client => Context.make(SqliteClient, client).pipe(Context.add(Client.Client, client))))); | ||
| exports.layer = layer; | ||
| //# sourceMappingURL=Client.js.map |
| {"version":3,"file":"Client.js","names":["Client","_interopRequireWildcard","require","_Error","Statement","Otel","_bunSqlite","Config","Context","Effect","_Function","Layer","Scope","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TypeId","exports","Symbol","for","SqliteClient","GenericTag","make","options","gen","_","compiler","makeCompilerSqlite","transformQueryNames","transformRows","defaultTransforms","transformResultNames","array","makeConnection","db","Database","filename","readonly","readwrite","create","addFinalizer","sync","close","disableWAL","run","sql","params","try","query","all","catch","error","SqlError","runTransform","map","runValues","values","identity","execute","executeValues","executeWithoutTransform","executeRaw","executeStream","_sql","_params","dieMessage","export","serialize","loadExtension","path","semaphore","makeSemaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","as","zipRight","take","tap","scope","release","assign","spanAttributes","entries","SEMATTRS_DB_SYSTEM","DBSYSTEMVALUES_SQLITE","config","flatMap","layer","scopedContext","unwrap","pipe","client","add"],"sources":["../../src/Client.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,MAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAEA,IAAAC,MAAA,gBAAAD,OAAA;AACA,IAAAE,SAAA,gBAAAH,uBAAA,eAAAC,OAAA;AACA,IAAAG,IAAA,gBAAAJ,uBAAA,eAAAC,OAAA;AACA,IAAAI,UAAA,gBAAAJ,OAAA;AACA,IAAAK,MAAA,gBAAAN,uBAAA,eAAAC,OAAA;AAEA,IAAAM,OAAA,gBAAAP,uBAAA,eAAAC,OAAA;AACA,IAAAO,MAAA,gBAAAR,uBAAA,eAAAC,OAAA;AACA,IAAAQ,SAAA,gBAAAR,OAAA;AACA,IAAAS,KAAA,gBAAAV,uBAAA,eAAAC,OAAA;AACA,IAAAU,KAAA,gBAAAX,uBAAA,eAAAC,OAAA;AAAqC,SAAAW,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAb,wBAAAa,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA;EAAA,IAAAQ,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA;IAAA,IAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA;IAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA;AAfrC;;;;AAiBA;;;;AAIO,MAAMW,MAAM,GAAAC,OAAA,CAAAD,MAAA,gBAAkBE,MAAM,CAACC,GAAG,CAAC,+BAA+B,CAAC;AAsBhF;;;;AAIO,MAAMC,YAAY,GAAAH,OAAA,CAAAG,YAAA,gBAAG7B,OAAO,CAAC8B,UAAU,CAAe,+BAA+B,CAAC;AAwB7F;;;;AAIO,MAAMC,IAAI,GACfC,OAA2B,IAE3B/B,MAAM,CAACgC,GAAG,CAAC,WAAUC,CAAC;EACpB,MAAMC,QAAQ,GAAGvC,SAAS,CAACwC,kBAAkB,CAACJ,OAAO,CAACK,mBAAmB,CAAC;EAC1E,MAAMC,aAAa,GAAG1C,SAAS,CAAC2C,iBAAiB,CAC/CP,OAAO,CAACQ,oBAAqB,CAC9B,CAACC,KAAK;EAEP,MAAMC,cAAc,GAAGzC,MAAM,CAACgC,GAAG,CAAC,WAAUC,CAAC;IAC3C,MAAMS,EAAE,GAAG,IAAI7C,UAAA,CAAA8C,QAAQ,CAACZ,OAAO,CAACa,QAAQ,EAAE;MACxCC,QAAQ,EAAEd,OAAO,CAACc,QAAQ;MAC1BC,SAAS,EAAEf,OAAO,CAACe,SAAS,IAAI,IAAI;MACpCC,MAAM,EAAEhB,OAAO,CAACgB,MAAM,IAAI;KACpB,CAAC;IACT,OAAOd,CAAC,CAACjC,MAAM,CAACgD,YAAY,CAAC,MAAMhD,MAAM,CAACiD,IAAI,CAAC,MAAMP,EAAE,CAACQ,KAAK,EAAE,CAAC,CAAC,CAAC;IAElE,IAAInB,OAAO,CAACoB,UAAU,KAAK,IAAI,EAAE;MAC/BT,EAAE,CAACU,GAAG,CAAC,4BAA4B,CAAC;IACtC;IAEA,MAAMA,GAAG,GAAGA,CACVC,GAAW,EACXC,MAAA,GAA6C,EAAE,KAE/CtD,MAAM,CAACuD,GAAG,CAAC;MACTA,GAAG,EAAEA,CAAA,KAAMb,EAAE,CAACc,KAAK,CAACH,GAAG,CAAC,CAACI,GAAG,CAAC,GAAIH,MAAc,CAAe;MAC9DI,KAAK,EAAGC,KAAK,IAAK,IAAIjE,MAAA,CAAAkE,QAAQ,CAAC;QAAED;MAAK,CAAE;KACzC,CAAC;IAEJ,MAAME,YAAY,GAAG9B,OAAO,CAACQ,oBAAoB,GAC7C,CAACc,GAAW,EAAEC,MAA2C,KAAKtD,MAAM,CAAC8D,GAAG,CAACV,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC,EAAEjB,aAAa,CAAC,GACzGe,GAAG;IAEP,MAAMW,SAAS,GAAGA,CAChBV,GAAW,EACXC,MAAA,GAA6C,EAAE,KAE/CtD,MAAM,CAACuD,GAAG,CAAC;MACTA,GAAG,EAAEA,CAAA,KAAMb,EAAE,CAACc,KAAK,CAACH,GAAG,CAAC,CAACW,MAAM,CAAC,GAAIV,MAAc,CAAe;MACjEI,KAAK,EAAGC,KAAK,IAAK,IAAIjE,MAAA,CAAAkE,QAAQ,CAAC;QAAED;MAAK,CAAE;KACzC,CAAC;IAEJ,OAAO,IAAA1D,SAAA,CAAAgE,QAAQ,EAAmB;MAChCC,OAAOA,CAACb,GAAG,EAAEC,MAAM;QACjB,OAAOO,YAAY,CAACR,GAAG,EAAEC,MAAM,CAAC;MAClC,CAAC;MACDa,aAAaA,CAACd,GAAG,EAAEC,MAAM;QACvB,OAAOS,SAAS,CAACV,GAAG,EAAEC,MAAM,CAAC;MAC/B,CAAC;MACDc,uBAAuBA,CAACf,GAAG,EAAEC,MAAM;QACjC,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC;MACzB,CAAC;MACDe,UAAUA,CAAChB,GAAG,EAAEC,MAAM;QACpB,OAAOO,YAAY,CAACR,GAAG,EAAEC,MAAM,CAAC;MAClC,CAAC;MACDgB,aAAaA,CAACC,IAAI,EAAEC,OAAO;QACzB,OAAOxE,MAAM,CAACyE,UAAU,CAAC,+BAA+B,CAAC;MAC3D,CAAC;MACDC,MAAM,EAAE1E,MAAM,CAACuD,GAAG,CAAC;QACjBA,GAAG,EAAEA,CAAA,KAAMb,EAAE,CAACiC,SAAS,EAAE;QACzBjB,KAAK,EAAGC,KAAK,IAAK,IAAIjE,MAAA,CAAAkE,QAAQ,CAAC;UAAED;QAAK,CAAE;OACzC,CAAC;MACFiB,aAAa,EAAGC,IAAI,IAClB7E,MAAM,CAACuD,GAAG,CAAC;QACTA,GAAG,EAAEA,CAAA,KAAMb,EAAE,CAACkC,aAAa,CAACC,IAAI,CAAC;QACjCnB,KAAK,EAAGC,KAAK,IAAK,IAAIjE,MAAA,CAAAkE,QAAQ,CAAC;UAAED;QAAK,CAAE;OACzC;KACJ,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMmB,SAAS,GAAG,OAAO7C,CAAC,CAACjC,MAAM,CAAC+E,aAAa,CAAC,CAAC,CAAC,CAAC;EACnD,MAAMC,UAAU,GAAG,OAAO/C,CAAC,CAACQ,cAAc,CAAC;EAE3C,MAAMwC,QAAQ,GAAGH,SAAS,CAACI,WAAW,CAAC,CAAC,CAAC,CAAClF,MAAM,CAACmF,OAAO,CAACH,UAAU,CAAC,CAAC;EACrE,MAAMI,mBAAmB,GAAGpF,MAAM,CAACqF,mBAAmB,CAAEC,OAAO,IAC7DtF,MAAM,CAACuF,EAAE,CACPvF,MAAM,CAACwF,QAAQ,CACbF,OAAO,CAACR,SAAS,CAACW,IAAI,CAAC,CAAC,CAAC,CAAC,EAC1BzF,MAAM,CAAC0F,GAAG,CACR1F,MAAM,CAAC2F,KAAK,EACXA,KAAK,IAAKxF,KAAK,CAAC6C,YAAY,CAAC2C,KAAK,EAAEb,SAAS,CAACc,OAAO,CAAC,CAAC,CAAC,CAAC,CAC3D,CACF,EACDZ,UAAU,CACX,CACF;EAED,OAAOhE,MAAM,CAAC6E,MAAM,CAClBtG,MAAM,CAACuC,IAAI,CAAC;IACVmD,QAAQ;IACR/C,QAAQ;IACRkD,mBAAmB;IACnBU,cAAc,EAAE,CACd,IAAI/D,OAAO,CAAC+D,cAAc,GAAG9E,MAAM,CAAC+E,OAAO,CAAChE,OAAO,CAAC+D,cAAc,CAAC,GAAG,EAAE,CAAC,EACzE,CAAClG,IAAI,CAACoG,kBAAkB,EAAEpG,IAAI,CAACqG,qBAAqB,CAAC;GAExD,CAAiB,EAClB;IACE,CAACzE,MAAM,GAAGA,MAAgB;IAC1B0E,MAAM,EAAEnE,OAAO;IACf2C,MAAM,EAAE1E,MAAM,CAACmG,OAAO,CAAClB,QAAQ,EAAGhD,CAAC,IAAKA,CAAC,CAACyC,MAAM,CAAC;IACjDE,aAAa,EAAGC,IAAY,IAAK7E,MAAM,CAACmG,OAAO,CAAClB,QAAQ,EAAGhD,CAAC,IAAKA,CAAC,CAAC2C,aAAa,CAACC,IAAI,CAAC;GACvF,CACF;AACH,CAAC,CAAC;AAEJ;;;;AAAApD,OAAA,CAAAK,IAAA,GAAAA,IAAA;AAIO,MAAMsE,KAAK,GAChBF,MAA8C,IAE9ChG,KAAK,CAACmG,aAAa,CACjBvG,MAAM,CAACwG,MAAM,CAACJ,MAAM,CAAC,CAACK,IAAI,CACxBvG,MAAM,CAACmG,OAAO,CAACrE,IAAI,CAAC,EACpB9B,MAAM,CAAC8D,GAAG,CAAE0C,MAAM,IAChBzG,OAAO,CAAC+B,IAAI,CAACF,YAAY,EAAE4E,MAAM,CAAC,CAACD,IAAI,CACrCxG,OAAO,CAAC0G,GAAG,CAAClH,MAAM,CAACA,MAAM,EAAEiH,MAAM,CAAC,CACnC,CACF,CACF,CACF;AAAA/E,OAAA,CAAA2E,KAAA,GAAAA,KAAA","ignoreList":[]} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| var _exportNames = { | ||
| run: true, | ||
| layer: true | ||
| }; | ||
| exports.run = exports.layer = void 0; | ||
| var Command = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Command")); | ||
| var _FileSystem = /*#__PURE__*/require("@effect/platform/FileSystem"); | ||
| var _Path = /*#__PURE__*/require("@effect/platform/Path"); | ||
| var Migrator = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql/Migrator")); | ||
| Object.keys(Migrator).forEach(function (key) { | ||
| if (key === "default" || key === "__esModule") return; | ||
| if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; | ||
| if (key in exports && exports[key] === Migrator[key]) return; | ||
| Object.defineProperty(exports, key, { | ||
| enumerable: true, | ||
| get: function () { | ||
| return Migrator[key]; | ||
| } | ||
| }); | ||
| }); | ||
| var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect")); | ||
| var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Layer")); | ||
| var _Client = /*#__PURE__*/require("./Client.js"); | ||
| var _FileSystem2 = /*#__PURE__*/require("@effect/sql/Migrator/FileSystem"); | ||
| Object.keys(_FileSystem2).forEach(function (key) { | ||
| if (key === "default" || key === "__esModule") return; | ||
| if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; | ||
| if (key in exports && exports[key] === _FileSystem2[key]) return; | ||
| Object.defineProperty(exports, key, { | ||
| enumerable: true, | ||
| get: function () { | ||
| return _FileSystem2[key]; | ||
| } | ||
| }); | ||
| }); | ||
| function _getRequireWildcardCache(e) { | ||
| if ("function" != typeof WeakMap) return null; | ||
| var r = new WeakMap(), | ||
| t = new WeakMap(); | ||
| return (_getRequireWildcardCache = function (e) { | ||
| return e ? t : r; | ||
| })(e); | ||
| } | ||
| function _interopRequireWildcard(e, r) { | ||
| if (!r && e && e.__esModule) return e; | ||
| if (null === e || "object" != typeof e && "function" != typeof e) return { | ||
| default: e | ||
| }; | ||
| var t = _getRequireWildcardCache(r); | ||
| if (t && t.has(e)) return t.get(e); | ||
| var n = { | ||
| __proto__: null | ||
| }, | ||
| a = Object.defineProperty && Object.getOwnPropertyDescriptor; | ||
| for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { | ||
| var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; | ||
| i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; | ||
| } | ||
| return n.default = e, t && t.set(e, n), n; | ||
| } | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| const run = exports.run = /*#__PURE__*/Migrator.make({ | ||
| dumpSchema(path, table) { | ||
| const dump = args => Effect.gen(function* (_) { | ||
| const sql = yield* _Client.SqliteClient; | ||
| const dump = yield* _(Command.make("sqlite3", sql.config.filename, ...args), Command.string); | ||
| return dump.replace(/^create table sqlite_sequence\(.*$/im, "").replace(/\n{2,}/gm, "\n\n").trim(); | ||
| }).pipe(Effect.mapError(error => new Migrator.MigrationError({ | ||
| reason: "failed", | ||
| message: error.message | ||
| }))); | ||
| const dumpSchema = dump([".schema"]); | ||
| const dumpMigrations = dump(["--cmd", `.mode insert ${table}`, `select * from ${table}`]); | ||
| const dumpAll = Effect.map(Effect.all([dumpSchema, dumpMigrations], { | ||
| concurrency: 2 | ||
| }), ([schema, migrations]) => schema + "\n\n" + migrations); | ||
| const dumpFile = file => Effect.gen(function* (_) { | ||
| const fs = yield* _(_FileSystem.FileSystem); | ||
| const path = yield* _(_Path.Path); | ||
| const dump = yield* _(dumpAll); | ||
| yield* _(fs.makeDirectory(path.dirname(file), { | ||
| recursive: true | ||
| })); | ||
| yield* _(fs.writeFileString(file, dump)); | ||
| }).pipe(Effect.mapError(error => new Migrator.MigrationError({ | ||
| reason: "failed", | ||
| message: error.message | ||
| }))); | ||
| return dumpFile(path); | ||
| } | ||
| }); | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| const layer = options => Layer.effectDiscard(run(options)); | ||
| exports.layer = layer; | ||
| //# sourceMappingURL=Migrator.js.map |
| {"version":3,"file":"Migrator.js","names":["Command","_interopRequireWildcard","require","_FileSystem","_Path","Migrator","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","Effect","Layer","_Client","_FileSystem2","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","n","__proto__","a","getOwnPropertyDescriptor","u","i","set","run","make","dumpSchema","path","table","dump","args","gen","_","sql","SqliteClient","config","filename","string","replace","trim","pipe","mapError","error","MigrationError","reason","message","dumpMigrations","dumpAll","map","all","concurrency","schema","migrations","dumpFile","file","fs","FileSystem","Path","makeDirectory","dirname","recursive","writeFileString","layer","options","effectDiscard"],"sources":["../../src/Migrator.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;AAGA,IAAAA,OAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAEA,IAAAC,WAAA,gBAAAD,OAAA;AACA,IAAAE,KAAA,gBAAAF,OAAA;AAGA,IAAAG,QAAA,gBAAAJ,uBAAA,eAAAC,OAAA;AAQAI,MAAA,CAAAC,IAAA,CAAAF,QAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,QAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,QAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAPA,IAAAS,MAAA,gBAAAjB,uBAAA,eAAAC,OAAA;AACA,IAAAiB,KAAA,gBAAAlB,uBAAA,eAAAC,OAAA;AACA,IAAAkB,OAAA,gBAAAlB,OAAA;AAUA,IAAAmB,YAAA,gBAAAnB,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAc,YAAA,EAAAb,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAY,YAAA,CAAAZ,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,YAAA,CAAAZ,GAAA;IAAA;EAAA;AAAA;AAA+C,SAAAa,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAtB,wBAAAsB,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAT,GAAA,CAAAM,CAAA;EAAA,IAAAO,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAA1B,MAAA,CAAAS,cAAA,IAAAT,MAAA,CAAA2B,wBAAA;EAAA,SAAAC,CAAA,IAAAX,CAAA,oBAAAW,CAAA,OAAAvB,cAAA,CAAAC,IAAA,CAAAW,CAAA,EAAAW,CAAA;IAAA,IAAAC,CAAA,GAAAH,CAAA,GAAA1B,MAAA,CAAA2B,wBAAA,CAAAV,CAAA,EAAAW,CAAA;IAAAC,CAAA,KAAAA,CAAA,CAAAlB,GAAA,IAAAkB,CAAA,CAAAC,GAAA,IAAA9B,MAAA,CAAAS,cAAA,CAAAe,CAAA,EAAAI,CAAA,EAAAC,CAAA,IAAAL,CAAA,CAAAI,CAAA,IAAAX,CAAA,CAAAW,CAAA;EAAA;EAAA,OAAAJ,CAAA,CAAAF,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAU,GAAA,CAAAb,CAAA,EAAAO,CAAA,GAAAA,CAAA;AAAA;AAtB/C;;;;AAcA;;;;AAKA;;;;AAKA;;;;AAIO,MAAMO,GAAG,GAAAvB,OAAA,CAAAuB,GAAA,gBAMZhC,QAAQ,CAACiC,IAAI,CAAC;EAChBC,UAAUA,CAACC,IAAI,EAAEC,KAAK;IACpB,MAAMC,IAAI,GAAIC,IAAmB,IAC/BzB,MAAM,CAAC0B,GAAG,CAAC,WAAUC,CAAC;MACpB,MAAMC,GAAG,GAAG,OAAO1B,OAAA,CAAA2B,YAAY;MAC/B,MAAML,IAAI,GAAG,OAAOG,CAAC,CACnB7C,OAAO,CAACsC,IAAI,CAAC,SAAS,EAAGQ,GAAoB,CAACE,MAAM,CAACC,QAAQ,EAAE,GAAGN,IAAI,CAAC,EACvE3C,OAAO,CAACkD,MAAM,CACf;MACD,OAAOR,IAAI,CAACS,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAC5DA,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAC3BC,IAAI,EAAE;IACX,CAAC,CAAC,CAACC,IAAI,CACLnC,MAAM,CAACoC,QAAQ,CAAEC,KAAK,IAAK,IAAIlD,QAAQ,CAACmD,cAAc,CAAC;MAAEC,MAAM,EAAE,QAAQ;MAAEC,OAAO,EAAEH,KAAK,CAACG;IAAO,CAAE,CAAC,CAAC,CACtG;IAEH,MAAMnB,UAAU,GAAGG,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;IAEpC,MAAMiB,cAAc,GAAGjB,IAAI,CAAC,CAC1B,OAAO,EACP,gBAAgBD,KAAK,EAAE,EACvB,iBAAiBA,KAAK,EAAE,CACzB,CAAC;IAEF,MAAMmB,OAAO,GAAG1C,MAAM,CAAC2C,GAAG,CACxB3C,MAAM,CAAC4C,GAAG,CAAC,CAACvB,UAAU,EAAEoB,cAAc,CAAC,EAAE;MAAEI,WAAW,EAAE;IAAC,CAAE,CAAC,EAC5D,CAAC,CAACC,MAAM,EAAEC,UAAU,CAAC,KAAKD,MAAM,GAAG,MAAM,GAAGC,UAAU,CACvD;IAED,MAAMC,QAAQ,GAAIC,IAAY,IAC5BjD,MAAM,CAAC0B,GAAG,CAAC,WAAUC,CAAC;MACpB,MAAMuB,EAAE,GAAG,OAAOvB,CAAC,CAAC1C,WAAA,CAAAkE,UAAU,CAAC;MAC/B,MAAM7B,IAAI,GAAG,OAAOK,CAAC,CAACzC,KAAA,CAAAkE,IAAI,CAAC;MAC3B,MAAM5B,IAAI,GAAG,OAAOG,CAAC,CAACe,OAAO,CAAC;MAC9B,OAAOf,CAAC,CAACuB,EAAE,CAACG,aAAa,CAAC/B,IAAI,CAACgC,OAAO,CAACL,IAAI,CAAC,EAAE;QAAEM,SAAS,EAAE;MAAI,CAAE,CAAC,CAAC;MACnE,OAAO5B,CAAC,CAACuB,EAAE,CAACM,eAAe,CAACP,IAAI,EAAEzB,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAACW,IAAI,CACLnC,MAAM,CAACoC,QAAQ,CAAEC,KAAK,IAAK,IAAIlD,QAAQ,CAACmD,cAAc,CAAC;MAAEC,MAAM,EAAE,QAAQ;MAAEC,OAAO,EAAEH,KAAK,CAACG;IAAO,CAAE,CAAC,CAAC,CACtG;IAEH,OAAOQ,QAAQ,CAAC1B,IAAI,CAAC;EACvB;CACD,CAAC;AAEF;;;;AAIO,MAAMmC,KAAK,GAChBC,OAAoC,IAKjCzD,KAAK,CAAC0D,aAAa,CAACxC,GAAG,CAACuC,OAAO,CAAC,CAAC;AAAA9D,OAAA,CAAA6D,KAAA,GAAAA,KAAA","ignoreList":[]} |
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| import * as Client from "@effect/sql/Client"; | ||
| import { SqlError } from "@effect/sql/Error"; | ||
| import * as Config from "effect/Config"; | ||
| import type { ConfigError } from "effect/ConfigError"; | ||
| import * as Context from "effect/Context"; | ||
| import * as Effect from "effect/Effect"; | ||
| import * as Layer from "effect/Layer"; | ||
| import * as Scope from "effect/Scope"; | ||
| /** | ||
| * @category type ids | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const TypeId: unique symbol; | ||
| /** | ||
| * @category type ids | ||
| * @since 1.0.0 | ||
| */ | ||
| export type TypeId = typeof TypeId; | ||
| /** | ||
| * @category models | ||
| * @since 1.0.0 | ||
| */ | ||
| export interface SqliteClient extends Client.Client { | ||
| readonly [TypeId]: TypeId; | ||
| readonly config: SqliteClientConfig; | ||
| readonly export: Effect.Effect<Uint8Array, SqlError>; | ||
| readonly loadExtension: (path: string) => Effect.Effect<void, SqlError>; | ||
| /** Not supported in sqlite */ | ||
| readonly updateValues: never; | ||
| } | ||
| /** | ||
| * @category tags | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const SqliteClient: Context.Tag<SqliteClient, SqliteClient>; | ||
| /** | ||
| * @category models | ||
| * @since 1.0.0 | ||
| */ | ||
| export interface SqliteClientConfig { | ||
| readonly filename: string; | ||
| readonly readonly?: boolean | undefined; | ||
| readonly create?: boolean | undefined; | ||
| readonly readwrite?: boolean | undefined; | ||
| readonly disableWAL?: boolean | undefined; | ||
| readonly spanAttributes?: Record<string, unknown> | undefined; | ||
| readonly transformResultNames?: ((str: string) => string) | undefined; | ||
| readonly transformQueryNames?: ((str: string) => string) | undefined; | ||
| } | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const make: (options: SqliteClientConfig) => Effect.Effect<SqliteClient, never, Scope.Scope>; | ||
| /** | ||
| * @category layers | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const layer: (config: Config.Config.Wrap<SqliteClientConfig>) => Layer.Layer<SqliteClient | Client.Client, ConfigError>; | ||
| //# sourceMappingURL=Client.d.ts.map |
| {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/Client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAI5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAAoD,CAAA;AAEhF;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,MAAM;IACjD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACpD,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAEvE,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,yCAAoE,CAAA;AAE7F;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAEzC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAE7D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;CACrE;AAOD;;;GAGG;AACH,eAAO,MAAM,IAAI,YACN,kBAAkB,KAC1B,OAAO,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,CAuG7C,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,KAAK,WACR,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAC7C,MAAM,KAAK,CAAC,YAAY,GAAG,OAAO,MAAM,EAAE,WAAW,CAUrD,CAAA"} |
| import type { CommandExecutor } from "@effect/platform/CommandExecutor"; | ||
| import { FileSystem } from "@effect/platform/FileSystem"; | ||
| import { Path } from "@effect/platform/Path"; | ||
| import type * as Client from "@effect/sql/Client"; | ||
| import type { SqlError } from "@effect/sql/Error"; | ||
| import * as Migrator from "@effect/sql/Migrator"; | ||
| import * as Effect from "effect/Effect"; | ||
| import * as Layer from "effect/Layer"; | ||
| import { SqliteClient } from "./Client.js"; | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * from "@effect/sql/Migrator"; | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * from "@effect/sql/Migrator/FileSystem"; | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const run: <R2 = never>(options: Migrator.MigratorOptions<R2>) => Effect.Effect<ReadonlyArray<readonly [id: number, name: string]>, Migrator.MigrationError | SqlError, FileSystem | Path | SqliteClient | Client.Client | CommandExecutor | R2>; | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export declare const layer: <R>(options: Migrator.MigratorOptions<R>) => Layer.Layer<never, SqlError | Migrator.MigrationError, SqliteClient | Client.Client | CommandExecutor | FileSystem | Path | R>; | ||
| //# sourceMappingURL=Migrator.d.ts.map |
| {"version":3,"file":"Migrator.d.ts","sourceRoot":"","sources":["../../src/Migrator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C;;GAEG;AACH,cAAc,sBAAsB,CAAA;AAEpC;;GAEG;AACH,cAAc,iCAAiC,CAAA;AAE/C;;;GAGG;AACH,eAAO,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,EAC3B,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAClC,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAClD,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAClC,UAAU,GAAG,IAAI,GAAG,YAAY,GAAG,MAAM,CAAC,MAAM,GAAG,eAAe,GAAG,EAAE,CA2CvE,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,eACP,SAAS,eAAe,CAAC,CAAC,CAAC,KACnC,MAAM,KAAK,CACZ,KAAK,EACL,QAAQ,GAAG,SAAS,cAAc,EAClC,YAAY,GAAG,OAAO,MAAM,GAAG,eAAe,GAAG,UAAU,GAAG,IAAI,GAAG,CAAC,CAClC,CAAA"} |
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| import * as Client from "@effect/sql/Client"; | ||
| import { SqlError } from "@effect/sql/Error"; | ||
| import * as Statement from "@effect/sql/Statement"; | ||
| import * as Otel from "@opentelemetry/semantic-conventions"; | ||
| import { Database } from "bun:sqlite"; | ||
| import * as Config from "effect/Config"; | ||
| import * as Context from "effect/Context"; | ||
| import * as Effect from "effect/Effect"; | ||
| import { identity } from "effect/Function"; | ||
| import * as Layer from "effect/Layer"; | ||
| import * as Scope from "effect/Scope"; | ||
| /** | ||
| * @category type ids | ||
| * @since 1.0.0 | ||
| */ | ||
| export const TypeId = /*#__PURE__*/Symbol.for("@effect/sql-sqlite-bun/Client"); | ||
| /** | ||
| * @category tags | ||
| * @since 1.0.0 | ||
| */ | ||
| export const SqliteClient = /*#__PURE__*/Context.GenericTag("@effect/sql-sqlite-bun/Client"); | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export const make = options => Effect.gen(function* (_) { | ||
| const compiler = Statement.makeCompilerSqlite(options.transformQueryNames); | ||
| const transformRows = Statement.defaultTransforms(options.transformResultNames).array; | ||
| const makeConnection = Effect.gen(function* (_) { | ||
| const db = new Database(options.filename, { | ||
| readonly: options.readonly, | ||
| readwrite: options.readwrite ?? true, | ||
| create: options.create ?? true | ||
| }); | ||
| yield* _(Effect.addFinalizer(() => Effect.sync(() => db.close()))); | ||
| if (options.disableWAL !== true) { | ||
| db.run("PRAGMA journal_mode = WAL;"); | ||
| } | ||
| const run = (sql, params = []) => Effect.try({ | ||
| try: () => db.query(sql).all(...params), | ||
| catch: error => new SqlError({ | ||
| error | ||
| }) | ||
| }); | ||
| const runTransform = options.transformResultNames ? (sql, params) => Effect.map(run(sql, params), transformRows) : run; | ||
| const runValues = (sql, params = []) => Effect.try({ | ||
| try: () => db.query(sql).values(...params), | ||
| catch: error => new SqlError({ | ||
| error | ||
| }) | ||
| }); | ||
| return identity({ | ||
| execute(sql, params) { | ||
| return runTransform(sql, params); | ||
| }, | ||
| executeValues(sql, params) { | ||
| return runValues(sql, params); | ||
| }, | ||
| executeWithoutTransform(sql, params) { | ||
| return run(sql, params); | ||
| }, | ||
| executeRaw(sql, params) { | ||
| return runTransform(sql, params); | ||
| }, | ||
| executeStream(_sql, _params) { | ||
| return Effect.dieMessage("executeStream not implemented"); | ||
| }, | ||
| export: Effect.try({ | ||
| try: () => db.serialize(), | ||
| catch: error => new SqlError({ | ||
| error | ||
| }) | ||
| }), | ||
| loadExtension: path => Effect.try({ | ||
| try: () => db.loadExtension(path), | ||
| catch: error => new SqlError({ | ||
| error | ||
| }) | ||
| }) | ||
| }); | ||
| }); | ||
| const semaphore = yield* _(Effect.makeSemaphore(1)); | ||
| const connection = yield* _(makeConnection); | ||
| const acquirer = semaphore.withPermits(1)(Effect.succeed(connection)); | ||
| const transactionAcquirer = Effect.uninterruptibleMask(restore => Effect.as(Effect.zipRight(restore(semaphore.take(1)), Effect.tap(Effect.scope, scope => Scope.addFinalizer(scope, semaphore.release(1)))), connection)); | ||
| return Object.assign(Client.make({ | ||
| acquirer, | ||
| compiler, | ||
| transactionAcquirer, | ||
| spanAttributes: [...(options.spanAttributes ? Object.entries(options.spanAttributes) : []), [Otel.SEMATTRS_DB_SYSTEM, Otel.DBSYSTEMVALUES_SQLITE]] | ||
| }), { | ||
| [TypeId]: TypeId, | ||
| config: options, | ||
| export: Effect.flatMap(acquirer, _ => _.export), | ||
| loadExtension: path => Effect.flatMap(acquirer, _ => _.loadExtension(path)) | ||
| }); | ||
| }); | ||
| /** | ||
| * @category layers | ||
| * @since 1.0.0 | ||
| */ | ||
| export const layer = config => Layer.scopedContext(Config.unwrap(config).pipe(Effect.flatMap(make), Effect.map(client => Context.make(SqliteClient, client).pipe(Context.add(Client.Client, client))))); | ||
| //# sourceMappingURL=Client.js.map |
| {"version":3,"file":"Client.js","names":["Client","SqlError","Statement","Otel","Database","Config","Context","Effect","identity","Layer","Scope","TypeId","Symbol","for","SqliteClient","GenericTag","make","options","gen","_","compiler","makeCompilerSqlite","transformQueryNames","transformRows","defaultTransforms","transformResultNames","array","makeConnection","db","filename","readonly","readwrite","create","addFinalizer","sync","close","disableWAL","run","sql","params","try","query","all","catch","error","runTransform","map","runValues","values","execute","executeValues","executeWithoutTransform","executeRaw","executeStream","_sql","_params","dieMessage","export","serialize","loadExtension","path","semaphore","makeSemaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","as","zipRight","take","tap","scope","release","Object","assign","spanAttributes","entries","SEMATTRS_DB_SYSTEM","DBSYSTEMVALUES_SQLITE","config","flatMap","layer","scopedContext","unwrap","pipe","client","add"],"sources":["../../src/Client.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]} |
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| import * as Command from "@effect/platform/Command"; | ||
| import { FileSystem } from "@effect/platform/FileSystem"; | ||
| import { Path } from "@effect/platform/Path"; | ||
| import * as Migrator from "@effect/sql/Migrator"; | ||
| import * as Effect from "effect/Effect"; | ||
| import * as Layer from "effect/Layer"; | ||
| import { SqliteClient } from "./Client.js"; | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * from "@effect/sql/Migrator"; | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * from "@effect/sql/Migrator/FileSystem"; | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export const run = /*#__PURE__*/Migrator.make({ | ||
| dumpSchema(path, table) { | ||
| const dump = args => Effect.gen(function* (_) { | ||
| const sql = yield* SqliteClient; | ||
| const dump = yield* _(Command.make("sqlite3", sql.config.filename, ...args), Command.string); | ||
| return dump.replace(/^create table sqlite_sequence\(.*$/im, "").replace(/\n{2,}/gm, "\n\n").trim(); | ||
| }).pipe(Effect.mapError(error => new Migrator.MigrationError({ | ||
| reason: "failed", | ||
| message: error.message | ||
| }))); | ||
| const dumpSchema = dump([".schema"]); | ||
| const dumpMigrations = dump(["--cmd", `.mode insert ${table}`, `select * from ${table}`]); | ||
| const dumpAll = Effect.map(Effect.all([dumpSchema, dumpMigrations], { | ||
| concurrency: 2 | ||
| }), ([schema, migrations]) => schema + "\n\n" + migrations); | ||
| const dumpFile = file => Effect.gen(function* (_) { | ||
| const fs = yield* _(FileSystem); | ||
| const path = yield* _(Path); | ||
| const dump = yield* _(dumpAll); | ||
| yield* _(fs.makeDirectory(path.dirname(file), { | ||
| recursive: true | ||
| })); | ||
| yield* _(fs.writeFileString(file, dump)); | ||
| }).pipe(Effect.mapError(error => new Migrator.MigrationError({ | ||
| reason: "failed", | ||
| message: error.message | ||
| }))); | ||
| return dumpFile(path); | ||
| } | ||
| }); | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export const layer = options => Layer.effectDiscard(run(options)); | ||
| //# sourceMappingURL=Migrator.js.map |
| {"version":3,"file":"Migrator.js","names":["Command","FileSystem","Path","Migrator","Effect","Layer","SqliteClient","run","make","dumpSchema","path","table","dump","args","gen","_","sql","config","filename","string","replace","trim","pipe","mapError","error","MigrationError","reason","message","dumpMigrations","dumpAll","map","all","concurrency","schema","migrations","dumpFile","file","fs","makeDirectory","dirname","recursive","writeFileString","layer","options","effectDiscard"],"sources":["../../src/Migrator.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,0BAA0B;AAEnD,SAASC,UAAU,QAAQ,6BAA6B;AACxD,SAASC,IAAI,QAAQ,uBAAuB;AAG5C,OAAO,KAAKC,QAAQ,MAAM,sBAAsB;AAChD,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,YAAY,QAAQ,aAAa;AAE1C;;;AAGA,cAAc,sBAAsB;AAEpC;;;AAGA,cAAc,iCAAiC;AAE/C;;;;AAIA,OAAO,MAAMC,GAAG,gBAMZJ,QAAQ,CAACK,IAAI,CAAC;EAChBC,UAAUA,CAACC,IAAI,EAAEC,KAAK;IACpB,MAAMC,IAAI,GAAIC,IAAmB,IAC/BT,MAAM,CAACU,GAAG,CAAC,WAAUC,CAAC;MACpB,MAAMC,GAAG,GAAG,OAAOV,YAAY;MAC/B,MAAMM,IAAI,GAAG,OAAOG,CAAC,CACnBf,OAAO,CAACQ,IAAI,CAAC,SAAS,EAAGQ,GAAoB,CAACC,MAAM,CAACC,QAAQ,EAAE,GAAGL,IAAI,CAAC,EACvEb,OAAO,CAACmB,MAAM,CACf;MACD,OAAOP,IAAI,CAACQ,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAC5DA,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAC3BC,IAAI,EAAE;IACX,CAAC,CAAC,CAACC,IAAI,CACLlB,MAAM,CAACmB,QAAQ,CAAEC,KAAK,IAAK,IAAIrB,QAAQ,CAACsB,cAAc,CAAC;MAAEC,MAAM,EAAE,QAAQ;MAAEC,OAAO,EAAEH,KAAK,CAACG;IAAO,CAAE,CAAC,CAAC,CACtG;IAEH,MAAMlB,UAAU,GAAGG,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;IAEpC,MAAMgB,cAAc,GAAGhB,IAAI,CAAC,CAC1B,OAAO,EACP,gBAAgBD,KAAK,EAAE,EACvB,iBAAiBA,KAAK,EAAE,CACzB,CAAC;IAEF,MAAMkB,OAAO,GAAGzB,MAAM,CAAC0B,GAAG,CACxB1B,MAAM,CAAC2B,GAAG,CAAC,CAACtB,UAAU,EAAEmB,cAAc,CAAC,EAAE;MAAEI,WAAW,EAAE;IAAC,CAAE,CAAC,EAC5D,CAAC,CAACC,MAAM,EAAEC,UAAU,CAAC,KAAKD,MAAM,GAAG,MAAM,GAAGC,UAAU,CACvD;IAED,MAAMC,QAAQ,GAAIC,IAAY,IAC5BhC,MAAM,CAACU,GAAG,CAAC,WAAUC,CAAC;MACpB,MAAMsB,EAAE,GAAG,OAAOtB,CAAC,CAACd,UAAU,CAAC;MAC/B,MAAMS,IAAI,GAAG,OAAOK,CAAC,CAACb,IAAI,CAAC;MAC3B,MAAMU,IAAI,GAAG,OAAOG,CAAC,CAACc,OAAO,CAAC;MAC9B,OAAOd,CAAC,CAACsB,EAAE,CAACC,aAAa,CAAC5B,IAAI,CAAC6B,OAAO,CAACH,IAAI,CAAC,EAAE;QAAEI,SAAS,EAAE;MAAI,CAAE,CAAC,CAAC;MACnE,OAAOzB,CAAC,CAACsB,EAAE,CAACI,eAAe,CAACL,IAAI,EAAExB,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAACU,IAAI,CACLlB,MAAM,CAACmB,QAAQ,CAAEC,KAAK,IAAK,IAAIrB,QAAQ,CAACsB,cAAc,CAAC;MAAEC,MAAM,EAAE,QAAQ;MAAEC,OAAO,EAAEH,KAAK,CAACG;IAAO,CAAE,CAAC,CAAC,CACtG;IAEH,OAAOQ,QAAQ,CAACzB,IAAI,CAAC;EACvB;CACD,CAAC;AAEF;;;;AAIA,OAAO,MAAMgC,KAAK,GAChBC,OAAoC,IAKjCtC,KAAK,CAACuC,aAAa,CAACrC,GAAG,CAACoC,OAAO,CAAC,CAAC","ignoreList":[]} |
| { | ||
| "main": "../dist/cjs/Migrator.js", | ||
| "module": "../dist/esm/Migrator.js", | ||
| "types": "../dist/dts/Migrator.d.ts", | ||
| "sideEffects": [] | ||
| } |
-199
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| import * as Client from "@effect/sql/Client" | ||
| import type { Connection } from "@effect/sql/Connection" | ||
| import { SqlError } from "@effect/sql/Error" | ||
| import * as Statement from "@effect/sql/Statement" | ||
| import * as Otel from "@opentelemetry/semantic-conventions" | ||
| import { Database } from "bun:sqlite" | ||
| import * as Config from "effect/Config" | ||
| import type { ConfigError } from "effect/ConfigError" | ||
| import * as Context from "effect/Context" | ||
| import * as Effect from "effect/Effect" | ||
| import { identity } from "effect/Function" | ||
| import * as Layer from "effect/Layer" | ||
| import * as Scope from "effect/Scope" | ||
| /** | ||
| * @category type ids | ||
| * @since 1.0.0 | ||
| */ | ||
| export const TypeId: unique symbol = Symbol.for("@effect/sql-sqlite-bun/Client") | ||
| /** | ||
| * @category type ids | ||
| * @since 1.0.0 | ||
| */ | ||
| export type TypeId = typeof TypeId | ||
| /** | ||
| * @category models | ||
| * @since 1.0.0 | ||
| */ | ||
| export interface SqliteClient extends Client.Client { | ||
| readonly [TypeId]: TypeId | ||
| readonly config: SqliteClientConfig | ||
| readonly export: Effect.Effect<Uint8Array, SqlError> | ||
| readonly loadExtension: (path: string) => Effect.Effect<void, SqlError> | ||
| /** Not supported in sqlite */ | ||
| readonly updateValues: never | ||
| } | ||
| /** | ||
| * @category tags | ||
| * @since 1.0.0 | ||
| */ | ||
| export const SqliteClient = Context.GenericTag<SqliteClient>("@effect/sql-sqlite-bun/Client") | ||
| /** | ||
| * @category models | ||
| * @since 1.0.0 | ||
| */ | ||
| export interface SqliteClientConfig { | ||
| readonly filename: string | ||
| readonly readonly?: boolean | undefined | ||
| readonly create?: boolean | undefined | ||
| readonly readwrite?: boolean | undefined | ||
| readonly disableWAL?: boolean | undefined | ||
| readonly spanAttributes?: Record<string, unknown> | undefined | ||
| readonly transformResultNames?: ((str: string) => string) | undefined | ||
| readonly transformQueryNames?: ((str: string) => string) | undefined | ||
| } | ||
| interface SqliteConnection extends Connection { | ||
| readonly export: Effect.Effect<Uint8Array, SqlError> | ||
| readonly loadExtension: (path: string) => Effect.Effect<void, SqlError> | ||
| } | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export const make = ( | ||
| options: SqliteClientConfig | ||
| ): Effect.Effect<SqliteClient, never, Scope.Scope> => | ||
| Effect.gen(function*(_) { | ||
| const compiler = Statement.makeCompilerSqlite(options.transformQueryNames) | ||
| const transformRows = Statement.defaultTransforms( | ||
| options.transformResultNames! | ||
| ).array | ||
| const makeConnection = Effect.gen(function*(_) { | ||
| const db = new Database(options.filename, { | ||
| readonly: options.readonly, | ||
| readwrite: options.readwrite ?? true, | ||
| create: options.create ?? true | ||
| } as any) | ||
| yield* _(Effect.addFinalizer(() => Effect.sync(() => db.close()))) | ||
| if (options.disableWAL !== true) { | ||
| db.run("PRAGMA journal_mode = WAL;") | ||
| } | ||
| const run = ( | ||
| sql: string, | ||
| params: ReadonlyArray<Statement.Primitive> = [] | ||
| ) => | ||
| Effect.try({ | ||
| try: () => db.query(sql).all(...(params as any)) as Array<any>, | ||
| catch: (error) => new SqlError({ error }) | ||
| }) | ||
| const runTransform = options.transformResultNames | ||
| ? (sql: string, params?: ReadonlyArray<Statement.Primitive>) => Effect.map(run(sql, params), transformRows) | ||
| : run | ||
| const runValues = ( | ||
| sql: string, | ||
| params: ReadonlyArray<Statement.Primitive> = [] | ||
| ) => | ||
| Effect.try({ | ||
| try: () => db.query(sql).values(...(params as any)) as Array<any>, | ||
| catch: (error) => new SqlError({ error }) | ||
| }) | ||
| return identity<SqliteConnection>({ | ||
| execute(sql, params) { | ||
| return runTransform(sql, params) | ||
| }, | ||
| executeValues(sql, params) { | ||
| return runValues(sql, params) | ||
| }, | ||
| executeWithoutTransform(sql, params) { | ||
| return run(sql, params) | ||
| }, | ||
| executeRaw(sql, params) { | ||
| return runTransform(sql, params) | ||
| }, | ||
| executeStream(_sql, _params) { | ||
| return Effect.dieMessage("executeStream not implemented") | ||
| }, | ||
| export: Effect.try({ | ||
| try: () => db.serialize(), | ||
| catch: (error) => new SqlError({ error }) | ||
| }), | ||
| loadExtension: (path) => | ||
| Effect.try({ | ||
| try: () => db.loadExtension(path), | ||
| catch: (error) => new SqlError({ error }) | ||
| }) | ||
| }) | ||
| }) | ||
| const semaphore = yield* _(Effect.makeSemaphore(1)) | ||
| const connection = yield* _(makeConnection) | ||
| const acquirer = semaphore.withPermits(1)(Effect.succeed(connection)) | ||
| const transactionAcquirer = Effect.uninterruptibleMask((restore) => | ||
| Effect.as( | ||
| Effect.zipRight( | ||
| restore(semaphore.take(1)), | ||
| Effect.tap( | ||
| Effect.scope, | ||
| (scope) => Scope.addFinalizer(scope, semaphore.release(1)) | ||
| ) | ||
| ), | ||
| connection | ||
| ) | ||
| ) | ||
| return Object.assign( | ||
| Client.make({ | ||
| acquirer, | ||
| compiler, | ||
| transactionAcquirer, | ||
| spanAttributes: [ | ||
| ...(options.spanAttributes ? Object.entries(options.spanAttributes) : []), | ||
| [Otel.SEMATTRS_DB_SYSTEM, Otel.DBSYSTEMVALUES_SQLITE] | ||
| ] | ||
| }) as SqliteClient, | ||
| { | ||
| [TypeId]: TypeId as TypeId, | ||
| config: options, | ||
| export: Effect.flatMap(acquirer, (_) => _.export), | ||
| loadExtension: (path: string) => Effect.flatMap(acquirer, (_) => _.loadExtension(path)) | ||
| } | ||
| ) | ||
| }) | ||
| /** | ||
| * @category layers | ||
| * @since 1.0.0 | ||
| */ | ||
| export const layer = ( | ||
| config: Config.Config.Wrap<SqliteClientConfig> | ||
| ): Layer.Layer<SqliteClient | Client.Client, ConfigError> => | ||
| Layer.scopedContext( | ||
| Config.unwrap(config).pipe( | ||
| Effect.flatMap(make), | ||
| Effect.map((client) => | ||
| Context.make(SqliteClient, client).pipe( | ||
| Context.add(Client.Client, client) | ||
| ) | ||
| ) | ||
| ) | ||
| ) |
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| import * as Command from "@effect/platform/Command" | ||
| import type { CommandExecutor } from "@effect/platform/CommandExecutor" | ||
| import { FileSystem } from "@effect/platform/FileSystem" | ||
| import { Path } from "@effect/platform/Path" | ||
| import type * as Client from "@effect/sql/Client" | ||
| import type { SqlError } from "@effect/sql/Error" | ||
| import * as Migrator from "@effect/sql/Migrator" | ||
| import * as Effect from "effect/Effect" | ||
| import * as Layer from "effect/Layer" | ||
| import { SqliteClient } from "./Client.js" | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * from "@effect/sql/Migrator" | ||
| /** | ||
| * @since 1.0.0 | ||
| */ | ||
| export * from "@effect/sql/Migrator/FileSystem" | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export const run: <R2 = never>( | ||
| options: Migrator.MigratorOptions<R2> | ||
| ) => Effect.Effect< | ||
| ReadonlyArray<readonly [id: number, name: string]>, | ||
| Migrator.MigrationError | SqlError, | ||
| FileSystem | Path | SqliteClient | Client.Client | CommandExecutor | R2 | ||
| > = Migrator.make({ | ||
| dumpSchema(path, table) { | ||
| const dump = (args: Array<string>) => | ||
| Effect.gen(function*(_) { | ||
| const sql = yield* SqliteClient | ||
| const dump = yield* _( | ||
| Command.make("sqlite3", (sql as SqliteClient).config.filename, ...args), | ||
| Command.string | ||
| ) | ||
| return dump.replace(/^create table sqlite_sequence\(.*$/im, "") | ||
| .replace(/\n{2,}/gm, "\n\n") | ||
| .trim() | ||
| }).pipe( | ||
| Effect.mapError((error) => new Migrator.MigrationError({ reason: "failed", message: error.message })) | ||
| ) | ||
| const dumpSchema = dump([".schema"]) | ||
| const dumpMigrations = dump([ | ||
| "--cmd", | ||
| `.mode insert ${table}`, | ||
| `select * from ${table}` | ||
| ]) | ||
| const dumpAll = Effect.map( | ||
| Effect.all([dumpSchema, dumpMigrations], { concurrency: 2 }), | ||
| ([schema, migrations]) => schema + "\n\n" + migrations | ||
| ) | ||
| const dumpFile = (file: string) => | ||
| Effect.gen(function*(_) { | ||
| const fs = yield* _(FileSystem) | ||
| const path = yield* _(Path) | ||
| const dump = yield* _(dumpAll) | ||
| yield* _(fs.makeDirectory(path.dirname(file), { recursive: true })) | ||
| yield* _(fs.writeFileString(file, dump)) | ||
| }).pipe( | ||
| Effect.mapError((error) => new Migrator.MigrationError({ reason: "failed", message: error.message })) | ||
| ) | ||
| return dumpFile(path) | ||
| } | ||
| }) | ||
| /** | ||
| * @category constructor | ||
| * @since 1.0.0 | ||
| */ | ||
| export const layer = <R>( | ||
| options: Migrator.MigratorOptions<R> | ||
| ): Layer.Layer< | ||
| never, | ||
| SqlError | Migrator.MigrationError, | ||
| SqliteClient | Client.Client | CommandExecutor | FileSystem | Path | R | ||
| > => Layer.effectDiscard(run(options)) |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
54667
0.84%818
-1.09%1
Infinity%