@effect/sql-sqlite-node 0.50.1 → 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,26 +1,22 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as Reactivity from "@effect/experimental/Reactivity";
5
- import * as Client from "@effect/sql/SqlClient";
6
- import { SqlError } from "@effect/sql/SqlError";
7
1
  import * as Config from "effect/Config";
8
- import type { ConfigError } from "effect/ConfigError";
9
- import * as Context from "effect/Context";
10
2
  import * as Duration from "effect/Duration";
11
3
  import * as Effect from "effect/Effect";
12
4
  import * as Layer from "effect/Layer";
13
5
  import * as Scope from "effect/Scope";
6
+ import * as ServiceMap from "effect/ServiceMap";
7
+ import * as Reactivity from "effect/unstable/reactivity/Reactivity";
8
+ import * as Client from "effect/unstable/sql/SqlClient";
9
+ import { SqlError } from "effect/unstable/sql/SqlError";
14
10
  /**
15
11
  * @category type ids
16
12
  * @since 1.0.0
17
13
  */
18
- export declare const TypeId: unique symbol;
14
+ export declare const TypeId: TypeId;
19
15
  /**
20
16
  * @category type ids
21
17
  * @since 1.0.0
22
18
  */
23
- export type TypeId = typeof TypeId;
19
+ export type TypeId = "~@effect/sql-sqlite-node/SqliteClient";
24
20
  /**
25
21
  * @category models
26
22
  * @since 1.0.0
@@ -46,7 +42,7 @@ export interface BackupMetadata {
46
42
  * @category tags
47
43
  * @since 1.0.0
48
44
  */
49
- export declare const SqliteClient: Context.Tag<SqliteClient, SqliteClient>;
45
+ export declare const SqliteClient: ServiceMap.Service<SqliteClient, SqliteClient>;
50
46
  /**
51
47
  * @category models
52
48
  * @since 1.0.0
@@ -70,10 +66,10 @@ export declare const make: (options: SqliteClientConfig) => Effect.Effect<Sqlite
70
66
  * @category layers
71
67
  * @since 1.0.0
72
68
  */
73
- export declare const layerConfig: (config: Config.Config.Wrap<SqliteClientConfig>) => Layer.Layer<SqliteClient | Client.SqlClient, ConfigError>;
69
+ export declare const layerConfig: (config: Config.Wrap<SqliteClientConfig>) => Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError>;
74
70
  /**
75
71
  * @category layers
76
72
  * @since 1.0.0
77
73
  */
78
- export declare const layer: (config: SqliteClientConfig) => Layer.Layer<SqliteClient | Client.SqlClient, ConfigError>;
74
+ export declare const layer: (config: SqliteClientConfig) => Layer.Layer<SqliteClient | Client.SqlClient>;
79
75
  //# sourceMappingURL=SqliteClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,32 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import * as Reactivity from "@effect/experimental/Reactivity";
5
- import * as Client from "@effect/sql/SqlClient";
6
- import { SqlError } from "@effect/sql/SqlError";
7
- import * as Statement from "@effect/sql/Statement";
8
4
  import Sqlite from "better-sqlite3";
9
5
  import * as Cache from "effect/Cache";
10
6
  import * as Config from "effect/Config";
11
- import * as Context from "effect/Context";
12
7
  import * as Duration from "effect/Duration";
13
8
  import * as Effect from "effect/Effect";
9
+ import * as Fiber from "effect/Fiber";
14
10
  import { identity } from "effect/Function";
15
11
  import * as Layer from "effect/Layer";
16
12
  import * as Scope from "effect/Scope";
13
+ import * as ServiceMap from "effect/ServiceMap";
14
+ import * as Stream from "effect/Stream";
15
+ import * as Reactivity from "effect/unstable/reactivity/Reactivity";
16
+ import * as Client from "effect/unstable/sql/SqlClient";
17
+ import { SqlError } from "effect/unstable/sql/SqlError";
18
+ import * as Statement from "effect/unstable/sql/Statement";
17
19
  const ATTR_DB_SYSTEM_NAME = "db.system.name";
18
20
  /**
19
21
  * @category type ids
20
22
  * @since 1.0.0
21
23
  */
22
- export const TypeId = /*#__PURE__*/Symbol.for("@effect/sql-sqlite-node/SqliteClient");
24
+ export const TypeId = "~@effect/sql-sqlite-node/SqliteClient";
23
25
  /**
24
26
  * @category tags
25
27
  * @since 1.0.0
26
28
  */
