@gaganref/confect-alchemy 0.0.0-stage → 10.3.1-fork.2
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/LICENSE +7 -0
- package/README.md +22 -2
- package/dist/Backend.d.ts +45 -0
- package/dist/Backend.d.ts.map +1 -0
- package/dist/Backend.js +38 -0
- package/dist/Backend.js.map +1 -0
- package/dist/Code.d.ts +80 -0
- package/dist/Code.d.ts.map +1 -0
- package/dist/Code.js +29 -0
- package/dist/Code.js.map +1 -0
- package/dist/Confect.d.ts +2 -0
- package/dist/Confect.d.ts.map +1 -0
- package/dist/Confect.js +8 -0
- package/dist/Confect.js.map +1 -0
- package/dist/Convex.d.ts +7 -0
- package/dist/Convex.d.ts.map +1 -0
- package/dist/Convex.js +21 -0
- package/dist/Convex.js.map +1 -0
- package/dist/ConvexClient.d.ts +215 -0
- package/dist/ConvexClient.d.ts.map +1 -0
- package/dist/ConvexClient.js +224 -0
- package/dist/ConvexClient.js.map +1 -0
- package/dist/DeployKey.d.ts +120 -0
- package/dist/DeployKey.d.ts.map +1 -0
- package/dist/DeployKey.js +151 -0
- package/dist/DeployKey.js.map +1 -0
- package/dist/Deployment.d.ts +113 -0
- package/dist/Deployment.d.ts.map +1 -0
- package/dist/Deployment.js +160 -0
- package/dist/Deployment.js.map +1 -0
- package/dist/EnvironmentVariables.d.ts +155 -0
- package/dist/EnvironmentVariables.d.ts.map +1 -0
- package/dist/EnvironmentVariables.js +135 -0
- package/dist/EnvironmentVariables.js.map +1 -0
- package/dist/Project.d.ts +100 -0
- package/dist/Project.d.ts.map +1 -0
- package/dist/Project.js +123 -0
- package/dist/Project.js.map +1 -0
- package/dist/Providers.d.ts +17 -0
- package/dist/Providers.d.ts.map +1 -0
- package/dist/Providers.js +46 -0
- package/dist/Providers.js.map +1 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/internal/CodeDeployment.d.ts +17 -0
- package/dist/internal/CodeDeployment.d.ts.map +1 -0
- package/dist/internal/CodeDeployment.js +53 -0
- package/dist/internal/CodeDeployment.js.map +1 -0
- package/dist/internal/CommandRunner.d.ts +55 -0
- package/dist/internal/CommandRunner.d.ts.map +1 -0
- package/dist/internal/CommandRunner.js +126 -0
- package/dist/internal/CommandRunner.js.map +1 -0
- package/dist/internal/FileLock.d.ts +30 -0
- package/dist/internal/FileLock.d.ts.map +1 -0
- package/dist/internal/FileLock.js +83 -0
- package/dist/internal/FileLock.js.map +1 -0
- package/dist/internal/Lifecycle.d.ts +11 -0
- package/dist/internal/Lifecycle.d.ts.map +1 -0
- package/dist/internal/Lifecycle.js +45 -0
- package/dist/internal/Lifecycle.js.map +1 -0
- package/dist/internal/LocalBackend.d.ts +63 -0
- package/dist/internal/LocalBackend.d.ts.map +1 -0
- package/dist/internal/LocalBackend.js +333 -0
- package/dist/internal/LocalBackend.js.map +1 -0
- package/dist/internal/LocalSidecar.d.ts +3 -0
- package/dist/internal/LocalSidecar.d.ts.map +1 -0
- package/dist/internal/LocalSidecar.js +7 -0
- package/dist/internal/LocalSidecar.js.map +1 -0
- package/dist/internal/Loopback.d.ts +18 -0
- package/dist/internal/Loopback.d.ts.map +1 -0
- package/dist/internal/Loopback.js +31 -0
- package/dist/internal/Loopback.js.map +1 -0
- package/dist/internal/PushLock.d.ts +36 -0
- package/dist/internal/PushLock.d.ts.map +1 -0
- package/dist/internal/PushLock.js +61 -0
- package/dist/internal/PushLock.js.map +1 -0
- package/dist/internal/ResourceIdentity.d.ts +3 -0
- package/dist/internal/ResourceIdentity.d.ts.map +1 -0
- package/dist/internal/ResourceIdentity.js +10 -0
- package/dist/internal/ResourceIdentity.js.map +1 -0
- package/dist/internal/UserCache.d.ts +12 -0
- package/dist/internal/UserCache.d.ts.map +1 -0
- package/dist/internal/UserCache.js +25 -0
- package/dist/internal/UserCache.js.map +1 -0
- package/dist/internal/Zip.d.ts +15 -0
- package/dist/internal/Zip.d.ts.map +1 -0
- package/dist/internal/Zip.js +65 -0
- package/dist/internal/Zip.js.map +1 -0
- package/package.json +65 -3
- package/src/Backend.ts +101 -0
- package/src/Code.ts +55 -0
- package/src/Confect.ts +1 -0
- package/src/Convex.ts +18 -0
- package/src/ConvexClient.ts +544 -0
- package/src/DeployKey.ts +256 -0
- package/src/Deployment.ts +277 -0
- package/src/EnvironmentVariables.ts +254 -0
- package/src/Project.ts +205 -0
- package/src/Providers.ts +67 -0
- package/src/index.ts +2 -0
- package/src/internal/CodeDeployment.ts +81 -0
- package/src/internal/CommandRunner.ts +251 -0
- package/src/internal/FileLock.ts +136 -0
- package/src/internal/Lifecycle.ts +49 -0
- package/src/internal/LocalBackend.ts +492 -0
- package/src/internal/LocalSidecar.ts +9 -0
- package/src/internal/Loopback.ts +34 -0
- package/src/internal/PushLock.ts +99 -0
- package/src/internal/ResourceIdentity.ts +20 -0
- package/src/internal/UserCache.ts +25 -0
- package/src/internal/Zip.ts +108 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { inflateRaw } from "node:zlib";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as FileSystem from "effect/FileSystem";
|
|
4
|
+
import * as Result from "effect/Result";
|
|
5
|
+
import * as Schema from "effect/Schema";
|
|
6
|
+
|
|
7
|
+
export class ZipError extends Schema.TaggedError<ZipError>()("ZipError", {
|
|
8
|
+
reason: Schema.Literals(["format", "entry", "io"]),
|
|
9
|
+
}) {}
|
|
10
|
+
|
|
11
|
+
interface Entry {
|
|
12
|
+
readonly method: number;
|
|
13
|
+
readonly start: number;
|
|
14
|
+
readonly end: number;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const format = () => Result.fail(new ZipError({ reason: "format" }));
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Locate one entry's compressed bytes through the archive's central directory.
|
|
21
|
+
* No Zip64: a single-file release far under 4 GiB never needs it.
|
|
22
|
+
*/
|
|
23
|
+
const locate = (
|
|
24
|
+
archive: Uint8Array,
|
|
25
|
+
name: string,
|
|
26
|
+
): Result.Result<Entry, ZipError> => {
|
|
27
|
+
const bytes = Buffer.from(archive.buffer, archive.byteOffset, archive.length);
|
|
28
|
+
const end = bytes.lastIndexOf(Buffer.from([0x50, 0x4b, 0x05, 0x06]));
|
|
29
|
+
if (end < 0 || end + 22 > bytes.length) return format();
|
|
30
|
+
const directoryEnd =
|
|
31
|
+
bytes.readUInt32LE(end + 16) + bytes.readUInt32LE(end + 12);
|
|
32
|
+
if (directoryEnd > bytes.length) return format();
|
|
33
|
+
for (
|
|
34
|
+
let offset = bytes.readUInt32LE(end + 16);
|
|
35
|
+
offset + 46 <= directoryEnd;
|
|
36
|
+
) {
|
|
37
|
+
if (bytes.readUInt32LE(offset) !== 0x02014b50) return format();
|
|
38
|
+
const nameLength = bytes.readUInt16LE(offset + 28);
|
|
39
|
+
const entryName = bytes.toString(
|
|
40
|
+
"utf8",
|
|
41
|
+
offset + 46,
|
|
42
|
+
offset + 46 + nameLength,
|
|
43
|
+
);
|
|
44
|
+
if (entryName === name) {
|
|
45
|
+
const size = bytes.readUInt32LE(offset + 20);
|
|
46
|
+
const header = bytes.readUInt32LE(offset + 42);
|
|
47
|
+
if (
|
|
48
|
+
header + 30 > bytes.length ||
|
|
49
|
+
bytes.readUInt32LE(header) !== 0x04034b50
|
|
50
|
+
)
|
|
51
|
+
return format();
|
|
52
|
+
const start =
|
|
53
|
+
header +
|
|
54
|
+
30 +
|
|
55
|
+
bytes.readUInt16LE(header + 26) +
|
|
56
|
+
bytes.readUInt16LE(header + 28);
|
|
57
|
+
if (start + size > bytes.length) return format();
|
|
58
|
+
return Result.succeed({
|
|
59
|
+
method: bytes.readUInt16LE(offset + 10),
|
|
60
|
+
start,
|
|
61
|
+
end: start + size,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
offset +=
|
|
65
|
+
46 +
|
|
66
|
+
nameLength +
|
|
67
|
+
bytes.readUInt16LE(offset + 30) +
|
|
68
|
+
bytes.readUInt16LE(offset + 32);
|
|
69
|
+
}
|
|
70
|
+
return Result.fail(new ZipError({ reason: "entry" }));
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
const inflate = (data: Uint8Array) =>
|
|
74
|
+
Effect.callback<Uint8Array, ZipError>((resume) => {
|
|
75
|
+
inflateRaw(data, (error, output) =>
|
|
76
|
+
resume(
|
|
77
|
+
error
|
|
78
|
+
? Effect.fail(new ZipError({ reason: "format" }))
|
|
79
|
+
: Effect.succeed(output),
|
|
80
|
+
),
|
|
81
|
+
);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Extract one entry of a zip archive. Convex publishes the local backend as a
|
|
86
|
+
* single-file zip, stored or deflated.
|
|
87
|
+
*/
|
|
88
|
+
export const extract = Effect.fn("Zip.extract")(function* (
|
|
89
|
+
archive: string,
|
|
90
|
+
name: string,
|
|
91
|
+
destination: string,
|
|
92
|
+
) {
|
|
93
|
+
const fs = yield* FileSystem.FileSystem;
|
|
94
|
+
const bytes = yield* fs
|
|
95
|
+
.readFile(archive)
|
|
96
|
+
.pipe(Effect.mapError(() => new ZipError({ reason: "io" })));
|
|
97
|
+
const entry = yield* Effect.fromResult(locate(bytes, name));
|
|
98
|
+
const data = bytes.subarray(entry.start, entry.end);
|
|
99
|
+
const content =
|
|
100
|
+
entry.method === 8
|
|
101
|
+
? yield* inflate(data)
|
|
102
|
+
: entry.method === 0
|
|
103
|
+
? data
|
|
104
|
+
: yield* new ZipError({ reason: "format" });
|
|
105
|
+
yield* fs
|
|
106
|
+
.writeFile(destination, content, { mode: 0o755 })
|
|
107
|
+
.pipe(Effect.mapError(() => new ZipError({ reason: "io" })));
|
|
108
|
+
});
|