@elaraai/e3-cloud-cli 1.0.93 → 1.0.97

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.
@@ -8,41 +8,62 @@
8
8
  *
9
9
  * What a repository keeps of one workspace's Files is a file in the
10
10
  * repository, `<repo>/.e3-cloud/files/<workspace>.json`: the declarations
11
- * deployed to the workspace, where each source is bound, what each input
11
+ * deployed to the workspace, where each source is bound, what each target
12
12
  * took last, and the last sync's report. It belongs to the repository, never
13
13
  * to the project, so removing the repository removes it, with the bytes the
14
- * syncs took in.
14
+ * syncs took in. A state file written before typed files (version 1: mappings by
15
+ * input, no hashes) is read through `@elaraai/e3-cloud-files/compat` and
16
+ * written at version 2 on its next write.
15
17
  *
16
18
  * A sync reads each source with the developer's own cloud credentials (the
17
19
  * binding's profile, else the SDK's usual chain) and writes the inputs
18
- * through e3's own dataset writes, so the repository holds what a deployed
19
- * workspace's sync would.
20
+ * through e3's own dataset writes, a typed file through e3's door for a
21
+ * file (streamed to the repository's own scratch first), and a fed mutation
22
+ * through e3's own `recordMutate` on a local runner, so the repository holds
23
+ * what a deployed workspace's sync would.
20
24
  */
21
25
  import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
26
+ import { userInfo } from 'node:os';
22
27
  import { dirname, join, resolve } from 'node:path';
23
28
  import { S3Client } from '@aws-sdk/client-s3';
24
- import { ArrayType, DictType, OptionType, StringType, StructType, decodeJSONFor, encodeJSONFor, equalFor, none, some, } from '@elaraai/east';
25
- import { LocalStorage, repoGet, repositoryOpen, workspaceGetPackage } from '@elaraai/e3-core';
29
+ import { ArrayType, DictType, IntegerType, OptionType, StringType, StructType, decodeJSONFor, encodeJSONFor, equalFor, none, some, variant, } from '@elaraai/east';
30
+ import { LocalStorage, LocalTaskRunner, repoGet, repositoryOpen, workspaceGetDatasetHash, workspaceGetPackage } from '@elaraai/e3-core';
26
31
  import { nameProblem } from '@elaraai/e3-types';
27
- import { FilesBindingType, FilesLedgerType, FilesManifestType, FilesMappingType, FilesSyncReportType, } from '@elaraai/e3-cloud-types';
28
- import { checkBindings, checkFiles, parseBucketUrl, readPackageInputs } from '@elaraai/e3-cloud-files/check';
29
- import { FilesSyncError, NO_LEDGER, ledgerStateOf, ledgerValueOf, syncFiles } from '@elaraai/e3-cloud-files/sync';
32
+ import { FilesBindingType, FilesLedgerType, FilesManifestType, FilesMappingType, FilesSyncReportType, filesTargetText, } from '@elaraai/e3-cloud-types';
33
+ import { checkBindings, checkFiles, parseBucketUrl, readPackageSurface } from '@elaraai/e3-cloud-files/check';
34
+ import { FilesLedgerTypeV1, FilesManifestTypeV1, FilesSyncReportTypeV1, liftFilesLedgerV1, liftFilesManifestV1, liftFilesSyncReportV1, } from '@elaraai/e3-cloud-files/compat';
35
+ import { FilesSyncError, FilesUnreadableError, NO_LEDGER, ledgerKeyOf, ledgerStateOf, ledgerValueOf, planPush, syncFiles } from '@elaraai/e3-cloud-files/sync';
36
+ import { globMatcher } from '@elaraai/e3-cloud-files/check';
30
37
  import { storageWriter } from '@elaraai/e3-cloud-files/storage';
31
38
  import { s3FilesReader } from '@elaraai/e3-cloud-files/s3';
39
+ /** The version of the state file this CLI writes. */
40
+ export const LOCAL_FILES_VERSION = 2n;
32
41
  /** What a local repository keeps of one workspace's Files. */
33
42
  export const LocalFilesStateType = StructType({
43
+ /** The state file's version: {@link LOCAL_FILES_VERSION} */
44
+ version: IntegerType,
34
45
  /** The declarations deployed to the workspace */
35
46
  manifest: OptionType(FilesManifestType),
36
47
  /** Where each source is bound */
37
48
  bindings: ArrayType(FilesBindingType),
38
- /** What each input took last, by input */
49
+ /** What each target took last, by its ledger key */
39
50
  ledgers: DictType(StringType, FilesLedgerType),
40
51
  /** The last sync's report; a dry run's is never kept */
41
52
  lastSync: OptionType(FilesSyncReportType),
42
53
  });
54
+ /** The state file as the first version wrote it: no version, mappings by input. */
55
+ const LocalFilesStateTypeV1 = StructType({
56
+ manifest: OptionType(FilesManifestTypeV1),
57
+ bindings: ArrayType(FilesBindingType),
58
+ ledgers: DictType(StringType, FilesLedgerTypeV1),
59
+ lastSync: OptionType(FilesSyncReportTypeV1),
60
+ });
43
61
  const encodeState = encodeJSONFor(LocalFilesStateType);
44
62
  const decodeState = decodeJSONFor(LocalFilesStateType);
63
+ const decodeStateV1 = decodeJSONFor(LocalFilesStateTypeV1);
45
64
  const sameMapping = equalFor(FilesMappingType);
65
+ /** A workspace's Files before its first deploy: nothing. */
66
+ const NO_STATE = { version: LOCAL_FILES_VERSION, manifest: none, bindings: [], ledgers: new Map(), lastSync: none };
46
67
  /**
47
68
  * Opens a local repository, as e3's CLI does: refused when this e3 cannot
48
69
  * read it, upgraded in place when an older release wrote it.
@@ -67,13 +88,35 @@ export function statePath(repoPath, ws) {
67
88
  throw new Error(`'${ws}' is no workspace's name: ${reason}`);
68
89
  return join(repoPath, '.e3-cloud', 'files', `${ws}.json`);
69
90
  }
70
- /** What a repository keeps of a workspace's Files: nothing yet, before its first deploy. */
91
+ /** Where a sync streams a typed file to before e3 takes it in: the repository's own scratch. */
92
+ function scratchDir(repoPath) {
93
+ return join(repoPath, '.e3-cloud', 'scratch');
94
+ }
95
+ /** The state file's version, from its text: none for the first version's. */
96
+ function versionOf(text) {
97
+ const parsed = JSON.parse(text);
98
+ if (typeof parsed !== 'object' || parsed === null || !('version' in parsed))
99
+ return 1;
100
+ const version = parsed.version;
101
+ return typeof version === 'number' ? version : typeof version === 'string' ? Number(version) : 1;
102
+ }
103
+ /** What a repository keeps of a workspace's Files: nothing yet, before its first deploy; a first-version file lifted. */
71
104
  export function readState(repoPath, ws) {
72
105
  const path = statePath(repoPath, ws);
73
106
  if (!existsSync(path))
74
- return { manifest: none, bindings: [], ledgers: new Map(), lastSync: none };
107
+ return NO_STATE;
75
108
  try {
76
- return decodeState(readFileSync(path));
109
+ const bytes = readFileSync(path);
110
+ if (versionOf(new TextDecoder().decode(bytes)) >= 2)
111
+ return decodeState(bytes);
112
+ const v1 = decodeStateV1(bytes);
113
+ return {
114
+ version: LOCAL_FILES_VERSION,
115
+ manifest: v1.manifest.type === 'some' ? some(liftFilesManifestV1(v1.manifest.value)) : none,
116
+ bindings: v1.bindings,
117
+ ledgers: new Map([...v1.ledgers].map(([input, ledger]) => [input, liftFilesLedgerV1(ledger)])),
118
+ lastSync: v1.lastSync.type === 'some' ? some(liftFilesSyncReportV1(v1.lastSync.value)) : none,
119
+ };
77
120
  }
78
121
  catch (err) {
79
122
  throw new Error(`${path} cannot be read (${err instanceof Error ? err.message : String(err)}): remove it, then deploy the declarations and bind the sources again`);
@@ -84,20 +127,20 @@ export function writeState(repoPath, ws, state) {
84
127
  const path = statePath(repoPath, ws);
85
128
  mkdirSync(dirname(path), { recursive: true });
86
129
  const partial = `${path}.${process.pid}.partial`;
87
- writeFileSync(partial, encodeState(state));
130
+ writeFileSync(partial, encodeState({ ...state, version: LOCAL_FILES_VERSION }));
88
131
  renameSync(partial, path);
89
132
  }
90
- /** The ledger over the repository's file: each write keeps what an input took the moment it is written. */
133
+ /** The ledger over the repository's file: each write keeps what a target took the moment it is written. */
91
134
  export function stateLedger(repoPath, ws) {
92
135
  return {
93
- read(input) {
94
- const ledger = readState(repoPath, ws).ledgers.get(input);
136
+ read(key) {
137
+ const ledger = readState(repoPath, ws).ledgers.get(key);
95
138
  return Promise.resolve(ledger === undefined ? NO_LEDGER : ledgerStateOf(ledger));
96
139
  },
97
- write(input, taken) {
140
+ write(key, taken) {
98
141
  const state = readState(repoPath, ws);
99
142
  const ledgers = new Map(state.ledgers);
100
- ledgers.set(input, ledgerValueOf(taken));
143
+ ledgers.set(key, ledgerValueOf(taken));
101
144
  writeState(repoPath, ws, { ...state, ledgers });
102
145
  return Promise.resolve();
103
146
  },
@@ -111,12 +154,15 @@ export function stateLedger(repoPath, ws) {
111
154
  function naming(reader, binding) {
112
155
  const where = `source ${binding.source} (${binding.url}${binding.profile.type === 'some' ? `, profile ${binding.profile.value}` : ''})`;
113
156
  const fail = (err) => {
157
+ // A file's own refusal is the sync's to report and go on past: named as it is
158
+ if (err instanceof FilesUnreadableError)
159
+ throw err;
114
160
  throw new Error(`${where}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
115
161
  };
116
162
  return {
117
- async *list(prefix) {
163
+ async *list(prefix, options) {
118
164
  try {
119
- for await (const object of reader.list(prefix))
165
+ for await (const object of reader.list(prefix, options))
120
166
  yield object;
121
167
  }
122
168
  catch (err) {
@@ -124,7 +170,9 @@ function naming(reader, binding) {
124
170
  }
125
171
  },
126
172
  stat: (key) => reader.stat(key).catch(fail),
127
- read: (key) => reader.read(key).catch(fail),
173
+ read: (object) => reader.read(object).catch(fail),
174
+ readRange: (object, start, end) => reader.readRange(object, start, end).catch(fail),
175
+ open: (object, options) => reader.open(object, options).catch(fail),
128
176
  };
129
177
  }
130
178
  /**
@@ -150,47 +198,54 @@ export function s3Readers() {
150
198
  return naming(s3FilesReader(client, location), binding);
151
199
  };
152
200
  }
153
- /** The package a workspace runs, and its inputs. */
154
- async function packageInputs(storage, repoPath, ws) {
201
+ /** The package a workspace runs, and its inputs, records and mutations. */
202
+ async function packageSurface(storage, repoPath, ws) {
155
203
  const pkg = await workspaceGetPackage(storage, repoPath, ws);
156
- const inputs = await readPackageInputs((hash) => storage.objects.read(repoPath, hash), pkg.hash);
157
- return { pkg: { name: pkg.name, version: pkg.version }, inputs };
204
+ const surface = await readPackageSurface((hash) => storage.objects.read(repoPath, hash), pkg.hash);
205
+ return { pkg: { name: pkg.name, version: pkg.version }, surface };
206
+ }
207
+ /** Each mapping, by its target's text. */
208
+ function byTarget(manifest) {
209
+ return new Map((manifest?.mappings ?? []).map((m) => [filesTargetText(m.target), m]));
158
210
  }
159
211
  /**
160
212
  * Deploys declarations to a workspace, checked against the package it runs.
161
- * An input whose declaration changed is taken again whole by the next sync.
213
+ * A target whose declaration changed is taken again whole by the next sync.
162
214
  *
163
215
  * @param repoPath - The repository ({@link openLocalRepository})
164
216
  * @param ws - The workspace
165
217
  * @param manifest - The declarations
166
218
  * @param options - `dryRun`: check them, and keep nothing
167
- * @returns The package, every problem, and the inputs taken again
219
+ * @returns The package, every problem, and the targets taken again
168
220
  */
169
221
  export async function deployLocal(repoPath, ws, manifest, options = {}) {
170
222
  const storage = new LocalStorage();
171
- const { pkg, inputs } = await packageInputs(storage, repoPath, ws);
172
- const problems = checkFiles(manifest, inputs);
223
+ const { pkg, surface } = await packageSurface(storage, repoPath, ws);
224
+ const problems = checkFiles(manifest, surface);
173
225
  const state = readState(repoPath, ws);
174
- const previous = state.manifest.type === 'some' ? state.manifest.value.mappings : [];
175
- const retaken = [...state.ledgers.keys()].filter((input) => {
176
- const was = previous.find((m) => m.input === input);
177
- const now = manifest.mappings.find((m) => m.input === input);
178
- return was === undefined || now === undefined || !sameMapping(was, now);
226
+ const before = state.manifest.type === 'some' ? state.manifest.value : null;
227
+ const now = byTarget(manifest);
228
+ // A target declared before whose declaration changed or went is forgotten
229
+ const changed = (before?.mappings ?? []).filter((was) => {
230
+ const declared = now.get(filesTargetText(was.target));
231
+ return declared === undefined || !sameMapping(was, declared);
179
232
  });
233
+ const forget = changed.map((m) => ledgerKeyOf(m.target));
234
+ const retaken = changed.filter((m) => now.has(filesTargetText(m.target))).map((m) => m.target);
180
235
  if (problems.length === 0 && options.dryRun !== true) {
181
- const ledgers = new Map([...state.ledgers].filter(([input]) => !retaken.includes(input)));
236
+ const ledgers = new Map([...state.ledgers].filter(([key]) => !forget.includes(key)));
182
237
  writeState(repoPath, ws, { ...state, manifest: some(manifest), ledgers });
183
238
  }
184
- return { package: pkg, problems, retaken: retaken.filter((input) => manifest.mappings.some((m) => m.input === input)) };
239
+ return { package: pkg, problems, retaken };
185
240
  }
186
241
  /**
187
242
  * Binds a source to where its files are, for a workspace. A binding moved to
188
- * another URL has its inputs taken again whole by the next sync.
243
+ * another URL has its targets taken again whole by the next sync.
189
244
  *
190
245
  * @param repoPath - The repository
191
246
  * @param ws - The workspace
192
247
  * @param binding - The binding
193
- * @returns Every problem, and the inputs taken again
248
+ * @returns Every problem, and the targets taken again
194
249
  * @throws {Error} When the workspace has no declarations deployed
195
250
  */
196
251
  export function bindLocal(repoPath, ws, binding) {
@@ -202,21 +257,31 @@ export function bindLocal(repoPath, ws, binding) {
202
257
  return { problems, retaken: [] };
203
258
  const previous = state.bindings.find((b) => b.source === binding.source);
204
259
  const retaken = previous !== undefined && previous.url !== binding.url
205
- ? state.manifest.value.mappings.filter((m) => m.source === binding.source && state.ledgers.has(m.input)).map((m) => m.input)
260
+ ? state.manifest.value.mappings.filter((m) => m.source === binding.source && state.ledgers.has(ledgerKeyOf(m.target))).map((m) => m.target)
206
261
  : [];
207
- const ledgers = new Map([...state.ledgers].filter(([input]) => !retaken.includes(input)));
262
+ const forget = retaken.map(ledgerKeyOf);
263
+ const ledgers = new Map([...state.ledgers].filter(([key]) => !forget.includes(key)));
208
264
  const bindings = previous === undefined ? [...state.bindings, binding] : state.bindings.map((b) => (b.source === binding.source ? binding : b));
209
265
  writeState(repoPath, ws, { ...state, bindings, ledgers });
210
266
  return { problems: [], retaken };
211
267
  }
268
+ /** Who a local sync's commits record as their actor. */
269
+ function actor() {
270
+ try {
271
+ return `cli:${userInfo().username}`;
272
+ }
273
+ catch {
274
+ return 'cli';
275
+ }
276
+ }
212
277
  /**
213
- * Syncs a workspace's inputs with their sources' files. The declarations are
278
+ * Syncs a workspace's targets with their sources' files. The declarations are
214
279
  * checked again first, against the package the workspace runs now.
215
280
  *
216
281
  * @param repoPath - The repository
217
282
  * @param ws - The workspace
218
- * @param options - Which inputs, whether a dry run, and the reader
219
- * @returns What it did, per input
283
+ * @param options - Which targets, whether a dry run, the reader and the runner
284
+ * @returns What it did, per target
220
285
  * @throws {FilesSyncError} When the declarations no longer fit the package, or
221
286
  * a source is not bound, before anything is read
222
287
  * @throws {Error} When the workspace has no declarations deployed
@@ -227,32 +292,102 @@ export async function syncLocal(repoPath, ws, options = {}) {
227
292
  if (state.manifest.type === 'none')
228
293
  throw new Error(`${ws} has no Files declarations: deploy them first (e3-cloud files deploy)`);
229
294
  const manifest = state.manifest.value;
230
- const { inputs } = await packageInputs(storage, repoPath, ws);
231
- const problems = checkFiles(manifest, inputs);
295
+ const { surface } = await packageSurface(storage, repoPath, ws);
296
+ const problems = checkFiles(manifest, surface);
232
297
  if (problems.length > 0)
233
298
  throw new FilesSyncError(problems);
234
299
  const report = await syncFiles({
235
300
  manifest,
236
301
  bindings: state.bindings,
237
302
  reader: options.reader ?? s3Readers(),
238
- writer: storageWriter(storage, repoPath, ws),
303
+ writer: storageWriter(storage, repoPath, ws, { runner: options.runner ?? new LocalTaskRunner(repoPath), scratchDir: scratchDir(repoPath), actor: actor() }),
239
304
  ledger: stateLedger(repoPath, ws),
240
305
  dryRun: options.dryRun,
241
- inputs: options.inputs,
306
+ ...(options.targets !== undefined && { targets: options.targets }),
307
+ ...(options.reset !== undefined && { reset: options.reset }),
242
308
  });
243
309
  if (options.dryRun !== true)
244
310
  writeState(repoPath, ws, { ...readState(repoPath, ws), lastSync: some(report) });
245
311
  return report;
246
312
  }
247
313
  /**
248
- * A workspace's Files: its declarations, its bindings and its last sync.
314
+ * A workspace's Files: its declarations, its bindings, its last sync, and
315
+ * what each mapping holds (a pending record among them).
249
316
  *
250
317
  * @param repoPath - The repository
251
318
  * @param ws - The workspace
252
319
  * @returns Its status
253
320
  */
254
- export function statusLocal(repoPath, ws) {
255
- const { manifest, bindings, lastSync } = readState(repoPath, ws);
256
- return { manifest, bindings, lastSync };
321
+ export async function statusLocal(repoPath, ws) {
322
+ const { manifest, bindings, lastSync, ledgers } = readState(repoPath, ws);
323
+ const storage = new LocalStorage();
324
+ const mappings = [];
325
+ for (const mapping of manifest.type === 'some' ? manifest.value.mappings : []) {
326
+ const { target, shape } = mapping;
327
+ const ledger = ledgers.get(ledgerKeyOf(target));
328
+ const one = shape.type === 'file' || shape.type === 'latest';
329
+ const held = one && ledger !== undefined ? [...ledger.entries].at(0) : undefined;
330
+ const pending = target.type === 'record'
331
+ ? (await workspaceGetDatasetHash(storage, repoPath, ws, [variant('field', 'records'), variant('field', target.value)])).hash === null
332
+ : false;
333
+ mappings.push({
334
+ target,
335
+ holds: held === undefined ? none : some({ key: held[0], size: held[1].size, modified: held[1].modified, sha256: held[1].sha256, commit: ledger?.commit ?? none }),
336
+ pending,
337
+ });
338
+ }
339
+ return { manifest, bindings, lastSync, mappings };
340
+ }
341
+ /**
342
+ * Plans a push on a local repository: the same plan a deployed workspace's
343
+ * route makes, over the repository's declarations, bindings and ledgers,
344
+ * a `latest` prefix listed and a key read through the developer's own
345
+ * credentials; every put is the client's own (`external`).
346
+ *
347
+ * @param repoPath - The repository
348
+ * @param ws - The workspace
349
+ * @param files - The files offered
350
+ * @param options - The target named, and the reader
351
+ * @returns The plan, as the route answers one
352
+ * @throws {Error} When the workspace has no declarations deployed
353
+ */
354
+ export async function planLocal(repoPath, ws, files, options = {}) {
355
+ const state = readState(repoPath, ws);
356
+ if (state.manifest.type === 'none')
357
+ throw new Error(`${ws} has no Files declarations: deploy them first (e3-cloud files deploy)`);
358
+ const readerOf = options.reader ?? s3Readers();
359
+ const planned = await planPush({
360
+ manifest: state.manifest.value,
361
+ bindings: state.bindings,
362
+ files: files.map((f) => f.offered),
363
+ as: options.as ?? null,
364
+ ledger: (target) => stateLedger(repoPath, ws).read(ledgerKeyOf(target)),
365
+ listGreatest: async (binding, prefix, include) => {
366
+ const matches = globMatcher(include);
367
+ let greatest = null;
368
+ for await (const object of readerOf(binding).list(prefix)) {
369
+ const path = object.key.slice(prefix.length);
370
+ if (path === '' || object.key.endsWith('/') || !matches(path))
371
+ continue;
372
+ if (greatest === null || object.key > greatest.key)
373
+ greatest = object;
374
+ }
375
+ return greatest;
376
+ },
377
+ stat: (binding, key) => readerOf(binding).stat(key),
378
+ });
379
+ const bindings = [];
380
+ return {
381
+ bindings,
382
+ files: planned.map(({ file, outcome }) => {
383
+ if (outcome.kind === 'refused')
384
+ return { name: file.name, directory: file.directory, outcome: variant('refused', outcome.refusal) };
385
+ if (outcome.kind === 'unchanged')
386
+ return { name: file.name, directory: file.directory, outcome: variant('unchanged', { target: outcome.target, source: outcome.source, key: outcome.key }) };
387
+ if (!bindings.some((b) => b.source === outcome.binding.source))
388
+ bindings.push(outcome.binding);
389
+ return { name: file.name, directory: file.directory, outcome: variant('put', { target: outcome.target, source: outcome.source, key: outcome.key, upload: variant('external', null) }) };
390
+ }),
391
+ };
257
392
  }
258
393
  //# sourceMappingURL=files-local.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"files-local.js","sourceRoot":"","sources":["../../src/files-local.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files-local.js","sourceRoot":"","sources":["../../src/files-local.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ import { S3Client } from '@aws-sdk/client-s3';
6
+ import { type EastTypeValue } from '@elaraai/east';
7
+ import { type FilesBinding, type FilesPushFile, type FilesPushPlan, type FilesSyncReport, type FilesTarget } from '@elaraai/e3-cloud-types';
8
+ /** A file on disk offered to a push: where it is, and what the plan is told of it. */
9
+ export interface OfferedFile {
10
+ /** Its path on disk */
11
+ readonly path: string;
12
+ readonly offered: FilesPushFile;
13
+ }
14
+ /**
15
+ * The root type a file's beast2 header declares, through reads of its head
16
+ * (the sync's own probe: 64 KiB, then wider only for a wide type section);
17
+ * null for a file that is no beast2.
18
+ *
19
+ * @param path - The file
20
+ * @param size - Its size
21
+ * @returns Its root type, or null
22
+ */
23
+ export declare function fileBeast2Type(path: string, size: number): Promise<EastTypeValue | null>;
24
+ /**
25
+ * The files a push offers, from the paths given: each file by its own name,
26
+ * each directory's files by their relative paths, with the directory's name.
27
+ *
28
+ * @param paths - Files and directories
29
+ * @returns Each file, with what the plan is told of it
30
+ * @throws {Error} When a path is neither a file nor a directory
31
+ */
32
+ export declare function offeredFiles(paths: readonly string[]): Promise<OfferedFile[]>;
33
+ /**
34
+ * A client of the developer's own credentials for a bucket: the profile
35
+ * given, the binding's, or the ambient chain.
36
+ *
37
+ * @param binding - The binding
38
+ * @param profile - The profile given, over the binding's
39
+ * @returns The client
40
+ */
41
+ export declare function ownClient(binding: FilesBinding, profile: string | undefined): S3Client;
42
+ /**
43
+ * A put with the developer's own credentials: one PUT up to the part size,
44
+ * else a multipart upload in parts, the file read by range.
45
+ *
46
+ * @param client - The client
47
+ * @param bucket - The bucket
48
+ * @param key - The object's key
49
+ * @param path - The file
50
+ * @param size - Its size
51
+ */
52
+ export declare function putExternal(client: S3Client, bucket: string, key: string, path: string, size: number): Promise<void>;
53
+ /** What a push did with one file, as its row says. */
54
+ export interface PushRow {
55
+ readonly file: OfferedFile;
56
+ /** The target it went to, and its kind, when it matched */
57
+ readonly target: FilesTarget | null;
58
+ readonly kind: string;
59
+ /** `put`, `unchanged`, `refused: …` or `failed: …` */
60
+ readonly put: string;
61
+ /** What the sync did, once it ran */
62
+ sync: string;
63
+ }
64
+ /** How a put is uploaded, given the plan and, for an external put, the developer's credentials. */
65
+ export interface PushUploads {
66
+ /** Completes a multipart upload the plan created */
67
+ readonly complete: (key: string, uploadId: string, parts: readonly {
68
+ number: bigint;
69
+ etag: string;
70
+ }[]) => Promise<void>;
71
+ /** The profile an external put uses, over the binding's */
72
+ readonly profile?: string;
73
+ }
74
+ /**
75
+ * Uploads each planned put, four parts in flight, and answers a row per
76
+ * file: put, unchanged, refused or failed.
77
+ *
78
+ * @param plan - The plan
79
+ * @param files - The files offered, in the plan's order
80
+ * @param uploads - The completion, and the profile for external puts
81
+ * @param dryRun - Put nothing
82
+ * @returns A row per file, and the targets put
83
+ */
84
+ export declare function uploadPlanned(plan: FilesPushPlan, files: readonly OfferedFile[], uploads: PushUploads, dryRun: boolean): Promise<{
85
+ rows: PushRow[];
86
+ targets: FilesTarget[];
87
+ }>;
88
+ /** What a sync did to a row's target, in words. */
89
+ export declare function syncWords(report: FilesSyncReport | null, target: FilesTarget): string;
90
+ /**
91
+ * A push's rows, as the CLI prints them: the sources' bucket lines, a row
92
+ * per file, and the dataflow hint when anything was taken.
93
+ *
94
+ * @param plan - The plan
95
+ * @param rows - The rows
96
+ * @param next - The dataflow run hint's command, when anything changed; null for none
97
+ * @returns The lines
98
+ */
99
+ export declare function pushText(plan: FilesPushPlan, rows: readonly PushRow[], next: string | null): string;
100
+ //# sourceMappingURL=files-push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files-push.d.ts","sourceRoot":"","sources":["../../src/files-push.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0BH,OAAO,EACwG,QAAQ,EACtH,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAEL,KAAK,YAAY,EAA2B,KAAK,aAAa,EAAE,KAAK,aAAa,EAAwB,KAAK,eAAe,EAAE,KAAK,WAAW,EACjJ,MAAM,yBAAyB,CAAC;AAOjC,sFAAsF;AACtF,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAkB9F;AAwBD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAoBnF;AA8CD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAItF;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD1H;AAED,sDAAsD;AACtD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,mGAAmG;AACnG,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxH,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAWD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,CA+BnL;AA8BD,mDAAmD;AACnD,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CAUrF;AAeD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAenG"}