27
- export const SqliteClient = /*#__PURE__*/Context.GenericTag("@effect/sql-sqlite-node/SqliteClient");
29
+ export const SqliteClient = /*#__PURE__*/ServiceMap.Service("@effect/sql-sqlite-node/SqliteClient");
28
30
  /**
29
31
  * @category constructor
30
32
  * @since 1.0.0
@@ -52,8 +54,8 @@ export const make = options => Effect.gen(function* () {
52
54
  })
53
55
  })
54
56
  });
55
- const runStatement = (statement, params, raw) => Effect.withFiberRuntime(fiber => {
56
- if (Context.get(fiber.currentContext, Client.SafeIntegers)) {
57
+ const runStatement = (statement, params, raw) => Effect.withFiber(fiber => {
58
+ if (ServiceMap.get(fiber.services, Client.SafeIntegers)) {
57
59
  statement.safeIntegers(true);
58
60
  }
59
61
  try {
@@ -69,8 +71,8 @@ export const make = options => Effect.gen(function* () {
69
71
  }));
70
72
  }
71
73
  });
72
- const run = (sql, params, raw = false) => Effect.flatMap(prepareCache.get(sql), s => runStatement(s, params, raw));
73
- const runValues = (sql, params) => Effect.acquireUseRelease(prepareCache.get(sql), statement => Effect.try({
74
+ const run = (sql, params, raw = false) => Effect.flatMap(Cache.get(prepareCache, sql), s => runStatement(s, params, raw));
75
+ const runValues = (sql, params) => Effect.acquireUseRelease(Cache.get(prepareCache, sql), statement => Effect.try({
74
76
  try: () => {
75
77
  if (statement.reader) {
76
78
  statement.raw(true);
@@ -99,7 +101,7 @@ export const make = options => Effect.gen(function* () {
99
101
  return transformRows ? Effect.map(effect, transformRows) : effect;
100
102
  },
101
103
  executeStream(_sql, _params) {
102
- return Effect.dieMessage("executeStream not implemented");
104
+ return Stream.die("executeStream not implemented");
103
105
  },
104
106
  export: Effect.try({
105
107
  try: () => db.serialize(),
@@ -118,20 +120,24 @@ export const make = options => Effect.gen(function* () {
118
120
  });
119
121
  },
120
122
  loadExtension(path) {
121
- return Effect.tap(Effect.try({
123
+ return Effect.try({
122
124
  try: () => db.loadExtension(path),
123
125
  catch: cause => new SqlError({
124
126
  cause,
125
127
  message: "Failed to load extension"
126
128
  })
127
- }), () => prepareCache.invalidateAll);
129
+ });
128
130
  }
129
131
  });
130
132
  });
131
133
  const semaphore = yield* Effect.makeSemaphore(1);
132
134
  const connection = yield* makeConnection;
133
135
  const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));
134
- 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));
136
+ const transactionAcquirer = Effect.uninterruptibleMask(restore => {
137
+ const fiber = Fiber.getCurrent();
138
+ const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope);
139
+ return Effect.as(Effect.tap(restore(semaphore.take(1)), () => Scope.addFinalizer(scope, semaphore.release(1))), connection);
140
+ });
135
141
  return Object.assign(yield* Client.make({
136
142
  acquirer,
137
143
  compiler,
@@ -150,10 +156,10 @@ export const make = options => Effect.gen(function* () {
150
156
  * @category layers
151
157
  * @since 1.0.0
152
158
  */
