shioricode 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -1
- package/dist/BunHttpServer-BvXfeDdm.cjs +375 -0
- package/dist/BunPTY-l5TwbZzE.cjs +91 -0
- package/dist/BunServices-07vLsX26.cjs +74 -0
- package/dist/NodeHttpServer-OQzpZjfj.cjs +4142 -0
- package/dist/NodePTY-BNeKL1sW.cjs +86 -0
- package/dist/NodeSqliteClient-K1HOOjni.cjs +147 -0
- package/dist/SqlError-UTW5yuSG.cjs +262 -0
- package/dist/SqliteClient-CVOnk2wf.cjs +125 -0
- package/dist/bin.cjs +703700 -0
- package/dist/bin.mjs +386 -142
- package/dist/client/apple-touch-icon.png +0 -0
- package/dist/client/assets/{ArtifactPanel-BPQ8FX7l.js → ArtifactPanel-ClA97FO8.js} +2 -2
- package/dist/client/assets/{ChatMarkdown-jcE8Pq97.js → ChatMarkdown-DkldD1_B.js} +2 -2
- package/dist/client/assets/{DiffPanel-CPmbtIC0.js → DiffPanel-BYSH-G7M.js} +2 -2
- package/dist/client/assets/{DiffPanelShell-CqS9jPrk.js → DiffPanelShell-Ce2wOE9L.js} +2 -2
- package/dist/client/assets/{DiffWorkerPoolProvider-CEnxoS9v.js → DiffWorkerPoolProvider-DjSdGkRQ.js} +2 -2
- package/dist/client/assets/{NoActiveThreadState-Bt_jFQ4-.js → NoActiveThreadState-CVDfDuF2.js} +2 -2
- package/dist/client/assets/{ProviderModelPicker-BRDu3BzU.js → ProviderModelPicker-BFlX8lZL.js} +2 -2
- package/dist/client/assets/{SettingsPanels-BX2dAbn4.js → SettingsPanels-_8_YaXgc.js} +2 -2
- package/dist/client/assets/{_chat-C_aCgqFw.js → _chat-CQ5UewiP.js} +2 -2
- package/dist/client/assets/{_chat._threadId-DLIOcnXQ.js → _chat._threadId-5846z-_l.js} +5 -5
- package/dist/client/assets/{_chat.index-B9u7xlCv.js → _chat.index-DI7egWLc.js} +2 -2
- package/dist/client/assets/{automations-CJVFqqLv.js → automations-D6SQKJ83.js} +2 -2
- package/dist/client/assets/{dialog-BwIZs3EF.js → dialog-CZ2IjObB.js} +2 -2
- package/dist/client/assets/{index-DKZPXV4a.js → index-B42nGfCf.js} +4 -4
- package/dist/client/assets/{pull-requests-CQHYo-fV.js → pull-requests-DGa0NhIZ.js} +2 -2
- package/dist/client/assets/{settings-i7-rb7s9.js → settings-BwPioqTL.js} +2 -2
- package/dist/client/assets/{settings.appearance-Dwkl1cOq.js → settings.appearance-DxQzPuf5.js} +2 -2
- package/dist/client/assets/{settings.archived-DZPSjNZJ.js → settings.archived-BSqIxOKY.js} +2 -2
- package/dist/client/assets/{settings.computer-use-CLy6GP7W.js → settings.computer-use-DuuUffvc.js} +2 -2
- package/dist/client/assets/{settings.general-CuNCor2d.js → settings.general-DjIbwGSI.js} +2 -2
- package/dist/client/assets/{settings.mcp-DwWQDGSB.js → settings.mcp-CHZOA1L-.js} +2 -2
- package/dist/client/assets/{settings.mobile-B73fICiz.js → settings.mobile-D3UiSzxp.js} +2 -2
- package/dist/client/assets/{settings.plugins-BjW05gj4.js → settings.plugins-qo7Fls2x.js} +2 -2
- package/dist/client/assets/{settings.remote-D_iWhzEN.js → settings.remote-CmdhJhKY.js} +2 -2
- package/dist/client/assets/{settings.skills-BCB4uvnE.js → settings.skills-UB5Wtkl5.js} +2 -2
- package/dist/client/assets/{settings.theme-builder-CS2XB4es.js → settings.theme-builder-CnwNYRga.js} +2 -2
- package/dist/client/favicon-16x16.png +0 -0
- package/dist/client/favicon-32x32.png +0 -0
- package/dist/client/favicon.ico +0 -0
- package/dist/client/index.html +1 -1
- package/package.json +38 -5
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const require_bin = require('./bin.cjs');
|
|
4
|
+
let node_module = require("node:module");
|
|
5
|
+
|
|
6
|
+
//#region src/terminal/Layers/NodePTY.ts
|
|
7
|
+
let didEnsureSpawnHelperExecutable = false;
|
|
8
|
+
const resolveNodePtySpawnHelperPath = require_bin.gen(function* () {
|
|
9
|
+
const requireForNodePty = (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href);
|
|
10
|
+
const path = yield* require_bin.Path;
|
|
11
|
+
const fs = yield* require_bin.FileSystem;
|
|
12
|
+
const packageJsonPath = requireForNodePty.resolve("node-pty/package.json");
|
|
13
|
+
const packageDir = path.dirname(packageJsonPath);
|
|
14
|
+
const candidates = [
|
|
15
|
+
path.join(packageDir, "build", "Release", "spawn-helper"),
|
|
16
|
+
path.join(packageDir, "build", "Debug", "spawn-helper"),
|
|
17
|
+
path.join(packageDir, "prebuilds", `${process.platform}-${process.arch}`, "spawn-helper")
|
|
18
|
+
];
|
|
19
|
+
for (const candidate of candidates) if (yield* fs.exists(candidate)) return candidate;
|
|
20
|
+
return null;
|
|
21
|
+
}).pipe(require_bin.orElseSucceed(() => null));
|
|
22
|
+
const ensureNodePtySpawnHelperExecutable = require_bin.fn(function* (explicitPath) {
|
|
23
|
+
const fs = yield* require_bin.FileSystem;
|
|
24
|
+
if (process.platform === "win32") return;
|
|
25
|
+
if (!explicitPath && didEnsureSpawnHelperExecutable) return;
|
|
26
|
+
const helperPath = explicitPath ?? (yield* resolveNodePtySpawnHelperPath);
|
|
27
|
+
if (!helperPath) return;
|
|
28
|
+
if (!explicitPath) didEnsureSpawnHelperExecutable = true;
|
|
29
|
+
if (!(yield* fs.exists(helperPath))) return;
|
|
30
|
+
yield* fs.chmod(helperPath, 493).pipe(require_bin.orElseSucceed(() => void 0));
|
|
31
|
+
});
|
|
32
|
+
var NodePtyProcess = class {
|
|
33
|
+
constructor(process) {
|
|
34
|
+
this.process = process;
|
|
35
|
+
}
|
|
36
|
+
get pid() {
|
|
37
|
+
return this.process.pid;
|
|
38
|
+
}
|
|
39
|
+
write(data) {
|
|
40
|
+
this.process.write(data);
|
|
41
|
+
}
|
|
42
|
+
resize(cols, rows) {
|
|
43
|
+
this.process.resize(cols, rows);
|
|
44
|
+
}
|
|
45
|
+
kill(signal) {
|
|
46
|
+
this.process.kill(signal);
|
|
47
|
+
}
|
|
48
|
+
onData(callback) {
|
|
49
|
+
const disposable = this.process.onData(callback);
|
|
50
|
+
return () => {
|
|
51
|
+
disposable.dispose();
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
onExit(callback) {
|
|
55
|
+
const disposable = this.process.onExit((event) => {
|
|
56
|
+
callback({
|
|
57
|
+
exitCode: event.exitCode,
|
|
58
|
+
signal: event.signal ?? null
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
return () => {
|
|
62
|
+
disposable.dispose();
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
const layer = require_bin.effect(require_bin.PtyAdapter, require_bin.gen(function* () {
|
|
67
|
+
const fs = yield* require_bin.FileSystem;
|
|
68
|
+
const path = yield* require_bin.Path;
|
|
69
|
+
const nodePty = yield* require_bin.promise(() => import("node-pty"));
|
|
70
|
+
const ensureNodePtySpawnHelperExecutableCached = yield* require_bin.cached(ensureNodePtySpawnHelperExecutable().pipe(require_bin.provideService(require_bin.FileSystem, fs), require_bin.provideService(require_bin.Path, path), require_bin.orElseSucceed(() => void 0)));
|
|
71
|
+
return { spawn: require_bin.fn(function* (input) {
|
|
72
|
+
yield* ensureNodePtySpawnHelperExecutableCached;
|
|
73
|
+
return new NodePtyProcess(nodePty.spawn(input.shell, input.args ?? [], {
|
|
74
|
+
cwd: input.cwd,
|
|
75
|
+
cols: input.cols,
|
|
76
|
+
rows: input.rows,
|
|
77
|
+
env: input.env,
|
|
78
|
+
name: globalThis.process.platform === "win32" ? "xterm-color" : "xterm-256color"
|
|
79
|
+
}));
|
|
80
|
+
}) };
|
|
81
|
+
}));
|
|
82
|
+
|
|
83
|
+
//#endregion
|
|
84
|
+
exports.ensureNodePtySpawnHelperExecutable = ensureNodePtySpawnHelperExecutable;
|
|
85
|
+
exports.layer = layer;
|
|
86
|
+
//# sourceMappingURL=NodePTY-BNeKL1sW.cjs.map
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const require_bin = require('./bin.cjs');
|
|
4
|
+
const require_SqlError = require('./SqlError-UTW5yuSG.cjs');
|
|
5
|
+
let node_sqlite = require("node:sqlite");
|
|
6
|
+
|
|
7
|
+
//#region src/persistence/NodeSqliteClient.ts
|
|
8
|
+
/**
|
|
9
|
+
* Port of `@effect/sql-sqlite-node` that uses the native `node:sqlite`
|
|
10
|
+
* bindings instead of `better-sqlite3`.
|
|
11
|
+
*
|
|
12
|
+
* @module SqliteClient
|
|
13
|
+
*/
|
|
14
|
+
const ATTR_DB_SYSTEM_NAME = "db.system.name";
|
|
15
|
+
const TypeId = "~local/sqlite-node/SqliteClient";
|
|
16
|
+
/**
|
|
17
|
+
* SqliteClient - Effect service tag for the sqlite SQL client.
|
|
18
|
+
*/
|
|
19
|
+
const SqliteClient = require_bin.Service("t3/persistence/NodeSqliteClient");
|
|
20
|
+
/**
|
|
21
|
+
* Verify that the current Node.js version includes the `node:sqlite` APIs
|
|
22
|
+
* used by `NodeSqliteClient` — specifically `StatementSync.columns()` (added
|
|
23
|
+
* in Node 22.16.0 / 23.11.0).
|
|
24
|
+
*
|
|
25
|
+
* @see https://github.com/nodejs/node/pull/57490
|
|
26
|
+
*/
|
|
27
|
+
const checkNodeSqliteCompat = () => {
|
|
28
|
+
const parts = process.versions.node.split(".").map(Number);
|
|
29
|
+
const major = parts[0] ?? 0;
|
|
30
|
+
const minor = parts[1] ?? 0;
|
|
31
|
+
if (!(major === 22 && minor >= 16 || major === 23 && minor >= 11 || major >= 24)) return require_bin.die$1(`Node.js ${process.versions.node} is missing required node:sqlite APIs (StatementSync.columns). Upgrade to Node.js >=22.16, >=23.11, or >=24.`);
|
|
32
|
+
return require_bin.void_;
|
|
33
|
+
};
|
|
34
|
+
const makeWithDatabase = require_bin.fn("makeWithDatabase")(function* (options, openDatabase) {
|
|
35
|
+
yield* checkNodeSqliteCompat();
|
|
36
|
+
const compiler = require_bin.makeCompilerSqlite(options.transformQueryNames);
|
|
37
|
+
const transformRows = options.transformResultNames ? require_bin.defaultTransforms(options.transformResultNames).array : void 0;
|
|
38
|
+
const makeConnection = require_bin.gen(function* () {
|
|
39
|
+
const scope$1 = yield* require_bin.scope;
|
|
40
|
+
const db = openDatabase();
|
|
41
|
+
yield* require_bin.addFinalizer$1(scope$1, require_bin.sync(() => db.close()));
|
|
42
|
+
const statementReaderCache = /* @__PURE__ */ new WeakMap();
|
|
43
|
+
const hasRows = (statement) => {
|
|
44
|
+
const cached = statementReaderCache.get(statement);
|
|
45
|
+
if (cached !== void 0) return cached;
|
|
46
|
+
const value = statement.columns().length > 0;
|
|
47
|
+
statementReaderCache.set(statement, value);
|
|
48
|
+
return value;
|
|
49
|
+
};
|
|
50
|
+
const prepareCache = yield* require_bin.make$5({
|
|
51
|
+
capacity: options.prepareCacheSize ?? 200,
|
|
52
|
+
timeToLive: options.prepareCacheTTL ?? require_bin.minutes(10),
|
|
53
|
+
lookup: (sql) => require_bin.try_({
|
|
54
|
+
try: () => db.prepare(sql),
|
|
55
|
+
catch: (cause) => new require_SqlError.SqlError({ reason: require_SqlError.classifySqliteError(cause, {
|
|
56
|
+
message: "Failed to prepare statement",
|
|
57
|
+
operation: "prepare"
|
|
58
|
+
}) })
|
|
59
|
+
})
|
|
60
|
+
});
|
|
61
|
+
const runStatement = (statement, params, raw) => require_bin.withFiber((fiber) => {
|
|
62
|
+
statement.setReadBigInts(Boolean(require_bin.get$1(fiber.services, require_bin.SafeIntegers)));
|
|
63
|
+
try {
|
|
64
|
+
if (hasRows(statement)) return require_bin.succeed(statement.all(...params));
|
|
65
|
+
const result = statement.run(...params);
|
|
66
|
+
return require_bin.succeed(raw ? result : []);
|
|
67
|
+
} catch (cause) {
|
|
68
|
+
return require_bin.fail$1(new require_SqlError.SqlError({ reason: require_SqlError.classifySqliteError(cause, {
|
|
69
|
+
message: "Failed to execute statement",
|
|
70
|
+
operation: "execute"
|
|
71
|
+
}) }));
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
const run = (sql, params, raw = false) => require_bin.flatMap(require_bin.get(prepareCache, sql), (s) => runStatement(s, params, raw));
|
|
75
|
+
const runValues = (sql, params) => require_bin.acquireUseRelease(require_bin.get(prepareCache, sql), (statement) => require_bin.try_({
|
|
76
|
+
try: () => {
|
|
77
|
+
if (hasRows(statement)) {
|
|
78
|
+
statement.setReturnArrays(true);
|
|
79
|
+
return statement.all(...params);
|
|
80
|
+
}
|
|
81
|
+
statement.run(...params);
|
|
82
|
+
return [];
|
|
83
|
+
},
|
|
84
|
+
catch: (cause) => new require_SqlError.SqlError({ reason: require_SqlError.classifySqliteError(cause, {
|
|
85
|
+
message: "Failed to execute statement",
|
|
86
|
+
operation: "execute"
|
|
87
|
+
}) })
|
|
88
|
+
}), (statement) => require_bin.sync(() => {
|
|
89
|
+
if (hasRows(statement)) statement.setReturnArrays(false);
|
|
90
|
+
}));
|
|
91
|
+
return require_bin.identity({
|
|
92
|
+
execute(sql, params, rowTransform) {
|
|
93
|
+
return rowTransform ? require_bin.map$1(run(sql, params), rowTransform) : run(sql, params);
|
|
94
|
+
},
|
|
95
|
+
executeRaw(sql, params) {
|
|
96
|
+
return run(sql, params, true);
|
|
97
|
+
},
|
|
98
|
+
executeValues(sql, params) {
|
|
99
|
+
return runValues(sql, params);
|
|
100
|
+
},
|
|
101
|
+
executeUnprepared(sql, params, rowTransform) {
|
|
102
|
+
const effect = runStatement(db.prepare(sql), params ?? [], false);
|
|
103
|
+
return rowTransform ? require_bin.map$1(effect, rowTransform) : effect;
|
|
104
|
+
},
|
|
105
|
+
executeStream(_sql, _params) {
|
|
106
|
+
return require_bin.die("executeStream not implemented");
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
const semaphore = yield* require_bin.make$7(1);
|
|
111
|
+
const connection = yield* makeConnection;
|
|
112
|
+
const acquirer = semaphore.withPermits(1)(require_bin.succeed(connection));
|
|
113
|
+
const transactionAcquirer = require_bin.uninterruptibleMask((restore) => {
|
|
114
|
+
const fiber = require_bin.getCurrent();
|
|
115
|
+
const scope = require_bin.getUnsafe(fiber.services, require_bin.Scope);
|
|
116
|
+
return require_bin.as(require_bin.tap(restore(semaphore.take(1)), () => require_bin.addFinalizer$1(scope, semaphore.release(1))), connection);
|
|
117
|
+
});
|
|
118
|
+
return yield* require_bin.make$3({
|
|
119
|
+
acquirer,
|
|
120
|
+
compiler,
|
|
121
|
+
transactionAcquirer,
|
|
122
|
+
spanAttributes: [...options.spanAttributes ? Object.entries(options.spanAttributes) : [], [ATTR_DB_SYSTEM_NAME, "sqlite"]],
|
|
123
|
+
transformRows
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
const make = (options) => makeWithDatabase(options, () => new node_sqlite.DatabaseSync(options.filename, {
|
|
127
|
+
readOnly: options.readonly ?? false,
|
|
128
|
+
allowExtension: options.allowExtension ?? false
|
|
129
|
+
}));
|
|
130
|
+
const makeMemory = (config = {}) => makeWithDatabase({
|
|
131
|
+
...config,
|
|
132
|
+
filename: ":memory:",
|
|
133
|
+
readonly: false
|
|
134
|
+
}, () => {
|
|
135
|
+
return new node_sqlite.DatabaseSync(":memory:", { allowExtension: config.allowExtension ?? false });
|
|
136
|
+
});
|
|
137
|
+
const layerConfig = (config) => require_bin.effectServices(require_bin.unwrap(config).asEffect().pipe(require_bin.flatMap(make), require_bin.map$1((client) => require_bin.make$8(SqliteClient, client).pipe(require_bin.add(require_bin.SqlClient, client))))).pipe(require_bin.provide(require_bin.layer$2));
|
|
138
|
+
const layer = (config) => require_bin.effectServices(require_bin.map$1(make(config), (client) => require_bin.make$8(SqliteClient, client).pipe(require_bin.add(require_bin.SqlClient, client)))).pipe(require_bin.provide(require_bin.layer$2));
|
|
139
|
+
const layerMemory = (config = {}) => require_bin.effectServices(require_bin.map$1(makeMemory(config), (client) => require_bin.make$8(SqliteClient, client).pipe(require_bin.add(require_bin.SqlClient, client)))).pipe(require_bin.provide(require_bin.layer$2));
|
|
140
|
+
|
|
141
|
+
//#endregion
|
|
142
|
+
exports.SqliteClient = SqliteClient;
|
|
143
|
+
exports.TypeId = TypeId;
|
|
144
|
+
exports.layer = layer;
|
|
145
|
+
exports.layerConfig = layerConfig;
|
|
146
|
+
exports.layerMemory = layerMemory;
|
|
147
|
+
//# sourceMappingURL=NodeSqliteClient-K1HOOjni.cjs.map
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const require_bin = require('./bin.cjs');
|
|
4
|
+
|
|
5
|
+
//#region ../../node_modules/effect/dist/unstable/sql/SqlError.js
|
|
6
|
+
/**
|
|
7
|
+
* @since 4.0.0
|
|
8
|
+
*/
|
|
9
|
+
const TypeId = "~effect/sql/SqlError";
|
|
10
|
+
const ReasonTypeId = "~effect/sql/SqlError/Reason";
|
|
11
|
+
const ReasonFields = {
|
|
12
|
+
cause: require_bin.Defect,
|
|
13
|
+
message: /* @__PURE__ */ require_bin.optional(require_bin.String),
|
|
14
|
+
operation: /* @__PURE__ */ require_bin.optional(require_bin.String)
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* @since 4.0.0
|
|
18
|
+
*/
|
|
19
|
+
var ConnectionError = class extends require_bin.TaggedErrorClass("effect/sql/SqlError/ConnectionError")("ConnectionError", ReasonFields) {
|
|
20
|
+
/**
|
|
21
|
+
* @since 4.0.0
|
|
22
|
+
*/
|
|
23
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
24
|
+
/**
|
|
25
|
+
* @since 4.0.0
|
|
26
|
+
*/
|
|
27
|
+
get isRetryable() {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* @since 4.0.0
|
|
33
|
+
*/
|
|
34
|
+
var AuthenticationError = class extends require_bin.TaggedErrorClass("effect/sql/SqlError/AuthenticationError")("AuthenticationError", ReasonFields) {
|
|
35
|
+
/**
|
|
36
|
+
* @since 4.0.0
|
|
37
|
+
*/
|
|
38
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
39
|
+
/**
|
|
40
|
+
* @since 4.0.0
|
|
41
|
+
*/
|
|
42
|
+
get isRetryable() {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* @since 4.0.0
|
|
48
|
+
*/
|
|
49
|
+
var AuthorizationError = class extends require_bin.TaggedErrorClass("effect/sql/SqlError/AuthorizationError")("AuthorizationError", ReasonFields) {
|
|
50
|
+
/**
|
|
51
|
+
* @since 4.0.0
|
|
52
|
+
*/
|
|
53
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
54
|
+
/**
|
|
55
|
+
* @since 4.0.0
|
|
56
|
+
*/
|
|
57
|
+
get isRetryable() {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* @since 4.0.0
|
|
63
|
+
*/
|
|
64
|
+
var SqlSyntaxError = class extends require_bin.TaggedErrorClass("effect/sql/SqlError/SqlSyntaxError")("SqlSyntaxError", ReasonFields) {
|
|
65
|
+
/**
|
|
66
|
+
* @since 4.0.0
|
|
67
|
+
*/
|
|
68
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
69
|
+
/**
|
|
70
|
+
* @since 4.0.0
|
|
71
|
+
*/
|
|
72
|
+
get isRetryable() {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* @since 4.0.0
|
|
78
|
+
*/
|
|
79
|
+
var ConstraintError = class extends require_bin.TaggedErrorClass("effect/sql/SqlError/ConstraintError")("ConstraintError", ReasonFields) {
|
|
80
|
+
/**
|
|
81
|
+
* @since 4.0.0
|
|
82
|
+
*/
|
|
83
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
84
|
+
/**
|
|
85
|
+
* @since 4.0.0
|
|
86
|
+
*/
|
|
87
|
+
get isRetryable() {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* @since 4.0.0
|
|
93
|
+
*/
|
|
94
|
+
var DeadlockError = class extends require_bin.TaggedErrorClass("effect/sql/SqlError/DeadlockError")("DeadlockError", ReasonFields) {
|
|
95
|
+
/**
|
|
96
|
+
* @since 4.0.0
|
|
97
|
+
*/
|
|
98
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
99
|
+
/**
|
|
100
|
+
* @since 4.0.0
|
|
101
|
+
*/
|
|
102
|
+
get isRetryable() {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* @since 4.0.0
|
|
108
|
+
*/
|
|
109
|
+
var SerializationError = class extends require_bin.TaggedErrorClass("effect/sql/SqlError/SerializationError")("SerializationError", ReasonFields) {
|
|
110
|
+
/**
|
|
111
|
+
* @since 4.0.0
|
|
112
|
+
*/
|
|
113
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
114
|
+
/**
|
|
115
|
+
* @since 4.0.0
|
|
116
|
+
*/
|
|
117
|
+
get isRetryable() {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* @since 4.0.0
|
|
123
|
+
*/
|
|
124
|
+
var LockTimeoutError = class extends require_bin.TaggedErrorClass("effect/sql/SqlError/LockTimeoutError")("LockTimeoutError", ReasonFields) {
|
|
125
|
+
/**
|
|
126
|
+
* @since 4.0.0
|
|
127
|
+
*/
|
|
128
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
129
|
+
/**
|
|
130
|
+
* @since 4.0.0
|
|
131
|
+
*/
|
|
132
|
+
get isRetryable() {
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* @since 4.0.0
|
|
138
|
+
*/
|
|
139
|
+
var StatementTimeoutError = class extends require_bin.TaggedErrorClass("effect/sql/SqlError/StatementTimeoutError")("StatementTimeoutError", ReasonFields) {
|
|
140
|
+
/**
|
|
141
|
+
* @since 4.0.0
|
|
142
|
+
*/
|
|
143
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
144
|
+
/**
|
|
145
|
+
* @since 4.0.0
|
|
146
|
+
*/
|
|
147
|
+
get isRetryable() {
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* @since 4.0.0
|
|
153
|
+
*/
|
|
154
|
+
var UnknownError = class extends require_bin.TaggedErrorClass("effect/sql/SqlError/UnknownError")("UnknownError", ReasonFields) {
|
|
155
|
+
/**
|
|
156
|
+
* @since 4.0.0
|
|
157
|
+
*/
|
|
158
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
159
|
+
/**
|
|
160
|
+
* @since 4.0.0
|
|
161
|
+
*/
|
|
162
|
+
get isRetryable() {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* @since 4.0.0
|
|
168
|
+
*/
|
|
169
|
+
const SqlErrorReason = /* @__PURE__ */ require_bin.Union([
|
|
170
|
+
ConnectionError,
|
|
171
|
+
AuthenticationError,
|
|
172
|
+
AuthorizationError,
|
|
173
|
+
SqlSyntaxError,
|
|
174
|
+
ConstraintError,
|
|
175
|
+
DeadlockError,
|
|
176
|
+
SerializationError,
|
|
177
|
+
LockTimeoutError,
|
|
178
|
+
StatementTimeoutError,
|
|
179
|
+
UnknownError
|
|
180
|
+
]);
|
|
181
|
+
/**
|
|
182
|
+
* @since 4.0.0
|
|
183
|
+
*/
|
|
184
|
+
var SqlError = class extends require_bin.TaggedErrorClass("effect/sql/SqlError")("SqlError", { reason: SqlErrorReason }) {
|
|
185
|
+
/**
|
|
186
|
+
* @since 4.0.0
|
|
187
|
+
*/
|
|
188
|
+
[TypeId] = TypeId;
|
|
189
|
+
/**
|
|
190
|
+
* @since 4.0.0
|
|
191
|
+
*/
|
|
192
|
+
cause = this.reason;
|
|
193
|
+
/**
|
|
194
|
+
* @since 4.0.0
|
|
195
|
+
*/
|
|
196
|
+
get message() {
|
|
197
|
+
return this.reason.message || this.reason._tag;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* @since 4.0.0
|
|
201
|
+
*/
|
|
202
|
+
get isRetryable() {
|
|
203
|
+
return this.reason.isRetryable;
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
const sqliteCodeFromCause = (cause) => {
|
|
207
|
+
if (!require_bin.hasProperty(cause, "code")) return;
|
|
208
|
+
const code = cause.code;
|
|
209
|
+
return typeof code === "string" || typeof code === "number" ? code : void 0;
|
|
210
|
+
};
|
|
211
|
+
const sqliteNumericCodeFromCause = (cause) => {
|
|
212
|
+
const code = sqliteCodeFromCause(cause);
|
|
213
|
+
if (typeof code === "number") return code;
|
|
214
|
+
if (!require_bin.hasProperty(cause, "errno")) return;
|
|
215
|
+
const errno = cause.errno;
|
|
216
|
+
return typeof errno === "number" ? errno : void 0;
|
|
217
|
+
};
|
|
218
|
+
const matchesSqliteCode = (code, expected) => code === expected || code.startsWith(expected + "_");
|
|
219
|
+
/**
|
|
220
|
+
* @since 4.0.0
|
|
221
|
+
*/
|
|
222
|
+
const classifySqliteError = (cause, { message, operation } = {}) => {
|
|
223
|
+
const props = {
|
|
224
|
+
cause,
|
|
225
|
+
message,
|
|
226
|
+
operation
|
|
227
|
+
};
|
|
228
|
+
const code = sqliteCodeFromCause(cause);
|
|
229
|
+
if (typeof code === "string") {
|
|
230
|
+
if (matchesSqliteCode(code, "SQLITE_AUTH")) return new AuthenticationError(props);
|
|
231
|
+
if (matchesSqliteCode(code, "SQLITE_PERM")) return new AuthorizationError(props);
|
|
232
|
+
if (matchesSqliteCode(code, "SQLITE_CONSTRAINT")) return new ConstraintError(props);
|
|
233
|
+
if (matchesSqliteCode(code, "SQLITE_BUSY") || matchesSqliteCode(code, "SQLITE_LOCKED")) return new LockTimeoutError(props);
|
|
234
|
+
if (matchesSqliteCode(code, "SQLITE_CANTOPEN")) return new ConnectionError(props);
|
|
235
|
+
}
|
|
236
|
+
const numericCode = sqliteNumericCodeFromCause(cause);
|
|
237
|
+
if (typeof numericCode === "number") switch (numericCode & 255) {
|
|
238
|
+
case 23: return new AuthenticationError(props);
|
|
239
|
+
case 3: return new AuthorizationError(props);
|
|
240
|
+
case 19: return new ConstraintError(props);
|
|
241
|
+
case 5:
|
|
242
|
+
case 6: return new LockTimeoutError(props);
|
|
243
|
+
case 14: return new ConnectionError(props);
|
|
244
|
+
default: return new UnknownError(props);
|
|
245
|
+
}
|
|
246
|
+
return new UnknownError(props);
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
//#endregion
|
|
250
|
+
Object.defineProperty(exports, 'SqlError', {
|
|
251
|
+
enumerable: true,
|
|
252
|
+
get: function () {
|
|
253
|
+
return SqlError;
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
Object.defineProperty(exports, 'classifySqliteError', {
|
|
257
|
+
enumerable: true,
|
|
258
|
+
get: function () {
|
|
259
|
+
return classifySqliteError;
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
//# sourceMappingURL=SqlError-UTW5yuSG.cjs.map
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const require_bin = require('./bin.cjs');
|
|
4
|
+
const require_SqlError = require('./SqlError-UTW5yuSG.cjs');
|
|
5
|
+
let bun_sqlite = require("bun:sqlite");
|
|
6
|
+
|
|
7
|
+
//#region ../../node_modules/@effect/sql-sqlite-bun/dist/SqliteClient.js
|
|
8
|
+
/**
|
|
9
|
+
* @since 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
const ATTR_DB_SYSTEM_NAME = "db.system.name";
|
|
12
|
+
const classifyError = (cause, message, operation) => require_SqlError.classifySqliteError(cause, {
|
|
13
|
+
message,
|
|
14
|
+
operation
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* @category type ids
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
const TypeId = "~@effect/sql-sqlite-bun/SqliteClient";
|
|
21
|
+
/**
|
|
22
|
+
* @category tags
|
|
23
|
+
* @since 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
const SqliteClient = /* @__PURE__ */ require_bin.Service("@effect/sql-sqlite-bun/Client");
|
|
26
|
+
/**
|
|
27
|
+
* @category constructor
|
|
28
|
+
* @since 1.0.0
|
|
29
|
+
*/
|
|
30
|
+
const make = (options) => require_bin.gen(function* () {
|
|
31
|
+
const compiler = require_bin.makeCompilerSqlite(options.transformQueryNames);
|
|
32
|
+
const transformRows = options.transformResultNames ? require_bin.defaultTransforms(options.transformResultNames).array : void 0;
|
|
33
|
+
const makeConnection = require_bin.gen(function* () {
|
|
34
|
+
const db = new bun_sqlite.Database(options.filename, {
|
|
35
|
+
readonly: options.readonly,
|
|
36
|
+
readwrite: options.readwrite ?? true,
|
|
37
|
+
create: options.create ?? true
|
|
38
|
+
});
|
|
39
|
+
yield* require_bin.addFinalizer(() => require_bin.sync(() => db.close()));
|
|
40
|
+
if (options.disableWAL !== true) db.run("PRAGMA journal_mode = WAL;");
|
|
41
|
+
const run = (sql, params = []) => require_bin.withFiber((fiber) => {
|
|
42
|
+
const statement = db.query(sql);
|
|
43
|
+
const useSafeIntegers = require_bin.get$1(fiber.services, require_bin.SafeIntegers);
|
|
44
|
+
statement.safeIntegers(useSafeIntegers);
|
|
45
|
+
try {
|
|
46
|
+
return require_bin.succeed(statement.all(...params) ?? []);
|
|
47
|
+
} catch (cause) {
|
|
48
|
+
return require_bin.fail$1(new require_SqlError.SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") }));
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
const runValues = (sql, params = []) => require_bin.withFiber((fiber) => {
|
|
52
|
+
const statement = db.query(sql);
|
|
53
|
+
const useSafeIntegers = require_bin.get$1(fiber.services, require_bin.SafeIntegers);
|
|
54
|
+
statement.safeIntegers(useSafeIntegers);
|
|
55
|
+
try {
|
|
56
|
+
return require_bin.succeed(statement.values(...params) ?? []);
|
|
57
|
+
} catch (cause) {
|
|
58
|
+
return require_bin.fail$1(new require_SqlError.SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") }));
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return require_bin.identity({
|
|
62
|
+
execute(sql, params, transformRows) {
|
|
63
|
+
return transformRows ? require_bin.map$1(run(sql, params), transformRows) : run(sql, params);
|
|
64
|
+
},
|
|
65
|
+
executeRaw(sql, params) {
|
|
66
|
+
return run(sql, params);
|
|
67
|
+
},
|
|
68
|
+
executeValues(sql, params) {
|
|
69
|
+
return runValues(sql, params);
|
|
70
|
+
},
|
|
71
|
+
executeUnprepared(sql, params, transformRows) {
|
|
72
|
+
return this.execute(sql, params, transformRows);
|
|
73
|
+
},
|
|
74
|
+
executeStream(_sql, _params) {
|
|
75
|
+
return require_bin.die("executeStream not implemented");
|
|
76
|
+
},
|
|
77
|
+
export: require_bin.try_({
|
|
78
|
+
try: () => db.serialize(),
|
|
79
|
+
catch: (cause) => new require_SqlError.SqlError({ reason: classifyError(cause, "Failed to export database", "export") })
|
|
80
|
+
}),
|
|
81
|
+
loadExtension: (path) => require_bin.try_({
|
|
82
|
+
try: () => db.loadExtension(path),
|
|
83
|
+
catch: (cause) => new require_SqlError.SqlError({ reason: classifyError(cause, "Failed to load extension", "loadExtension") })
|
|
84
|
+
})
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
const semaphore = yield* require_bin.make$7(1);
|
|
88
|
+
const connection = yield* makeConnection;
|
|
89
|
+
const acquirer = semaphore.withPermits(1)(require_bin.succeed(connection));
|
|
90
|
+
const transactionAcquirer = require_bin.uninterruptibleMask((restore) => {
|
|
91
|
+
const fiber = require_bin.getCurrent();
|
|
92
|
+
const scope = require_bin.getUnsafe(fiber.services, require_bin.Scope);
|
|
93
|
+
return require_bin.as(require_bin.tap(restore(semaphore.take(1)), () => require_bin.addFinalizer$1(scope, semaphore.release(1))), connection);
|
|
94
|
+
});
|
|
95
|
+
return Object.assign(yield* require_bin.make$3({
|
|
96
|
+
acquirer,
|
|
97
|
+
compiler,
|
|
98
|
+
transactionAcquirer,
|
|
99
|
+
spanAttributes: [...options.spanAttributes ? Object.entries(options.spanAttributes) : [], [ATTR_DB_SYSTEM_NAME, "sqlite"]],
|
|
100
|
+
transformRows
|
|
101
|
+
}), {
|
|
102
|
+
[TypeId]: TypeId,
|
|
103
|
+
config: options,
|
|
104
|
+
export: require_bin.flatMap(acquirer, (_) => _.export),
|
|
105
|
+
loadExtension: (path) => require_bin.flatMap(acquirer, (_) => _.loadExtension(path))
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
/**
|
|
109
|
+
* @category layers
|
|
110
|
+
* @since 1.0.0
|
|
111
|
+
*/
|
|
112
|
+
const layerConfig = (config) => require_bin.effectServices(require_bin.unwrap(config).asEffect().pipe(require_bin.flatMap(make), require_bin.map$1((client) => require_bin.make$8(SqliteClient, client).pipe(require_bin.add(require_bin.SqlClient, client))))).pipe(require_bin.provide(require_bin.layer$2));
|
|
113
|
+
/**
|
|
114
|
+
* @category layers
|
|
115
|
+
* @since 1.0.0
|
|
116
|
+
*/
|
|
117
|
+
const layer = (config) => require_bin.effectServices(require_bin.map$1(make(config), (client) => require_bin.make$8(SqliteClient, client).pipe(require_bin.add(require_bin.SqlClient, client)))).pipe(require_bin.provide(require_bin.layer$2));
|
|
118
|
+
|
|
119
|
+
//#endregion
|
|
120
|
+
exports.SqliteClient = SqliteClient;
|
|
121
|
+
exports.TypeId = TypeId;
|
|
122
|
+
exports.layer = layer;
|
|
123
|
+
exports.layerConfig = layerConfig;
|
|
124
|
+
exports.make = make;
|
|
125
|
+
//# sourceMappingURL=SqliteClient-CVOnk2wf.cjs.map
|