@runappsai/sdk 0.6.2 → 0.6.4
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 +2 -2
- package/dist/activity-tracker.d.ts +1 -0
- package/dist/activity-tracker.d.ts.map +1 -1
- package/dist/activity-tracker.js +10 -0
- package/dist/activity-tracker.js.map +1 -1
- package/dist/browser-auth.js +63 -6
- package/dist/browser-auth.js.map +1 -1
- package/dist/chat.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -2
- package/dist/client.js.map +1 -1
- package/dist/events.d.ts +6 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/files.d.ts +14 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +29 -12
- package/dist/files.js.map +1 -1
- package/dist/sdk.umd.js +3 -2
- package/dist/sdk.umd.js.map +1 -1
- package/dist/sync/engine.d.ts +5 -0
- package/dist/sync/engine.d.ts.map +1 -1
- package/dist/sync/engine.js +9 -1
- package/dist/sync/engine.js.map +1 -1
- package/package.json +3 -2
- package/src/activity-tracker.ts +9 -1
- package/src/browser-auth.ts +64 -6
- package/src/chat.ts +1 -1
- package/src/client.ts +4 -2
- package/src/events.ts +6 -1
- package/src/files.ts +32 -13
- package/src/sync/engine.ts +12 -1
package/dist/files.js
CHANGED
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
// The bundle's RunApps client uses `client.files` to access these
|
|
7
7
|
// endpoints; the underlying token must be a project-bound resource
|
|
8
8
|
// token (rrt_*) issued by the grant flow.
|
|
9
|
+
import { wrapEvents } from "./event-wrap.js";
|
|
9
10
|
function pathToURL(base, p) {
|
|
10
11
|
const trimmed = p.replace(/^\/+/, "");
|
|
11
12
|
return base + "/" + trimmed.split("/").map(encodeURIComponent).join("/");
|
|
12
13
|
}
|
|
13
14
|
export class FilesService {
|
|
14
15
|
transport;
|
|
16
|
+
events;
|
|
15
17
|
/**
|
|
16
18
|
* URL prefix for every file call.
|
|
17
19
|
*
|
|
@@ -30,12 +32,21 @@ export class FilesService {
|
|
|
30
32
|
* measure, not a permission one.
|
|
31
33
|
*/
|
|
32
34
|
base;
|
|
33
|
-
constructor(transport, project
|
|
35
|
+
constructor(transport, project,
|
|
36
|
+
/** When given, every call emits request:start / end / error so the
|
|
37
|
+
* badge can show it in flight; the sync engine's own file traffic
|
|
38
|
+
* uses a service without one. */
|
|
39
|
+
events) {
|
|
34
40
|
this.transport = transport;
|
|
41
|
+
this.events = events;
|
|
35
42
|
this.base = project
|
|
36
43
|
? "/v1/p/" + encodeURIComponent(project) + "/files"
|
|
37
44
|
: "/v1/files";
|
|
38
45
|
}
|
|
46
|
+
/** Run one file call, with badge events when the service has a bus. */
|
|
47
|
+
run(op, fn) {
|
|
48
|
+
return this.events ? wrapEvents(this.events, { model: op, capability: "files" }, fn) : fn();
|
|
49
|
+
}
|
|
39
50
|
/**
|
|
40
51
|
* Upload `body` to `path`. Returns the resulting FileObject — its
|
|
41
52
|
* `url` is the stable public address for that path.
|
|
@@ -50,11 +61,11 @@ export class FilesService {
|
|
|
50
61
|
headers["If-None-Match"] = "*";
|
|
51
62
|
if (opts?.ifMatch)
|
|
52
63
|
headers["If-Match"] = `"${opts.ifMatch.replace(/"/g, "")}"`;
|
|
53
|
-
return this.transport.putBytes(pathToURL(this.base, path), body, {
|
|
64
|
+
return this.run("files.put", () => this.transport.putBytes(pathToURL(this.base, path), body, {
|
|
54
65
|
contentType: opts?.contentType,
|
|
55
66
|
headers: Object.keys(headers).length ? headers : undefined,
|
|
56
67
|
signal: opts?.signal,
|
|
57
|
-
});
|
|
68
|
+
}));
|
|
58
69
|
}
|
|
59
70
|
/** Convenience: upload string content with sensible content-type. */
|
|
60
71
|
async putString(path, content, opts) {
|
|
@@ -78,6 +89,9 @@ export class FilesService {
|
|
|
78
89
|
* still the version that was read.
|
|
79
90
|
*/
|
|
80
91
|
async read(path, init) {
|
|
92
|
+
return this.run("files.read", () => this.readRaw(path, init));
|
|
93
|
+
}
|
|
94
|
+
async readRaw(path, init) {
|
|
81
95
|
const { data, contentType, etag, notModified } = await this.transport.getRaw(pathToURL(this.base, path), init);
|
|
82
96
|
return {
|
|
83
97
|
blob: new Blob([new Uint8Array(data)], { type: contentType || "application/octet-stream" }),
|
|
@@ -109,7 +123,7 @@ export class FilesService {
|
|
|
109
123
|
}
|
|
110
124
|
/** Stat: HEAD-only object metadata. */
|
|
111
125
|
async stat(path, init) {
|
|
112
|
-
const { status, headers } = await this.transport.head(pathToURL(this.base, path), init);
|
|
126
|
+
const { status, headers } = await this.run("files.stat", () => this.transport.head(pathToURL(this.base, path), init));
|
|
113
127
|
if (status === 404) {
|
|
114
128
|
throw Object.assign(new Error("not found"), { status: 404 });
|
|
115
129
|
}
|
|
@@ -127,12 +141,12 @@ export class FilesService {
|
|
|
127
141
|
}
|
|
128
142
|
/** Returns true iff the path resolves to an existing object. */
|
|
129
143
|
async exists(path, init) {
|
|
130
|
-
const { status } = await this.transport.head(pathToURL(this.base, path), init);
|
|
144
|
+
const { status } = await this.run("files.exists", () => this.transport.head(pathToURL(this.base, path), init));
|
|
131
145
|
return status >= 200 && status < 400;
|
|
132
146
|
}
|
|
133
147
|
/** Delete the object at `path`. Idempotent. */
|
|
134
148
|
async del(path, init) {
|
|
135
|
-
await this.transport.deletePath(pathToURL(this.base, path), init);
|
|
149
|
+
await this.run("files.del", () => this.transport.deletePath(pathToURL(this.base, path), init));
|
|
136
150
|
}
|
|
137
151
|
/** List objects. Pass an empty / omitted prefix for the root. */
|
|
138
152
|
async list(opts) {
|
|
@@ -146,7 +160,7 @@ export class FilesService {
|
|
|
146
160
|
if (opts?.glob)
|
|
147
161
|
params.set("glob", opts.glob);
|
|
148
162
|
const qs = params.toString();
|
|
149
|
-
return this.transport.getJSON(this.base + (qs ? "?" + qs : ""), opts?.signal ? { signal: opts.signal } : undefined);
|
|
163
|
+
return this.run("files.list", () => this.transport.getJSON(this.base + (qs ? "?" + qs : ""), opts?.signal ? { signal: opts.signal } : undefined));
|
|
150
164
|
}
|
|
151
165
|
/**
|
|
152
166
|
* Bulk delete: removes every object whose path starts with `prefix`
|
|
@@ -159,15 +173,15 @@ export class FilesService {
|
|
|
159
173
|
* client.files.deleteMany({ prefix: "logs/", glob: "*.bak" })
|
|
160
174
|
*/
|
|
161
175
|
async deleteMany(opts, init) {
|
|
162
|
-
return this.transport.postJSON(this.base + "/delete", { prefix: opts.prefix ?? "", glob: opts.glob ?? "" }, init);
|
|
176
|
+
return this.run("files.deleteMany", () => this.transport.postJSON(this.base + "/delete", { prefix: opts.prefix ?? "", glob: opts.glob ?? "" }, init));
|
|
163
177
|
}
|
|
164
178
|
/** Atomic rename (copy + delete server-side). */
|
|
165
179
|
async move(from, to, init) {
|
|
166
|
-
return this.transport.postJSON(this.base + "/move", { from, to }, init);
|
|
180
|
+
return this.run("files.move", () => this.transport.postJSON(this.base + "/move", { from, to }, init));
|
|
167
181
|
}
|
|
168
182
|
/** Server-side copy. */
|
|
169
183
|
async copy(from, to, init) {
|
|
170
|
-
return this.transport.postJSON(this.base + "/copy", { from, to }, init);
|
|
184
|
+
return this.run("files.copy", () => this.transport.postJSON(this.base + "/copy", { from, to }, init));
|
|
171
185
|
}
|
|
172
186
|
/**
|
|
173
187
|
* Ask the gateway to fetch `srcURL` and store the body at `path`.
|
|
@@ -175,13 +189,13 @@ export class FilesService {
|
|
|
175
189
|
* must be a public http(s) URL (private/loopback hosts rejected).
|
|
176
190
|
*/
|
|
177
191
|
async putFromURL(path, srcURL, opts) {
|
|
178
|
-
return this.transport.postJSON(this.base + "/put-url", {
|
|
192
|
+
return this.run("files.putFromURL", () => this.transport.postJSON(this.base + "/put-url", {
|
|
179
193
|
path,
|
|
180
194
|
src_url: srcURL,
|
|
181
195
|
content_type: opts?.contentType,
|
|
182
196
|
if_none_match: opts?.ifNoneMatch,
|
|
183
197
|
if_match: opts?.ifMatch,
|
|
184
|
-
}, opts?.signal ? { signal: opts.signal } : undefined);
|
|
198
|
+
}, opts?.signal ? { signal: opts.signal } : undefined));
|
|
185
199
|
}
|
|
186
200
|
/**
|
|
187
201
|
* Pipeline several file ops in one round trip. Operations execute
|
|
@@ -198,6 +212,9 @@ export class FilesService {
|
|
|
198
212
|
async batch(ops, init) {
|
|
199
213
|
if (ops.length === 0)
|
|
200
214
|
return [];
|
|
215
|
+
return this.run("files.batch", () => this.batchRaw(ops, init));
|
|
216
|
+
}
|
|
217
|
+
async batchRaw(ops, init) {
|
|
201
218
|
const chunkSize = 30;
|
|
202
219
|
if (ops.length <= chunkSize) {
|
|
203
220
|
const resp = await this.transport.postJSON(this.base + "/batch", { ops }, init);
|
package/dist/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,qEAAqE;AACrE,gEAAgE;AAChE,iDAAiD;AACjD,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}
|