153
- export const layerConfig = config => Layer.scopedContext(Config.unwrap(config).pipe(Effect.flatMap(make), Effect.map(client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
159
+ export const layerConfig = config => Layer.effectServices(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
154
160
  /**
155
161
  * @category layers
156
162
  * @since 1.0.0
157
163
  */
158
- export const layer = config => Layer.scopedContext(Effect.map(make(config), client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
164
+ export const layer = config => Layer.effectServices(Effect.map(make(config), client => ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
159
165
  //# sourceMappingURL=SqliteClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteClient.js","names":["Sqlite","Cache","Config","Duration","Effect","Fiber","identity","Layer","Scope","ServiceMap","Stream","Reactivity","Client","SqlError","Statement","ATTR_DB_SYSTEM_NAME","TypeId","SqliteClient","Service","make","options","gen","compiler","makeCompilerSqlite","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","makeConnection","scope","db","filename","readonly","addFinalizer","sync","close","disableWAL","pragma","prepareCache","capacity","prepareCacheSize","timeToLive","prepareCacheTTL","minutes","lookup","sql","try","prepare","catch","cause","message","runStatement","statement","params","raw","withFiber","fiber","get","services","SafeIntegers","safeIntegers","reader","succeed","all","result","run","fail","flatMap","s","runValues","acquireUseRelease","execute","map","executeRaw","executeValues","executeUnprepared","effect","executeStream","_sql","_params","die","export","serialize","backup","destination","tryPromise","loadExtension","path","semaphore","makeSemaphore","connection","acquirer","withPermits","transactionAcquirer","uninterruptibleMask","restore","getCurrent","getUnsafe","as","tap","take","release","Object","assign","spanAttributes","entries","config","_","layerConfig","effectServices","unwrap","asEffect","pipe","client","add","SqlClient","provide","layer"],"sources":["../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAOA,MAAM,MAAM,gBAAgB;AACnC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,UAAU,MAAM,mBAAmB;AAC/C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,UAAU,MAAM,uCAAuC;AACnE,OAAO,KAAKC,MAAM,MAAM,+BAA+B;AAEvD,SAASC,QAAQ,QAAQ,8BAA8B;AACvD,OAAO,KAAKC,SAAS,MAAM,+BAA+B;AAE1D,MAAMC,mBAAmB,GAAG,gBAAgB;AAE5C;;;;AAIA,OAAO,MAAMC,MAAM,GAAW,uCAAuC;AAgCrE;;;;AAIA,OAAO,MAAMC,YAAY,gBAAGR,UAAU,CAACS,OAAO,CAAe,sCAAsC,CAAC;AAwBpG;;;;AAIA,OAAO,MAAMC,IAAI,GACfC,OAA2B,IAE3BhB,MAAM,CAACiB,GAAG,CAAC,aAAS;EAClB,MAAMC,QAAQ,GAAGR,SAAS,CAACS,kBAAkB,CAACH,OAAO,CAACI,mBAAmB,CAAC;EAC1E,MAAMC,aAAa,GAAGL,OAAO,CAACM,oBAAoB,GAChDZ,SAAS,CAACa,iBAAiB,CACzBP,OAAO,CAACM,oBAAoB,CAC7B,CAACE,KAAK,GACPC,SAAS;EAEX,MAAMC,cAAc,GAAG1B,MAAM,CAACiB,GAAG,CAAC,aAAS;IACzC,MAAMU,KAAK,GAAG,OAAO3B,MAAM,CAAC2B,KAAK;IACjC,MAAMC,EAAE,GAAG,IAAIhC,MAAM,CAACoB,OAAO,CAACa,QAAQ,EAAE;MACtCC,QAAQ,EAAEd,OAAO,CAACc,QAAQ,IAAI;KAC/B,CAAC;IACF,OAAO1B,KAAK,CAAC2B,YAAY,CAACJ,KAAK,EAAE3B,MAAM,CAACgC,IAAI,CAAC,MAAMJ,EAAE,CAACK,KAAK,EAAE,CAAC,CAAC;IAE/D,IAAIjB,OAAO,CAACkB,UAAU,KAAK,IAAI,EAAE;MAC/BN,EAAE,CAACO,MAAM,CAAC,oBAAoB,CAAC;IACjC;IAEA,MAAMC,YAAY,GAAG,OAAOvC,KAAK,CAACkB,IAAI,CAAC;MACrCsB,QAAQ,EAAErB,OAAO,CAACsB,gBAAgB,IAAI,GAAG;MACzCC,UAAU,EAAEvB,OAAO,CAACwB,eAAe,IAAIzC,QAAQ,CAAC0C,OAAO,CAAC,EAAE,CAAC;MAC3DC,MAAM,EAAGC,GAAW,IAClB3C,MAAM,CAAC4C,GAAG,CAAC;QACTA,GAAG,EAAEA,CAAA,KAAMhB,EAAE,CAACiB,OAAO,CAACF,GAAG,CAAC;QAC1BG,KAAK,EAAGC,KAAK,IAAK,IAAItC,QAAQ,CAAC;UAAEsC,KAAK;UAAEC,OAAO,EAAE;QAA8B,CAAE;OAClF;KACJ,CAAC;IAEF,MAAMC,YAAY,GAAGA,CACnBC,SAA2B,EAC3BC,MAA8B,EAC9BC,GAAY,KAEZpD,MAAM,CAACqD,SAAS,CAAgCC,KAAK,IAAI;MACvD,IAAIjD,UAAU,CAACkD,GAAG,CAACD,KAAK,CAACE,QAAQ,EAAEhD,MAAM,CAACiD,YAAY,CAAC,EAAE;QACvDP,SAAS,CAACQ,YAAY,CAAC,IAAI,CAAC;MAC9B;MACA,IAAI;QACF,IAAIR,SAAS,CAACS,MAAM,EAAE;UACpB,OAAO3D,MAAM,CAAC4D,OAAO,CAACV,SAAS,CAACW,GAAG,CAAC,GAAGV,MAAM,CAAC,CAAC;QACjD;QACA,MAAMW,MAAM,GAAGZ,SAAS,CAACa,GAAG,CAAC,GAAGZ,MAAM,CAAC;QACvC,OAAOnD,MAAM,CAAC4D,OAAO,CAACR,GAAG,GAAGU,MAAuC,GAAG,EAAE,CAAC;MAC3E,CAAC,CAAC,OAAOf,KAAK,EAAE;QACd,OAAO/C,MAAM,CAACgE,IAAI,CAAC,IAAIvD,QAAQ,CAAC;UAAEsC,KAAK;UAAEC,OAAO,EAAE;QAA6B,CAAE,CAAC,CAAC;MACrF;IACF,CAAC,CAAC;IAEJ,MAAMe,GAAG,GAAGA,CACVpB,GAAW,EACXQ,MAA8B,EAC9BC,GAAG,GAAG,KAAK,KAEXpD,MAAM,CAACiE,OAAO,CACZpE,KAAK,CAAC0D,GAAG,CAACnB,YAAY,EAAEO,GAAG,CAAC,EAC3BuB,CAAC,IAAKjB,YAAY,CAACiB,CAAC,EAAEf,MAAM,EAAEC,GAAG,CAAC,CACpC;IAEH,MAAMe,SAAS,GAAGA,CAChBxB,GAAW,EACXQ,MAA8B,KAE9BnD,MAAM,CAACoE,iBAAiB,CACtBvE,KAAK,CAAC0D,GAAG,CAACnB,YAAY,EAAEO,GAAG,CAAC,EAC3BO,SAAS,IACRlD,MAAM,CAAC4C,GAAG,CAAC;MACTA,GAAG,EAAEA,CAAA,KAAK;QACR,IAAIM,SAAS,CAACS,MAAM,EAAE;UACpBT,SAAS,CAACE,GAAG,CAAC,IAAI,CAAC;UACnB,OAAOF,SAAS,CAACW,GAAG,CAAC,GAAGV,MAAM,CAE7B;QACH;QACAD,SAAS,CAACa,GAAG,CAAC,GAAGZ,MAAM,CAAC;QACxB,OAAO,EAAE;MACX,CAAC;MACDL,KAAK,EAAGC,KAAK,IAAK,IAAItC,QAAQ,CAAC;QAAEsC,KAAK;QAAEC,OAAO,EAAE;MAA6B,CAAE;KACjF,CAAC,EACHE,SAAS,IAAKlD,MAAM,CAACgC,IAAI,CAAC,MAAMkB,SAAS,CAACS,MAAM,IAAIT,SAAS,CAACE,GAAG,CAAC,KAAK,CAAC,CAAC,CAC3E;IAEH,OAAOlD,QAAQ,CAAmB;MAChCmE,OAAOA,CAAC1B,GAAG,EAAEQ,MAAM,EAAE9B,aAAa;QAChC,OAAOA,aAAa,GAChBrB,MAAM,CAACsE,GAAG,CAACP,GAAG,CAACpB,GAAG,EAAEQ,MAAM,CAAC,EAAE9B,aAAa,CAAC,GAC3C0C,GAAG,CAACpB,GAAG,EAAEQ,MAAM,CAAC;MACtB,CAAC;MACDoB,UAAUA,CAAC5B,GAAG,EAAEQ,MAAM;QACpB,OAAOY,GAAG,CAACpB,GAAG,EAAEQ,MAAM,EAAE,IAAI,CAAC;MAC/B,CAAC;MACDqB,aAAaA,CAAC7B,GAAG,EAAEQ,MAAM;QACvB,OAAOgB,SAAS,CAACxB,GAAG,EAAEQ,MAAM,CAAC;MAC/B,CAAC;MACDsB,iBAAiBA,CAAC9B,GAAG,EAAEQ,MAAM,EAAE9B,aAAa;QAC1C,MAAMqD,MAAM,GAAGzB,YAAY,CAACrB,EAAE,CAACiB,OAAO,CAACF,GAAG,CAAC,EAAEQ,MAAM,IAAI,EAAE,EAAE,KAAK,CAAC;QACjE,OAAO9B,aAAa,GAAGrB,MAAM,CAACsE,GAAG,CAACI,MAAM,EAAErD,aAAa,CAAC,GAAGqD,MAAM;MACnE,CAAC;MACDC,aAAaA,CAACC,IAAI,EAAEC,OAAO;QACzB,OAAOvE,MAAM,CAACwE,GAAG,CAAC,+BAA+B,CAAC;MACpD,CAAC;MACDC,MAAM,EAAE/E,MAAM,CAAC4C,GAAG,CAAC;QACjBA,GAAG,EAAEA,CAAA,KAAMhB,EAAE,CAACoD,SAAS,EAAE;QACzBlC,KAAK,EAAGC,KAAK,IAAK,IAAItC,QAAQ,CAAC;UAAEsC,KAAK;UAAEC,OAAO,EAAE;QAA2B,CAAE;OAC/E,CAAC;MACFiC,MAAMA,CAACC,WAAW;QAChB,OAAOlF,MAAM,CAACmF,UAAU,CAAC;UACvBvC,GAAG,EAAEA,CAAA,KAAMhB,EAAE,CAACqD,MAAM,CAACC,WAAW,CAAC;UACjCpC,KAAK,EAAGC,KAAK,IAAK,IAAItC,QAAQ,CAAC;YAAEsC,KAAK;YAAEC,OAAO,EAAE;UAA2B,CAAE;SAC/E,CAAC;MACJ,CAAC;MACDoC,aAAaA,CAACC,IAAI;QAChB,OAAOrF,MAAM,CAAC4C,GAAG,CAAC;UAChBA,GAAG,EAAEA,CAAA,KAAMhB,EAAE,CAACwD,aAAa,CAACC,IAAI,CAAC;UACjCvC,KAAK,EAAGC,KAAK,IAAK,IAAItC,QAAQ,CAAC;YAAEsC,KAAK;YAAEC,OAAO,EAAE;UAA0B,CAAE;SAC9E,CAAC;MACJ;KACD,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMsC,SAAS,GAAG,OAAOtF,MAAM,CAACuF,aAAa,CAAC,CAAC,CAAC;EAChD,MAAMC,UAAU,GAAG,OAAO9D,cAAc;EAExC,MAAM+D,QAAQ,GAAGH,SAAS,CAACI,WAAW,CAAC,CAAC,CAAC,CAAC1F,MAAM,CAAC4D,OAAO,CAAC4B,UAAU,CAAC,CAAC;EACrE,MAAMG,mBAAmB,GAAG3F,MAAM,CAAC4F,mBAAmB,CAAEC,OAAO,IAAI;IACjE,MAAMvC,KAAK,GAAGrD,KAAK,CAAC6F,UAAU,EAAG;IACjC,MAAMnE,KAAK,GAAGtB,UAAU,CAAC0F,SAAS,CAACzC,KAAK,CAACE,QAAQ,EAAEpD,KAAK,CAACA,KAAK,CAAC;IAC/D,OAAOJ,MAAM,CAACgG,EAAE,CACdhG,MAAM,CAACiG,GAAG,CACRJ,OAAO,CAACP,SAAS,CAACY,IAAI,CAAC,CAAC,CAAC,CAAC,EAC1B,MAAM9F,KAAK,CAAC2B,YAAY,CAACJ,KAAK,EAAE2D,SAAS,CAACa,OAAO,CAAC,CAAC,CAAC,CAAC,CACtD,EACDX,UAAU,CACX;EACH,CAAC,CAAC;EAEF,OAAOY,MAAM,CAACC,MAAM,CACjB,OAAO7F,MAAM,CAACO,IAAI,CAAC;IAClB0E,QAAQ;IACRvE,QAAQ;IACRyE,mBAAmB;IACnBW,cAAc,EAAE,CACd,IAAItF,OAAO,CAACsF,cAAc,GAAGF,MAAM,CAACG,OAAO,CAACvF,OAAO,CAACsF,cAAc,CAAC,GAAG,EAAE,CAAC,EACzE,CAAC3F,mBAAmB,EAAE,QAAQ,CAAC,CAChC;IACDU;GACD,CAAC,EACF;IACE,CAACT,MAAM,GAAGA,MAAgB;IAC1B4F,MAAM,EAAExF,OAAO;IACf+D,MAAM,EAAE/E,MAAM,CAACiE,OAAO,CAACwB,QAAQ,EAAGgB,CAAC,IAAKA,CAAC,CAAC1B,MAAM,CAAC;IACjDE,MAAM,EAAGC,WAAmB,IAAKlF,MAAM,CAACiE,OAAO,CAACwB,QAAQ,EAAGgB,CAAC,IAAKA,CAAC,CAACxB,MAAM,CAACC,WAAW,CAAC,CAAC;IACvFE,aAAa,EAAGC,IAAY,IAAKrF,MAAM,CAACiE,OAAO,CAACwB,QAAQ,EAAGgB,CAAC,IAAKA,CAAC,CAACrB,aAAa,CAACC,IAAI,CAAC;GACvF,CACF;AACH,CAAC,CAAC;AAEJ;;;;AAIA,OAAO,MAAMqB,WAAW,GACtBF,MAAuC,IAEvCrG,KAAK,CAACwG,cAAc,CAClB7G,MAAM,CAAC8G,MAAM,CAACJ,MAAM,CAAC,CAACK,QAAQ,EAAE,CAACC,IAAI,CACnC9G,MAAM,CAACiE,OAAO,CAAClD,IAAI,CAAC,EACpBf,MAAM,CAACsE,GAAG,CAAEyC,MAAM,IAChB1G,UAAU,CAACU,IAAI,CAACF,YAAY,EAAEkG,MAAM,CAAC,CAACD,IAAI,CACxCzG,UAAU,CAAC2G,GAAG,CAACxG,MAAM,CAACyG,SAAS,EAAEF,MAAM,CAAC,CACzC,CACF,CACF,CACF,CAACD,IAAI,CAAC3G,KAAK,CAAC+G,OAAO,CAAC3G,UAAU,CAAC4G,KAAK,CAAC,CAAC;AAEzC;;;;AAIA,OAAO,MAAMA,KAAK,GAChBX,MAA0B,IAE1BrG,KAAK,CAACwG,cAAc,CAClB3G,MAAM,CAACsE,GAAG,CAACvD,IAAI,CAACyF,MAAM,CAAC,EAAGO,MAAM,IAC9B1G,UAAU,CAACU,IAAI,CAACF,YAAY,EAAEkG,MAAM,CAAC,CAACD,IAAI,CACxCzG,UAAU,CAAC2G,GAAG,CAACxG,MAAM,CAACyG,SAAS,EAAEF,MAAM,CAAC,CACzC,CAAC,CACL,CAACD,IAAI,CAAC3G,KAAK,CAAC+G,OAAO,CAAC3G,UAAU,CAAC4G,KAAK,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as Effect from "effect/Effect";
5
+ import * as Layer from "effect/Layer";
6
+ import * as Migrator from "effect/unstable/sql/Migrator";
7
+ import type * as Client from "effect/unstable/sql/SqlClient";
8
+ import type { SqlError } from "effect/unstable/sql/SqlError";
9
+ /**
10
+ * @since 1.0.0
11
+ */
12
+ export * from "effect/unstable/sql/Migrator";
13
+ /**
14
+ * @category constructor
15
+ * @since 1.0.0
16
+ */
17
+ export declare const run: <R2 = never>(options: Migrator.MigratorOptions<R2>) => Effect.Effect<ReadonlyArray<readonly [id: number, name: string]>, Migrator.MigrationError | SqlError, Client.SqlClient | R2>;
18
+ /**
19
+ * @category constructor
20
+ * @since 1.0.0
21
+ */
22
+ export declare const layer: <R>(options: Migrator.MigratorOptions<R>) => Layer.Layer<never, Migrator.MigrationError | SqlError, Client.SqlClient | R>;
23
+ //# sourceMappingURL=SqliteMigrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteMigrator.d.ts","sourceRoot":"","sources":["../src/SqliteMigrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAA;AACxD,OAAO,KAAK,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D;;GAEG;AACH,cAAc,8BAA8B,CAAA;AAE5C;;;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,MAAM,CAAC,SAAS,GAAG,EAAE,CA2CrB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,SAAS,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,KACnC,KAAK,CAAC,KAAK,CACZ,KAAK,EACL,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAClC,MAAM,CAAC,SAAS,GAAG,CAAC,CACgB,CAAA"}
@@ -0,0 +1,59 @@
1
+ import * as Layer from "effect/Layer";
2
+ import * as Migrator from "effect/unstable/sql/Migrator";
3
+ /**
4
+ * @since 1.0.0
5
+ */
6
+ export * from "effect/unstable/sql/Migrator";
7
+ /**
8
+ * @category constructor
9
+ * @since 1.0.0
10
+ */
11
+ export const run = /*#__PURE__*/Migrator.make({
12
+ // dumpSchema(path, table) {
13
+ // const dump = (args: Array<string>) =>
14
+ // Effect.gen(function*() {
15
+ // const sql = yield* SqliteClient
16
+ // const dump = yield* pipe(
17
+ // Command.make("sqlite3", sql.config.filename, ...args),
18
+ // Command.string
19
+ // )
20
+ // return dump.replace(/^create table sqlite_sequence\(.*$/im, "")
21
+ // .replace(/\n{2,}/gm, "\n\n")
22
+ // .trim()
23
+ // }).pipe(
24
+ // Effect.mapError((error) => new Migrator.MigrationError({ kind: "Failed", message: error.message }))
25
+ // )
26
+ //
27
+ // const dumpSchema = dump([".schema"])
28
+ //
29
+ // const dumpMigrations = dump([
30
+ // "--cmd",
31
+ // `.mode insert ${table}`,
32
+ // `select * from ${table}`
33
+ // ])
34
+ //
35
+ // const dumpAll = Effect.map(
36
+ // Effect.all([dumpSchema, dumpMigrations], { concurrency: 2 }),
37
+ // ([schema, migrations]) => schema + "\n\n" + migrations
38
+ // )
39
+ //
40
+ // const dumpFile = (file: string) =>
41
+ // Effect.gen(function*() {
42
+ // const fs = yield* FileSystem
43
+ // const path = yield* Path
44
+ // const dump = yield* dumpAll
45
+ // yield* fs.makeDirectory(path.dirname(file), { recursive: true })
46
+ // yield* fs.writeFileString(file, dump)
47
+ // }).pipe(
48
+ // Effect.mapError((error) => new Migrator.MigrationError({ kind: "Failed", message: error.message }))
49
+ // )
50
+ //
51
+ // return dumpFile(path)
52
+ // }
53
+ });
54
+ /**
55
+ * @category constructor
56
+ * @since 1.0.0
57
+ */
58
+ export const layer = options => Layer.effectDiscard(run(options));
59
+ //# sourceMappingURL=SqliteMigrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteMigrator.js","names":["Layer","Migrator","run","make","layer","options","effectDiscard"],"sources":["../src/SqliteMigrator.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,8BAA8B;AAIxD;;;AAGA,cAAc,8BAA8B;AAE5C;;;;AAIA,OAAO,MAAMC,GAAG,gBAMZD,QAAQ,CAACE,IAAI,CAAC;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAA,CACD,CAAC;AAEF;;;;AAIA,OAAO,MAAMC,KAAK,GAChBC,OAAoC,IAKjCL,KAAK,CAACM,aAAa,CAACJ,GAAG,CAACG,OAAO,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ /**
5
+ * @since 1.0.0
6
+ */
7
+ export * as SqliteClient from "./SqliteClient.ts";
8
+ /**
9
+ * @since 1.0.0
10
+ */
11
+ export * as SqliteMigrator from "./SqliteMigrator.ts";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA"}
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ // @barrel: Auto-generated exports. Do not edit manually.
1
5
  /**
2
6
  * @since 1.0.0
3
7
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["SqliteClient","SqliteMigrator"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAKA,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB","ignoreList":[]}
package/package.json CHANGED
@@ -1,64 +1,65 @@
1
1
  {
2
2
  "name": "@effect/sql-sqlite-node",
3
- "version": "0.50.1",
4
- "description": "A SQLite toolkit for Effect",
3
+ "version": "4.0.0-beta.1",
4
+ "type": "module",
5
5
  "license": "MIT",
6
+ "description": "A SQLite toolkit for Effect",
7
+ "homepage": "https://effect.website",
6
8
  "repository": {
7
9
  "type": "git",
8
- "url": "https://github.com/Effect-TS/effect.git",
9
- "directory": "packages/sql-sqlite-node"
10
+ "url": "https://github.com/Effect-TS/effect-smol.git",
11
+ "directory": "packages/sql/sqlite-node"
10
12
  },
11
- "sideEffects": [],
12
- "homepage": "https://effect.website",
13
- "dependencies": {
14
- "better-sqlite3": "^12.6.2"
13
+ "bugs": {
14
+ "url": "https://github.com/Effect-TS/effect-smol/issues"
15
15
  },
16
- "peerDependencies": {
17
- "@effect/experimental": "^0.58.0",
18
- "@effect/platform": "^0.94.4",
19
- "@effect/sql": "^0.49.0",
20
- "effect": "^3.19.16"
16
+ "tags": [
17
+ "typescript",
18
+ "sql",
19
+ "database"
20
+ ],
21
+ "keywords": [
22
+ "typescript",
23
+ "sql",
24
+ "database"
25
+ ],
26
+ "sideEffects": [],
27
+ "exports": {
28
+ "./package.json": "./package.json",
29
+ ".": "./dist/index.js",
30
+ "./*": "./dist/*.js",
31
+ "./internal/*": null,
32
+ "./*/index": null
21
33
  },
34
+ "files": [
35
+ "src/**/*.ts",
36
+ "dist/**/*.js",
37
+ "dist/**/*.js.map",
38
+ "dist/**/*.d.ts",
39
+ "dist/**/*.d.ts.map"
40
+ ],
22
41
  "publishConfig": {
42
+ "access": "public",
23
43
  "provenance": true
24
44
  },
25
- "main": "./dist/cjs/index.js",
26
- "module": "./dist/esm/index.js",
27
- "types": "./dist/dts/index.d.ts",
28
- "exports": {
29
- "./package.json": "./package.json",
30
- ".": {
31
- "types": "./dist/dts/index.d.ts",
32
- "import": "./dist/esm/index.js",
33
- "default": "./dist/cjs/index.js"
34
- },
35
- "./SqliteClient": {
36
- "types": "./dist/dts/SqliteClient.d.ts",
37
- "import": "./dist/esm/SqliteClient.js",
38
- "default": "./dist/cjs/SqliteClient.js"
39
- },
40
- "./SqliteMigrator": {
41
- "types": "./dist/dts/SqliteMigrator.d.ts",
42
- "import": "./dist/esm/SqliteMigrator.js",
43
- "default": "./dist/cjs/SqliteMigrator.js"
44
- },
45
- "./index": {
46
- "types": "./dist/dts/index.d.ts",
47
- "import": "./dist/esm/index.js",
48
- "default": "./dist/cjs/index.js"
49
- }
45
+ "devDependencies": {
46
+ "@types/better-sqlite3": "^7.6.13",
47
+ "@effect/platform-node": "^4.0.0-beta.1",
48
+ "effect": "^4.0.0-beta.1"
49
+ },
50
+ "peerDependencies": {
51
+ "effect": "^4.0.0-beta.1"
52
+ },
53
+ "dependencies": {
54
+ "better-sqlite3": "^12.6.2"
50
55
  },
51
- "typesVersions": {
52
- "*": {
53
- "SqliteClient": [
54
- "./dist/dts/SqliteClient.d.ts"
55
- ],
56
- "SqliteMigrator": [
57
- "./dist/dts/SqliteMigrator.d.ts"
58
- ],
59
- "index": [
60
- "./dist/dts/index.d.ts"
61
- ]
62
- }
56
+ "scripts": {
57
+ "codegen": "effect-utils codegen",
58
+ "build": "tsc -b tsconfig.json && pnpm babel",
59
+ "build:tsgo": "tsgo -b tsconfig.json && pnpm babel",
60
+ "babel": "babel dist --plugins annotate-pure-calls --out-dir dist --source-maps",
61
+ "check": "tsc -b tsconfig.json",
62
+ "test": "vitest",
63
+ "coverage": "vitest --coverage"
63
64
  }
64
65
  }
@@ -1,21 +1,22 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import * as Reactivity from "@effect/experimental/Reactivity"
5
- import * as Client from "@effect/sql/SqlClient"
6
- import type { Connection } from "@effect/sql/SqlConnection"
7
- import { SqlError } from "@effect/sql/SqlError"
8
- import * as Statement from "@effect/sql/Statement"
9
4
  import Sqlite from "better-sqlite3"
10
5
  import * as Cache from "effect/Cache"
11
6
  import * as Config from "effect/Config"
12
- import type { ConfigError } from "effect/ConfigError"
13
- import * as Context from "effect/Context"
14
7
  import * as Duration from "effect/Duration"
15
8
  import * as Effect from "effect/Effect"
9
+ import * as Fiber from "effect/Fiber"
16
10
  import { identity } from "effect/Function"
17
11
  import * as Layer from "effect/Layer"
18
12
  import * as Scope from "effect/Scope"
13
+ import * as ServiceMap from "effect/ServiceMap"
14
+ import * as Stream from "effect/Stream"
15
+ import * as Reactivity from "effect/unstable/reactivity/Reactivity"
16
+ import * as Client from "effect/unstable/sql/SqlClient"
17
+ import type { Connection } from "effect/unstable/sql/SqlConnection"
18
+ import { SqlError } from "effect/unstable/sql/SqlError"
19
+ import * as Statement from "effect/unstable/sql/Statement"
19
20
 
20
21
  const ATTR_DB_SYSTEM_NAME = "db.system.name"
21
22
 
@@ -23,13 +24,13 @@ const ATTR_DB_SYSTEM_NAME = "db.system.name"
23
24
  * @category type ids
24
25
  * @since 1.0.0
25
26
  */
26
- export const TypeId: unique symbol = Symbol.for("@effect/sql-sqlite-node/SqliteClient")
27
+ export const TypeId: TypeId = "~@effect/sql-sqlite-node/SqliteClient"
27
28
 
28
29
  /**
29
30
  * @category type ids
30
31
  * @since 1.0.0
31
32
  */
32
- export type TypeId = typeof TypeId
33
+ export type TypeId = "~@effect/sql-sqlite-node/SqliteClient"
33
34
 
34
35
  /**
35
36
  * @category models
@@ -59,7 +60,7 @@ export interface BackupMetadata {
59
60
  * @category tags
60
61
  * @since 1.0.0
61
62
  */
62
- export const SqliteClient = Context.GenericTag<SqliteClient>("@effect/sql-sqlite-node/SqliteClient")
63
+ export const SqliteClient = ServiceMap.Service<SqliteClient>("@effect/sql-sqlite-node/SqliteClient")
63
64
 
64
65
  /**
65
66
  * @category models
@@ -124,8 +125,8 @@ export const make = (
124
125
  params: ReadonlyArray<unknown>,
125
126
  raw: boolean
126
127
  ) =>
127
- Effect.withFiberRuntime<ReadonlyArray<any>, SqlError>((fiber) => {
128
- if (Context.get(fiber.currentContext, Client.SafeIntegers)) {
128
+ Effect.withFiber<ReadonlyArray<any>, SqlError>((fiber) => {
129
+ if (ServiceMap.get(fiber.services, Client.SafeIntegers)) {
129
130
  statement.safeIntegers(true)
130
131
  }
131
132
  try {
@@ -145,7 +146,7 @@ export const make = (
145
146
  raw = false
146
147
  ) =>
147
148
  Effect.flatMap(
148
- prepareCache.get(sql),
149
+ Cache.get(prepareCache, sql),
149
150
  (s) => runStatement(s, params, raw)
150
151
  )
151
152
 
@@ -154,7 +155,7 @@ export const make = (
154
155
  params: ReadonlyArray<unknown>
155
156
  ) =>
156
157
  Effect.acquireUseRelease(
157
- prepareCache.get(sql),
158
+ Cache.get(prepareCache, sql),
158
159
  (statement) =>
159
160
  Effect.try({
160
161
  try: () => {
@@ -189,7 +190,7 @@ export const make = (
189
190
  return transformRows ? Effect.map(effect, transformRows) : effect
190
191
  },
191
192
  executeStream(_sql, _params) {
192
- return Effect.dieMessage("executeStream not implemented")
193
+ return Stream.die("executeStream not implemented")
193
194
  },
194
195
  export: Effect.try({
195
196
  try: () => db.serialize(),
@@ -202,13 +203,10 @@ export const make = (
202
203
  })
203
204
  },
204
205
  loadExtension(path) {
205
- return Effect.tap(
206
- Effect.try({
207
- try: () => db.loadExtension(path),
208
- catch: (cause) => new SqlError({ cause, message: "Failed to load extension" })
209
- }),
210
- () => prepareCache.invalidateAll
211
- )
206
+ return Effect.try({
207
+ try: () => db.loadExtension(path),
208
+ catch: (cause) => new SqlError({ cause, message: "Failed to load extension" })
209
+ })
212
210
  }
213
211
  })
214
212
  })
@@ -217,18 +215,17 @@ export const make = (
217
215
  const connection = yield* makeConnection
218
216
 
219
217
  const acquirer = semaphore.withPermits(1)(Effect.succeed(connection))
220
- const transactionAcquirer = Effect.uninterruptibleMask((restore) =>
221
- Effect.as(
222
- Effect.zipRight(
218
+ const transactionAcquirer = Effect.uninterruptibleMask((restore) => {
219
+ const fiber = Fiber.getCurrent()!
220
+ const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope)
221
+ return Effect.as(
222
+ Effect.tap(
223
223
  restore(semaphore.take(1)),
224
- Effect.tap(
225
- Effect.scope,
226
- (scope) => Scope.addFinalizer(scope, semaphore.release(1))
227
- )
224
+ () => Scope.addFinalizer(scope, semaphore.release(1))
228
225
  ),
229
226
  connection
230
227
  )
231
- )
228
+ })
232
229
 
233
230
  return Object.assign(
234
231
  (yield* Client.make({
@@ -256,14 +253,14 @@ export const make = (
256
253
  * @since 1.0.0
257
254
  */
258
255
  export const layerConfig = (
259
- config: Config.Config.Wrap<SqliteClientConfig>
260
- ): Layer.Layer<SqliteClient | Client.SqlClient, ConfigError> =>
261
- Layer.scopedContext(
262
- Config.unwrap(config).pipe(
256
+ config: Config.Wrap<SqliteClientConfig>
257
+ ): Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError> =>
258
+ Layer.effectServices(
259
+ Config.unwrap(config).asEffect().pipe(
263
260
  Effect.flatMap(make),
264
261
  Effect.map((client) =>
265
- Context.make(SqliteClient, client).pipe(
266
- Context.add(Client.SqlClient, client)
262
+ ServiceMap.make(SqliteClient, client).pipe(
263
+ ServiceMap.add(Client.SqlClient, client)
267
264
  )
268
265
  )
269
266
  )
@@ -275,10 +272,10 @@ export const layerConfig = (
275
272
  */
276
273
  export const layer = (
277
274
  config: SqliteClientConfig
278
- ): Layer.Layer<SqliteClient | Client.SqlClient, ConfigError> =>
279
- Layer.scopedContext(
275
+ ): Layer.Layer<SqliteClient | Client.SqlClient> =>
276
+ Layer.effectServices(
280
277
  Effect.map(make(config), (client) =>
281
- Context.make(SqliteClient, client).pipe(
282
- Context.add(Client.SqlClient, client)
278
+ ServiceMap.make(SqliteClient, client).pipe(
279
+ ServiceMap.add(Client.SqlClient, client)
283
280
  ))
284
281
  ).pipe(Layer.provide(Reactivity.layer))