@faynosync/sdk-js 0.2.1 → 0.4.0
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 +137 -15
- package/dist/client.d.ts +7 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +161 -31
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +14 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +17 -1
- package/dist/errors.js.map +1 -1
- package/dist/feed.d.ts +6 -0
- package/dist/feed.d.ts.map +1 -0
- package/dist/feed.js +79 -0
- package/dist/feed.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +32 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/url.d.ts +4 -0
- package/dist/url.d.ts.map +1 -0
- package/dist/url.js +24 -0
- package/dist/url.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# faynoSync JS SDK
|
|
2
2
|
|
|
3
|
+
[](https://faynosync.com)
|
|
4
|
+
|
|
3
5
|
Production-oriented JavaScript/TypeScript SDK for checking application updates with faynoSync.
|
|
4
6
|
|
|
5
7
|
This package is a small typed transport and developer experience layer. It does not implement update installation, platform normalization, metadata verification, caching, or business rules.
|
|
@@ -81,8 +83,12 @@ const resp = await client.checkForUpdates({
|
|
|
81
83
|
});
|
|
82
84
|
```
|
|
83
85
|
|
|
86
|
+
The SDK only validates `owner`, `appName`, and `version` as required. `channel`, `platform`, and `arch` are not validated client-side and are sent as empty query values when omitted — but if the target app in your faynoSync instance defines channels, platforms, or architectures, you must provide the matching values or the check will not resolve to the correct release.
|
|
87
|
+
|
|
84
88
|
`deviceId` is optional. When set, the SDK sends it as the `X-Device-ID` header and triggers a telemetry beacon after a successful edge response.
|
|
85
89
|
|
|
90
|
+
The SDK always uses the `manual` updater: it sends `updater=manual` on the `baseURL` API request and uses `manual` as the edge path segment. This is the native faynoSync response that carries the full metadata (`critical`, `changelog`, `is_intermediate_required`, `possible_rollback`) and the per-package URLs (`update_url_yml`, `update_url_zip`, `update_url_dmg`). Framework-specific updater modes (e.g. `electron-builder`) return their own feed format and are meant to be consumed directly by that framework — point it at the `update_url_yml` from `packageUrls` instead.
|
|
91
|
+
|
|
86
92
|
An optional `AbortSignal` can be passed as the second argument to cancel the request:
|
|
87
93
|
|
|
88
94
|
```ts
|
|
@@ -92,12 +98,102 @@ setTimeout(() => controller.abort(), 5_000);
|
|
|
92
98
|
const resp = await client.checkForUpdates(opts, controller.signal);
|
|
93
99
|
```
|
|
94
100
|
|
|
101
|
+
## Native Updater Feeds
|
|
102
|
+
|
|
103
|
+
Framework-native updaters (Squirrel.Mac, Squirrel.Windows) poll faynoSync themselves with a different `updater` value and URL shape than the SDK's `manual` check. The SDK owns that wire format so you only pick the updater.
|
|
104
|
+
|
|
105
|
+
### `resolveNativeFeed` (recommended)
|
|
106
|
+
|
|
107
|
+
`resolveNativeFeed` resolves the feed edge-first (falling back to the API) and tells you whether to invoke the native updater at all. When an edge response exists, the returned `feedURL` points at the CDN, so the native updater reads it directly and the API is never hit:
|
|
108
|
+
|
|
109
|
+
```ts
|
|
110
|
+
const feed = await client.resolveNativeFeed({
|
|
111
|
+
owner: 'admin',
|
|
112
|
+
appName: 'test',
|
|
113
|
+
version: '0.0.1',
|
|
114
|
+
channel: 'nightly',
|
|
115
|
+
platform: 'darwin',
|
|
116
|
+
arch: 'arm64',
|
|
117
|
+
updater: 'squirrel_darwin', // or 'squirrel_windows'
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
if (feed.updateAvailable) {
|
|
121
|
+
autoUpdater.setFeedURL({ url: feed.feedURL });
|
|
122
|
+
autoUpdater.checkForUpdates();
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
`feed.source` is `'edge'` or `'api'`. Why this matters: Squirrel.Mac expects `200 { "url": "<zip>" }` or `204 No Content`, but the edge mirror returns `200 { "status": "no_content" }` (not 204) when there is no update, and `404` until the API has warmed that version's edge object. The SDK handles both — it reads the edge response, returns `updateAvailable: false` on `no_content` so you skip the native updater entirely, and falls back to the API (which warms the edge) on a miss. Pointing the native updater straight at the edge URL yourself would break on those cases.
|
|
127
|
+
|
|
128
|
+
`squirrel_windows` is `edgeCacheable: false` (it diffs `RELEASES` itself), so `resolveNativeFeed` returns the API `feedURL` with `updateAvailable: true` without a pre-check.
|
|
129
|
+
|
|
130
|
+
### `buildNativeFeedURL` (low-level)
|
|
131
|
+
|
|
132
|
+
Builds just the feed URL (no request, no edge fallback) when you want to wire the native updater yourself:
|
|
133
|
+
|
|
134
|
+
```ts
|
|
135
|
+
const url = client.buildNativeFeedURL({ owner, appName, version, channel, platform, arch, updater: 'squirrel_darwin' });
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
- `squirrel_darwin` → `GET {baseURL}/checkVersion?...&updater=squirrel_darwin`
|
|
139
|
+
- `squirrel_windows` → `{baseURL}/update/{owner}/{app}/{channel}/{platform}/{arch}/{version}`; Squirrel.Windows appends `/RELEASES` itself.
|
|
140
|
+
|
|
141
|
+
For both methods `owner`, `appName`, `version`, `platform`, and `arch` are required; an unknown `updater` throws `UnsupportedUpdaterError`. The supported values are exported as `NATIVE_UPDATERS`.
|
|
142
|
+
|
|
143
|
+
## Reports
|
|
144
|
+
|
|
145
|
+
`reportEvent` posts a failure or diagnostic report to `POST /reports/ingest`. The client stays stateless and app-agnostic, so `reportKey` and `deviceId` are passed per call (like `checkForUpdates`), not stored in `Config`.
|
|
146
|
+
|
|
147
|
+
```ts
|
|
148
|
+
const resp = await client.reportEvent({
|
|
149
|
+
reportKey: 'rpk_...', // sent as Authorization: Bearer
|
|
150
|
+
deviceId: 'device-1', // required, sent as X-Device-ID
|
|
151
|
+
appName: 'test',
|
|
152
|
+
version: '0.0.0.5',
|
|
153
|
+
channel: 'nightly',
|
|
154
|
+
platform: 'darwin',
|
|
155
|
+
arch: 'arm64',
|
|
156
|
+
event: { type: 'crash', reason: 'segfault.signal-11' },
|
|
157
|
+
details: { stack: '...', exitCode: 11 }, // optional raw debug object
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
console.log(resp.status, resp.groupHash, resp.storedDetails);
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
`event.type` must be one of `crash`, `startup_failure`, `update_failure`, `install_failure`, or `rollback_failure`. `event.reason` must match `^[a-zA-Z0-9._-]{1,128}$`.
|
|
164
|
+
|
|
165
|
+
`reportKey`, `deviceId`, `appName`, `version`, `channel`, `platform`, and `arch` are all required and validated client-side.
|
|
166
|
+
|
|
167
|
+
`details` is optional. When supplied, the SDK serializes it with `JSON.stringify`, gzip-compresses it, and base64-encodes the result. The request carries it as:
|
|
168
|
+
|
|
169
|
+
```json
|
|
170
|
+
{
|
|
171
|
+
"details": {
|
|
172
|
+
"encoding": "gzip+base64",
|
|
173
|
+
"content_type": "application/json",
|
|
174
|
+
"payload": "<base64(gzip(json))>"
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
When `details` is omitted, the `details` field is left out of the request entirely.
|
|
180
|
+
|
|
181
|
+
A successful request returns HTTP `202` with a mapped `ReportResponse`:
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
{ "status": "accepted", "group_hash": "...", "stored_details": false }
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Any non-`202` response rejects with an `EndpointError` whose `source` is `'report'` and `statusCode` holds the HTTP status (e.g. `401`, `403`, `429`). Network and JSON failures are wrapped in `EndpointError` as well.
|
|
188
|
+
|
|
189
|
+
An optional `AbortSignal` can be passed as the second argument to cancel the request.
|
|
190
|
+
|
|
95
191
|
## Base API Request
|
|
96
192
|
|
|
97
193
|
The `baseURL` API request uses `GET /checkVersion`:
|
|
98
194
|
|
|
99
195
|
```
|
|
100
|
-
GET /checkVersion?app_name=test&version=0.0.0.5&channel=nightly&platform=darwin&arch=arm64&owner=admin
|
|
196
|
+
GET /checkVersion?app_name=test&version=0.0.0.5&channel=nightly&platform=darwin&arch=arm64&owner=admin&updater=manual
|
|
101
197
|
X-Device-ID: optional
|
|
102
198
|
```
|
|
103
199
|
|
|
@@ -147,13 +243,13 @@ for (const pkg of resp.packageUrls) {
|
|
|
147
243
|
When `edgeURL` is configured, the SDK first tries a static JSON response:
|
|
148
244
|
|
|
149
245
|
```
|
|
150
|
-
GET /responses/{owner}/{appName}/{channel}/{platform}/{arch}/{version}.json
|
|
246
|
+
GET /responses/{owner}/{appName}/{channel}/{platform}/{arch}/manual/{version}.json
|
|
151
247
|
```
|
|
152
248
|
|
|
153
|
-
|
|
249
|
+
The updater segment is always `manual`:
|
|
154
250
|
|
|
155
251
|
```
|
|
156
|
-
GET /responses/admin/test/nightly/darwin/arm64/0.0.0.5.json
|
|
252
|
+
GET /responses/admin/test/nightly/darwin/arm64/manual/0.0.0.5.json
|
|
157
253
|
```
|
|
158
254
|
|
|
159
255
|
If the edge response succeeds with HTTP 200 and valid JSON, `resp.source` is `'edge'`.
|
|
@@ -200,9 +296,8 @@ The SDK validates required fields and throws typed errors:
|
|
|
200
296
|
```ts
|
|
201
297
|
import {
|
|
202
298
|
Client,
|
|
203
|
-
RequestFailedError,
|
|
204
|
-
EndpointError,
|
|
205
299
|
CheckError,
|
|
300
|
+
EndpointError,
|
|
206
301
|
ErrMissingBaseURL,
|
|
207
302
|
ErrMissingOwner,
|
|
208
303
|
ErrMissingAppName,
|
|
@@ -220,20 +315,47 @@ try {
|
|
|
220
315
|
// set opts.appName
|
|
221
316
|
} else if (err === ErrMissingVersion) {
|
|
222
317
|
// set opts.version
|
|
223
|
-
} else if (err instanceof
|
|
224
|
-
//
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
console.error('
|
|
231
|
-
console.error('status:', err.statusCode);
|
|
318
|
+
} else if (err instanceof CheckError) {
|
|
319
|
+
// every edge/api attempt failed
|
|
320
|
+
console.error('edge error:', err.edgeError?.message);
|
|
321
|
+
console.error('api error:', err.apiError?.message);
|
|
322
|
+
|
|
323
|
+
if (err.apiError instanceof EndpointError) {
|
|
324
|
+
console.error('url:', err.apiError.endpointUrl);
|
|
325
|
+
console.error('status:', err.apiError.statusCode);
|
|
232
326
|
}
|
|
233
327
|
}
|
|
234
328
|
}
|
|
235
329
|
```
|
|
236
330
|
|
|
331
|
+
A failed update check always rejects with a `CheckError`. Its `edgeError` and `apiError` fields hold the underlying `EndpointError` for each attempt (the edge error is absent when `edgeURL` is not configured).
|
|
332
|
+
|
|
333
|
+
### Error hierarchy
|
|
334
|
+
|
|
335
|
+
```
|
|
336
|
+
FaynoSyncError
|
|
337
|
+
├── ValidationError // ErrMissing* / ErrInvalid* singletons
|
|
338
|
+
└── RequestFailedError // base class for any failed request
|
|
339
|
+
├── EndpointError // a single edge/api request failed (has source, endpointUrl, statusCode)
|
|
340
|
+
└── CheckError // checkForUpdates failed (wraps edgeError / apiError)
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
If you only need to tell a failed request apart from a bad option, catch the base `RequestFailedError`:
|
|
344
|
+
|
|
345
|
+
```ts
|
|
346
|
+
import { Client, RequestFailedError } from '@faynosync/sdk-js';
|
|
347
|
+
|
|
348
|
+
try {
|
|
349
|
+
const resp = await client.checkForUpdates(opts);
|
|
350
|
+
} catch (err) {
|
|
351
|
+
if (err instanceof RequestFailedError) {
|
|
352
|
+
console.error('update check request failed:', err.message);
|
|
353
|
+
} else {
|
|
354
|
+
console.error('invalid update check options:', (err as Error).message);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
```
|
|
358
|
+
|
|
237
359
|
Validation errors (`ErrMissing*`, `ErrInvalid*`) are singleton instances — use `===` to check them. Request failures are class instances — use `instanceof` to narrow them.
|
|
238
360
|
|
|
239
361
|
## Examples
|
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CheckOptions, UpdateResponse } from './types';
|
|
1
|
+
import type { CheckOptions, NativeFeedOptions, NativeFeedResult, ReportOptions, ReportResponse, UpdateResponse } from './types';
|
|
2
2
|
export interface Config {
|
|
3
3
|
readonly baseURL: string;
|
|
4
4
|
readonly edgeURL?: string;
|
|
@@ -12,12 +12,18 @@ export declare class Client {
|
|
|
12
12
|
private readonly timeoutMs;
|
|
13
13
|
constructor(cfg: Config);
|
|
14
14
|
checkForUpdates(opts: CheckOptions, signal?: AbortSignal): Promise<UpdateResponse>;
|
|
15
|
+
reportEvent(opts: ReportOptions, signal?: AbortSignal): Promise<ReportResponse>;
|
|
16
|
+
private buildReportURL;
|
|
15
17
|
private validateConfig;
|
|
16
18
|
private checkEdge;
|
|
17
19
|
private checkAPI;
|
|
18
20
|
private doUpdateRequest;
|
|
21
|
+
buildNativeFeedURL(opts: NativeFeedOptions): string;
|
|
22
|
+
resolveNativeFeed(opts: NativeFeedOptions, signal?: AbortSignal): Promise<NativeFeedResult>;
|
|
23
|
+
private fetchNativeFeed;
|
|
19
24
|
private buildAPICheckURL;
|
|
20
25
|
private buildEdgeCheckURL;
|
|
26
|
+
private buildEdgeResponseURL;
|
|
21
27
|
private buildEdgeTelemetryBeaconURL;
|
|
22
28
|
private sendEdgeTelemetryBeacon;
|
|
23
29
|
}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAGhB,aAAa,EACb,cAAc,EACd,cAAc,EAEf,MAAM,SAAS,CAAC;AA6BjB,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAyCD,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,GAAG,EAAE,MAAM;IAOjB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAkClF,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IA4CrF,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,cAAc;YAOR,SAAS;YAKT,QAAQ;YAKR,eAAe;IAsC7B,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM;IAK7C,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAyBnF,eAAe;IAsC7B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,2BAA2B;YAerB,uBAAuB;CAkBtC"}
|
package/dist/client.js
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Client = void 0;
|
|
4
|
+
const node_zlib_1 = require("node:zlib");
|
|
5
|
+
const feed_1 = require("./feed");
|
|
6
|
+
const url_1 = require("./url");
|
|
4
7
|
const errors_1 = require("./errors");
|
|
5
8
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
6
9
|
const USER_AGENT = 'faynosync-js/1.0';
|
|
10
|
+
const UPDATER = 'manual';
|
|
11
|
+
const REPORT_EVENT_TYPES = [
|
|
12
|
+
'crash',
|
|
13
|
+
'startup_failure',
|
|
14
|
+
'update_failure',
|
|
15
|
+
'install_failure',
|
|
16
|
+
'rollback_failure',
|
|
17
|
+
];
|
|
18
|
+
const REPORT_REASON_PATTERN = /^[a-zA-Z0-9._-]{1,128}$/;
|
|
7
19
|
class Client {
|
|
8
20
|
baseURL;
|
|
9
21
|
edgeURL;
|
|
@@ -48,11 +60,54 @@ class Client {
|
|
|
48
60
|
throw new errors_1.CheckError(edgeError, apiError);
|
|
49
61
|
}
|
|
50
62
|
}
|
|
63
|
+
async reportEvent(opts, signal) {
|
|
64
|
+
this.validateConfig();
|
|
65
|
+
validateReportOptions(opts);
|
|
66
|
+
const url = this.buildReportURL();
|
|
67
|
+
const body = buildReportBody(opts);
|
|
68
|
+
const headers = {
|
|
69
|
+
Authorization: `Bearer ${opts.reportKey}`,
|
|
70
|
+
'X-Device-ID': opts.deviceId,
|
|
71
|
+
'Content-Type': 'application/json',
|
|
72
|
+
Accept: 'application/json',
|
|
73
|
+
'User-Agent': USER_AGENT,
|
|
74
|
+
};
|
|
75
|
+
const reqSignal = createRequestSignal(signal ?? null, this.timeoutMs);
|
|
76
|
+
let res;
|
|
77
|
+
try {
|
|
78
|
+
res = await this.fetchFn(url, {
|
|
79
|
+
method: 'POST',
|
|
80
|
+
headers,
|
|
81
|
+
body: JSON.stringify(body),
|
|
82
|
+
signal: reqSignal,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
throw new errors_1.EndpointError('report', url, undefined, err);
|
|
87
|
+
}
|
|
88
|
+
if (res.status !== 202) {
|
|
89
|
+
await res.body?.cancel();
|
|
90
|
+
throw new errors_1.EndpointError('report', url, res.status);
|
|
91
|
+
}
|
|
92
|
+
let raw;
|
|
93
|
+
try {
|
|
94
|
+
raw = (await res.json());
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
throw new errors_1.EndpointError('report', url, undefined, err);
|
|
98
|
+
}
|
|
99
|
+
return parseReportResponse(raw);
|
|
100
|
+
}
|
|
101
|
+
buildReportURL() {
|
|
102
|
+
const u = (0, url_1.parseAbsoluteURL)(this.baseURL, errors_1.ErrInvalidBaseURL);
|
|
103
|
+
u.pathname = (0, url_1.joinURLPath)(u.pathname, 'reports/ingest');
|
|
104
|
+
return u.toString();
|
|
105
|
+
}
|
|
51
106
|
validateConfig() {
|
|
52
107
|
if (this.baseURL.trim() === '') {
|
|
53
108
|
throw errors_1.ErrMissingBaseURL;
|
|
54
109
|
}
|
|
55
|
-
parseAbsoluteURL(this.baseURL, errors_1.ErrInvalidBaseURL);
|
|
110
|
+
(0, url_1.parseAbsoluteURL)(this.baseURL, errors_1.ErrInvalidBaseURL);
|
|
56
111
|
}
|
|
57
112
|
async checkEdge(opts, signal) {
|
|
58
113
|
const url = this.buildEdgeCheckURL(opts);
|
|
@@ -91,21 +146,71 @@ class Client {
|
|
|
91
146
|
}
|
|
92
147
|
return parseUpdateResponse(raw);
|
|
93
148
|
}
|
|
149
|
+
buildNativeFeedURL(opts) {
|
|
150
|
+
this.validateConfig();
|
|
151
|
+
return (0, feed_1.buildNativeFeedURL)(this.baseURL, opts);
|
|
152
|
+
}
|
|
153
|
+
async resolveNativeFeed(opts, signal) {
|
|
154
|
+
this.validateConfig();
|
|
155
|
+
const apiURL = this.buildNativeFeedURL(opts);
|
|
156
|
+
const sig = signal ?? null;
|
|
157
|
+
if (!(0, feed_1.isEdgeCacheableUpdater)(opts.updater)) {
|
|
158
|
+
// updatePath-style feed (Squirrel.Windows): the framework diffs RELEASES itself,
|
|
159
|
+
// so we can't pre-check and just hand it the API endpoint.
|
|
160
|
+
return { updateAvailable: true, feedURL: apiURL, source: 'api' };
|
|
161
|
+
}
|
|
162
|
+
if (this.edgeURL !== '') {
|
|
163
|
+
const edgeURL = this.buildEdgeResponseURL(opts, opts.updater);
|
|
164
|
+
try {
|
|
165
|
+
const r = await this.fetchNativeFeed(edgeURL, 'edge', sig);
|
|
166
|
+
return { ...r, feedURL: edgeURL, source: 'edge' };
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// edge miss/error -> fall back to the API feed
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
const r = await this.fetchNativeFeed(apiURL, 'api', sig);
|
|
173
|
+
return { ...r, feedURL: apiURL, source: 'api' };
|
|
174
|
+
}
|
|
175
|
+
async fetchNativeFeed(url, source, signal) {
|
|
176
|
+
const headers = {
|
|
177
|
+
Accept: 'application/json',
|
|
178
|
+
'User-Agent': USER_AGENT,
|
|
179
|
+
};
|
|
180
|
+
const reqSignal = createRequestSignal(signal, this.timeoutMs);
|
|
181
|
+
let res;
|
|
182
|
+
try {
|
|
183
|
+
res = await this.fetchFn(url, { headers, signal: reqSignal });
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
throw new errors_1.EndpointError(source, url, undefined, err);
|
|
187
|
+
}
|
|
188
|
+
if (res.status === 204) {
|
|
189
|
+
await res.body?.cancel();
|
|
190
|
+
return { updateAvailable: false };
|
|
191
|
+
}
|
|
192
|
+
if (res.status !== 200) {
|
|
193
|
+
await res.body?.cancel();
|
|
194
|
+
throw new errors_1.EndpointError(source, url, res.status);
|
|
195
|
+
}
|
|
196
|
+
let raw;
|
|
197
|
+
try {
|
|
198
|
+
raw = (await res.json());
|
|
199
|
+
}
|
|
200
|
+
catch (err) {
|
|
201
|
+
throw new errors_1.EndpointError(source, url, undefined, err);
|
|
202
|
+
}
|
|
203
|
+
const feedUrl = typeof raw.url === 'string' ? raw.url : undefined;
|
|
204
|
+
return { updateAvailable: feedUrl !== undefined, url: feedUrl };
|
|
205
|
+
}
|
|
94
206
|
buildAPICheckURL(opts) {
|
|
95
|
-
|
|
96
|
-
u.pathname = joinURLPath(u.pathname, 'checkVersion');
|
|
97
|
-
u.search = new URLSearchParams({
|
|
98
|
-
app_name: opts.appName,
|
|
99
|
-
version: opts.version,
|
|
100
|
-
channel: opts.channel ?? '',
|
|
101
|
-
platform: opts.platform ?? '',
|
|
102
|
-
arch: opts.arch ?? '',
|
|
103
|
-
owner: opts.owner,
|
|
104
|
-
}).toString();
|
|
105
|
-
return u.toString();
|
|
207
|
+
return (0, feed_1.buildCheckVersionURL)(this.baseURL, opts, UPDATER);
|
|
106
208
|
}
|
|
107
209
|
buildEdgeCheckURL(opts) {
|
|
108
|
-
|
|
210
|
+
return this.buildEdgeResponseURL(opts, UPDATER);
|
|
211
|
+
}
|
|
212
|
+
buildEdgeResponseURL(opts, updater) {
|
|
213
|
+
const u = (0, url_1.parseAbsoluteURL)(this.edgeURL, errors_1.ErrInvalidEdgeURL);
|
|
109
214
|
const segments = [
|
|
110
215
|
'responses',
|
|
111
216
|
opts.owner,
|
|
@@ -113,14 +218,15 @@ class Client {
|
|
|
113
218
|
opts.channel ?? '',
|
|
114
219
|
opts.platform ?? '',
|
|
115
220
|
opts.arch ?? '',
|
|
221
|
+
updater,
|
|
116
222
|
`${opts.version.replace(/-/g, '.')}.json`,
|
|
117
223
|
];
|
|
118
224
|
const base = (u.origin + u.pathname).replace(/\/+$/, '');
|
|
119
225
|
return `${base}/${segments.map(encodeURIComponent).join('/')}`;
|
|
120
226
|
}
|
|
121
227
|
buildEdgeTelemetryBeaconURL(opts, isLatest) {
|
|
122
|
-
const u = parseAbsoluteURL(this.baseURL, errors_1.ErrInvalidBaseURL);
|
|
123
|
-
u.pathname = joinURLPath(u.pathname, 'telemetry/beacon');
|
|
228
|
+
const u = (0, url_1.parseAbsoluteURL)(this.baseURL, errors_1.ErrInvalidBaseURL);
|
|
229
|
+
u.pathname = (0, url_1.joinURLPath)(u.pathname, 'telemetry/beacon');
|
|
124
230
|
u.search = new URLSearchParams({
|
|
125
231
|
app_name: opts.appName,
|
|
126
232
|
version: opts.version,
|
|
@@ -155,24 +261,48 @@ function validateCheckOptions(opts) {
|
|
|
155
261
|
if (!opts.version)
|
|
156
262
|
throw errors_1.ErrMissingVersion;
|
|
157
263
|
}
|
|
158
|
-
function
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
throw
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
264
|
+
function validateReportOptions(opts) {
|
|
265
|
+
if (!opts.reportKey)
|
|
266
|
+
throw errors_1.ErrMissingReportKey;
|
|
267
|
+
if (!opts.deviceId)
|
|
268
|
+
throw errors_1.ErrMissingDeviceId;
|
|
269
|
+
if (!opts.appName)
|
|
270
|
+
throw errors_1.ErrMissingAppName;
|
|
271
|
+
if (!opts.version)
|
|
272
|
+
throw errors_1.ErrMissingVersion;
|
|
273
|
+
if (!opts.channel)
|
|
274
|
+
throw errors_1.ErrMissingChannel;
|
|
275
|
+
if (!opts.platform)
|
|
276
|
+
throw errors_1.ErrMissingPlatform;
|
|
277
|
+
if (!opts.arch)
|
|
278
|
+
throw errors_1.ErrMissingArch;
|
|
279
|
+
if (!REPORT_EVENT_TYPES.includes(opts.event.type))
|
|
280
|
+
throw errors_1.ErrInvalidEventType;
|
|
281
|
+
if (!REPORT_REASON_PATTERN.test(opts.event.reason))
|
|
282
|
+
throw errors_1.ErrInvalidReason;
|
|
170
283
|
}
|
|
171
|
-
function
|
|
172
|
-
|
|
173
|
-
|
|
284
|
+
function buildReportBody(opts) {
|
|
285
|
+
const body = {
|
|
286
|
+
application: { name: opts.appName, version: opts.version, channel: opts.channel },
|
|
287
|
+
system: { platform: opts.platform, arch: opts.arch },
|
|
288
|
+
event: { type: opts.event.type, reason: opts.event.reason },
|
|
289
|
+
};
|
|
290
|
+
if (opts.details !== undefined) {
|
|
291
|
+
const payload = (0, node_zlib_1.gzipSync)(Buffer.from(JSON.stringify(opts.details))).toString('base64');
|
|
292
|
+
body.details = {
|
|
293
|
+
encoding: 'gzip+base64',
|
|
294
|
+
content_type: 'application/json',
|
|
295
|
+
payload,
|
|
296
|
+
};
|
|
174
297
|
}
|
|
175
|
-
return
|
|
298
|
+
return body;
|
|
299
|
+
}
|
|
300
|
+
function parseReportResponse(raw) {
|
|
301
|
+
return {
|
|
302
|
+
status: raw.status ?? '',
|
|
303
|
+
groupHash: raw.group_hash ?? '',
|
|
304
|
+
storedDetails: raw.stored_details ?? false,
|
|
305
|
+
};
|
|
176
306
|
}
|
|
177
307
|
function createRequestSignal(userSignal, timeoutMs) {
|
|
178
308
|
const timeoutSignal = AbortSignal.timeout(timeoutMs);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { EndpointSource } from './types';
|
|
2
2
|
export declare class FaynoSyncError extends Error {
|
|
3
3
|
constructor(message: string);
|
|
4
4
|
}
|
|
@@ -9,20 +9,31 @@ export declare class RequestFailedError extends FaynoSyncError {
|
|
|
9
9
|
constructor(message: string);
|
|
10
10
|
}
|
|
11
11
|
export declare class EndpointError extends RequestFailedError {
|
|
12
|
-
readonly source:
|
|
12
|
+
readonly source: EndpointSource;
|
|
13
13
|
readonly endpointUrl: string;
|
|
14
14
|
readonly statusCode?: number | undefined;
|
|
15
|
-
constructor(source:
|
|
15
|
+
constructor(source: EndpointSource, endpointUrl: string, statusCode?: number | undefined, cause?: Error);
|
|
16
16
|
}
|
|
17
17
|
export declare class CheckError extends RequestFailedError {
|
|
18
18
|
readonly edgeError?: Error | undefined;
|
|
19
19
|
readonly apiError?: Error | undefined;
|
|
20
20
|
constructor(edgeError?: Error | undefined, apiError?: Error | undefined);
|
|
21
21
|
}
|
|
22
|
+
export declare class UnsupportedUpdaterError extends ValidationError {
|
|
23
|
+
readonly updater: string;
|
|
24
|
+
constructor(updater: string);
|
|
25
|
+
}
|
|
22
26
|
export declare const ErrMissingBaseURL: ValidationError;
|
|
23
27
|
export declare const ErrInvalidBaseURL: ValidationError;
|
|
24
28
|
export declare const ErrInvalidEdgeURL: ValidationError;
|
|
25
29
|
export declare const ErrMissingOwner: ValidationError;
|
|
26
30
|
export declare const ErrMissingAppName: ValidationError;
|
|
27
31
|
export declare const ErrMissingVersion: ValidationError;
|
|
32
|
+
export declare const ErrMissingReportKey: ValidationError;
|
|
33
|
+
export declare const ErrMissingDeviceId: ValidationError;
|
|
34
|
+
export declare const ErrMissingChannel: ValidationError;
|
|
35
|
+
export declare const ErrMissingPlatform: ValidationError;
|
|
36
|
+
export declare const ErrMissingArch: ValidationError;
|
|
37
|
+
export declare const ErrInvalidEventType: ValidationError;
|
|
38
|
+
export declare const ErrInvalidReason: ValidationError;
|
|
28
39
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,cAAc;gBACrC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,kBAAmB,SAAQ,cAAc;gBACxC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,aAAc,SAAQ,kBAAkB;aAEjC,MAAM,EAAE,cAAc;aACtB,WAAW,EAAE,MAAM;aACnB,UAAU,CAAC,EAAE,MAAM;gBAFnB,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,YAAA,EACnC,KAAK,CAAC,EAAE,KAAK;CAgBhB;AAED,qBAAa,UAAW,SAAQ,kBAAkB;aAE9B,SAAS,CAAC,EAAE,KAAK;aACjB,QAAQ,CAAC,EAAE,KAAK;gBADhB,SAAS,CAAC,EAAE,KAAK,YAAA,EACjB,QAAQ,CAAC,EAAE,KAAK,YAAA;CAenC;AAED,qBAAa,uBAAwB,SAAQ,eAAe;aAC9B,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;CAI5C;AAED,eAAO,MAAM,iBAAiB,iBAAqD,CAAC;AACpF,eAAO,MAAM,iBAAiB,iBAAqD,CAAC;AACpF,eAAO,MAAM,iBAAiB,iBAAqD,CAAC;AACpF,eAAO,MAAM,eAAe,iBAAkD,CAAC;AAC/E,eAAO,MAAM,iBAAiB,iBAAqD,CAAC;AACpF,eAAO,MAAM,iBAAiB,iBAAoD,CAAC;AACnF,eAAO,MAAM,mBAAmB,iBAAuD,CAAC;AACxF,eAAO,MAAM,kBAAkB,iBAAsD,CAAC;AACtF,eAAO,MAAM,iBAAiB,iBAAoD,CAAC;AACnF,eAAO,MAAM,kBAAkB,iBAAqD,CAAC;AACrF,eAAO,MAAM,cAAc,iBAAiD,CAAC;AAC7E,eAAO,MAAM,mBAAmB,iBAAuD,CAAC;AACxF,eAAO,MAAM,gBAAgB,iBAAyD,CAAC"}
|
package/dist/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ErrMissingVersion = exports.ErrMissingAppName = exports.ErrMissingOwner = exports.ErrInvalidEdgeURL = exports.ErrInvalidBaseURL = exports.ErrMissingBaseURL = exports.CheckError = exports.EndpointError = exports.RequestFailedError = exports.ValidationError = exports.FaynoSyncError = void 0;
|
|
3
|
+
exports.ErrInvalidReason = exports.ErrInvalidEventType = exports.ErrMissingArch = exports.ErrMissingPlatform = exports.ErrMissingChannel = exports.ErrMissingDeviceId = exports.ErrMissingReportKey = exports.ErrMissingVersion = exports.ErrMissingAppName = exports.ErrMissingOwner = exports.ErrInvalidEdgeURL = exports.ErrInvalidBaseURL = exports.ErrMissingBaseURL = exports.UnsupportedUpdaterError = exports.CheckError = exports.EndpointError = exports.RequestFailedError = exports.ValidationError = exports.FaynoSyncError = void 0;
|
|
4
4
|
class FaynoSyncError extends Error {
|
|
5
5
|
constructor(message) {
|
|
6
6
|
super(message);
|
|
@@ -72,10 +72,26 @@ class CheckError extends RequestFailedError {
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
exports.CheckError = CheckError;
|
|
75
|
+
class UnsupportedUpdaterError extends ValidationError {
|
|
76
|
+
updater;
|
|
77
|
+
constructor(updater) {
|
|
78
|
+
super(`faynosync: unsupported updater: ${updater}`);
|
|
79
|
+
this.updater = updater;
|
|
80
|
+
this.name = 'UnsupportedUpdaterError';
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.UnsupportedUpdaterError = UnsupportedUpdaterError;
|
|
75
84
|
exports.ErrMissingBaseURL = new ValidationError('faynosync: missing base URL');
|
|
76
85
|
exports.ErrInvalidBaseURL = new ValidationError('faynosync: invalid base URL');
|
|
77
86
|
exports.ErrInvalidEdgeURL = new ValidationError('faynosync: invalid edge URL');
|
|
78
87
|
exports.ErrMissingOwner = new ValidationError('faynosync: missing owner');
|
|
79
88
|
exports.ErrMissingAppName = new ValidationError('faynosync: missing app name');
|
|
80
89
|
exports.ErrMissingVersion = new ValidationError('faynosync: missing version');
|
|
90
|
+
exports.ErrMissingReportKey = new ValidationError('faynosync: missing report key');
|
|
91
|
+
exports.ErrMissingDeviceId = new ValidationError('faynosync: missing device id');
|
|
92
|
+
exports.ErrMissingChannel = new ValidationError('faynosync: missing channel');
|
|
93
|
+
exports.ErrMissingPlatform = new ValidationError('faynosync: missing platform');
|
|
94
|
+
exports.ErrMissingArch = new ValidationError('faynosync: missing arch');
|
|
95
|
+
exports.ErrInvalidEventType = new ValidationError('faynosync: invalid event type');
|
|
96
|
+
exports.ErrInvalidReason = new ValidationError('faynosync: invalid event reason');
|
|
81
97
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAEA,MAAa,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AALD,wCAKC;AAED,MAAa,eAAgB,SAAQ,cAAc;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AALD,0CAKC;AAED,MAAa,kBAAmB,SAAQ,cAAc;IACpD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AAED,MAAa,aAAc,SAAQ,kBAAkB;IAEjC;IACA;IACA;IAHlB,YACkB,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/feed.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CheckOptions, NativeFeedOptions, NativeUpdater } from './types';
|
|
2
|
+
export declare function buildCheckVersionURL(baseURL: string, opts: CheckOptions, updater: string): string;
|
|
3
|
+
export declare const NATIVE_UPDATERS: readonly NativeUpdater[];
|
|
4
|
+
export declare function isEdgeCacheableUpdater(updater: NativeUpdater): boolean;
|
|
5
|
+
export declare function buildNativeFeedURL(baseURL: string, opts: NativeFeedOptions): string;
|
|
6
|
+
//# sourceMappingURL=feed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../src/feed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAc9E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAajG;AAyCD,eAAO,MAAM,eAAe,EAAwC,SAAS,aAAa,EAAE,CAAC;AAU7F,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAEtE;AAUD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAInF"}
|
package/dist/feed.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NATIVE_UPDATERS = void 0;
|
|
4
|
+
exports.buildCheckVersionURL = buildCheckVersionURL;
|
|
5
|
+
exports.isEdgeCacheableUpdater = isEdgeCacheableUpdater;
|
|
6
|
+
exports.buildNativeFeedURL = buildNativeFeedURL;
|
|
7
|
+
const errors_1 = require("./errors");
|
|
8
|
+
const url_1 = require("./url");
|
|
9
|
+
// Builds the canonical /checkVersion URL shared by the SDK's own `manual` flow and
|
|
10
|
+
// by native updaters that poll a JSON feed (squirrel_darwin, and later tauri/etc).
|
|
11
|
+
function buildCheckVersionURL(baseURL, opts, updater) {
|
|
12
|
+
const u = (0, url_1.parseAbsoluteURL)(baseURL, errors_1.ErrInvalidBaseURL);
|
|
13
|
+
u.pathname = (0, url_1.joinURLPath)(u.pathname, 'checkVersion');
|
|
14
|
+
u.search = new URLSearchParams({
|
|
15
|
+
app_name: opts.appName,
|
|
16
|
+
version: opts.version,
|
|
17
|
+
channel: opts.channel ?? '',
|
|
18
|
+
platform: opts.platform ?? '',
|
|
19
|
+
arch: opts.arch ?? '',
|
|
20
|
+
owner: opts.owner,
|
|
21
|
+
updater,
|
|
22
|
+
}).toString();
|
|
23
|
+
return u.toString();
|
|
24
|
+
}
|
|
25
|
+
function checkVersionFeed(baseURL, opts) {
|
|
26
|
+
return buildCheckVersionURL(baseURL, opts, opts.updater);
|
|
27
|
+
}
|
|
28
|
+
// Squirrel.Windows polls a base URL and appends `/RELEASES` itself, matching the
|
|
29
|
+
// /update/:owner/:app/:channel/:platform/:arch/:version route.
|
|
30
|
+
function updatePathFeed(baseURL, opts) {
|
|
31
|
+
const u = (0, url_1.parseAbsoluteURL)(baseURL, errors_1.ErrInvalidBaseURL);
|
|
32
|
+
const segments = [
|
|
33
|
+
'update',
|
|
34
|
+
opts.owner,
|
|
35
|
+
opts.appName,
|
|
36
|
+
opts.channel ?? '',
|
|
37
|
+
opts.platform ?? '',
|
|
38
|
+
opts.arch ?? '',
|
|
39
|
+
opts.version,
|
|
40
|
+
];
|
|
41
|
+
const base = (u.origin + u.pathname).replace(/\/+$/, '');
|
|
42
|
+
return `${base}/${segments.map(encodeURIComponent).join('/')}`;
|
|
43
|
+
}
|
|
44
|
+
// Extension point: register a new native updater here. Most updaters reuse
|
|
45
|
+
// `checkVersionFeed` + `edgeCacheable: true`; add a new builder only when the
|
|
46
|
+
// framework expects a different URL shape.
|
|
47
|
+
const NATIVE_UPDATER_SPECS = {
|
|
48
|
+
squirrel_darwin: { buildFeedURL: checkVersionFeed, edgeCacheable: true },
|
|
49
|
+
squirrel_windows: { buildFeedURL: updatePathFeed, edgeCacheable: false },
|
|
50
|
+
};
|
|
51
|
+
exports.NATIVE_UPDATERS = Object.keys(NATIVE_UPDATER_SPECS);
|
|
52
|
+
function getSpec(updater) {
|
|
53
|
+
const spec = NATIVE_UPDATER_SPECS[updater];
|
|
54
|
+
if (spec === undefined) {
|
|
55
|
+
throw new errors_1.UnsupportedUpdaterError(updater);
|
|
56
|
+
}
|
|
57
|
+
return spec;
|
|
58
|
+
}
|
|
59
|
+
function isEdgeCacheableUpdater(updater) {
|
|
60
|
+
return getSpec(updater).edgeCacheable;
|
|
61
|
+
}
|
|
62
|
+
function validateNativeFeedOptions(opts) {
|
|
63
|
+
if (!opts.owner)
|
|
64
|
+
throw errors_1.ErrMissingOwner;
|
|
65
|
+
if (!opts.appName)
|
|
66
|
+
throw errors_1.ErrMissingAppName;
|
|
67
|
+
if (!opts.version)
|
|
68
|
+
throw errors_1.ErrMissingVersion;
|
|
69
|
+
if (!opts.platform)
|
|
70
|
+
throw errors_1.ErrMissingPlatform;
|
|
71
|
+
if (!opts.arch)
|
|
72
|
+
throw errors_1.ErrMissingArch;
|
|
73
|
+
}
|
|
74
|
+
function buildNativeFeedURL(baseURL, opts) {
|
|
75
|
+
const spec = getSpec(opts.updater);
|
|
76
|
+
validateNativeFeedOptions(opts);
|
|
77
|
+
return spec.buildFeedURL(baseURL, opts);
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=feed.js.map
|
package/dist/feed.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feed.js","sourceRoot":"","sources":["../src/feed.ts"],"names":[],"mappings":";;;AAcA,oDAaC;AAmDD,wDAEC;AAUD,gDAIC;AA7FD,qCAQkB;AAClB,+BAAsD;AAEtD,mFAAmF;AACnF,mFAAmF;AACnF,SAAgB,oBAAoB,CAAC,OAAe,EAAE,IAAkB,EAAE,OAAe;IACvF,MAAM,CAAC,GAAG,IAAA,sBAAgB,EAAC,OAAO,EAAE,0BAAiB,CAAC,CAAC;IACvD,CAAC,CAAC,QAAQ,GAAG,IAAA,iBAAW,EAAC,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACrD,CAAC,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC;QAC7B,QAAQ,EAAE,IAAI,CAAC,OAAO;QACtB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO;KACR,CAAC,CAAC,QAAQ,EAAE,CAAC;IACd,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtB,CAAC;AAID,SAAS,gBAAgB,CAAC,OAAe,EAAE,IAAuB;IAChE,OAAO,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,iFAAiF;AACjF,+DAA+D;AAC/D,SAAS,cAAc,CAAC,OAAe,EAAE,IAAuB;IAC9D,MAAM,CAAC,GAAG,IAAA,sBAAgB,EAAC,OAAO,EAAE,0BAAiB,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG;QACf,QAAQ;QACR,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,OAAO;QACZ,IAAI,CAAC,OAAO,IAAI,EAAE;QAClB,IAAI,CAAC,QAAQ,IAAI,EAAE;QACnB,IAAI,CAAC,IAAI,IAAI,EAAE;QACf,IAAI,CAAC,OAAO;KACb,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO,GAAG,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACjE,CAAC;AAUD,2EAA2E;AAC3E,8EAA8E;AAC9E,2CAA2C;AAC3C,MAAM,oBAAoB,GAA6C;IACrE,eAAe,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE;IACxE,gBAAgB,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE;CACzE,CAAC;AAEW,QAAA,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAA6B,CAAC;AAE7F,SAAS,OAAO,CAAC,OAAsB;IACrC,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAkC,CAAC;IAC5E,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,gCAAuB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAsB;IAC3D,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;AACxC,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAuB;IACxD,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,MAAM,wBAAe,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,MAAM,0BAAiB,CAAC;IAC3C,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,MAAM,0BAAiB,CAAC;IAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,MAAM,2BAAkB,CAAC;IAC7C,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,MAAM,uBAAc,CAAC;AACvC,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAAe,EAAE,IAAuB;IACzE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { Client } from './client';
|
|
2
2
|
export type { Config } from './client';
|
|
3
|
-
export type { CheckOptions, PackageUpdateURL, UpdateResponse, UpdateSource } from './types';
|
|
4
|
-
export {
|
|
3
|
+
export type { CheckOptions, EndpointSource, NativeFeedOptions, NativeFeedResult, NativeUpdater, PackageUpdateURL, ReportEvent, ReportEventType, ReportOptions, ReportResponse, UpdateResponse, UpdateSource, } from './types';
|
|
4
|
+
export { NATIVE_UPDATERS } from './feed';
|
|
5
|
+
export { CheckError, EndpointError, ErrInvalidBaseURL, ErrInvalidEdgeURL, ErrInvalidEventType, ErrInvalidReason, ErrMissingAppName, ErrMissingArch, ErrMissingBaseURL, ErrMissingChannel, ErrMissingDeviceId, ErrMissingOwner, ErrMissingPlatform, ErrMissingReportKey, ErrMissingVersion, FaynoSyncError, RequestFailedError, UnsupportedUpdaterError, ValidationError, } from './errors';
|
|
5
6
|
export { systemArch, systemPlatform } from './system';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EACV,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,aAAa,EACb,cAAc,EACd,cAAc,EACd,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EACL,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.systemPlatform = exports.systemArch = exports.ValidationError = exports.RequestFailedError = exports.FaynoSyncError = exports.ErrMissingVersion = exports.ErrMissingOwner = exports.ErrMissingBaseURL = exports.ErrMissingAppName = exports.ErrInvalidEdgeURL = exports.ErrInvalidBaseURL = exports.EndpointError = exports.CheckError = exports.Client = void 0;
|
|
3
|
+
exports.systemPlatform = exports.systemArch = exports.ValidationError = exports.UnsupportedUpdaterError = exports.RequestFailedError = exports.FaynoSyncError = exports.ErrMissingVersion = exports.ErrMissingReportKey = exports.ErrMissingPlatform = exports.ErrMissingOwner = exports.ErrMissingDeviceId = exports.ErrMissingChannel = exports.ErrMissingBaseURL = exports.ErrMissingArch = exports.ErrMissingAppName = exports.ErrInvalidReason = exports.ErrInvalidEventType = exports.ErrInvalidEdgeURL = exports.ErrInvalidBaseURL = exports.EndpointError = exports.CheckError = exports.NATIVE_UPDATERS = exports.Client = void 0;
|
|
4
4
|
var client_1 = require("./client");
|
|
5
5
|
Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return client_1.Client; } });
|
|
6
|
+
var feed_1 = require("./feed");
|
|
7
|
+
Object.defineProperty(exports, "NATIVE_UPDATERS", { enumerable: true, get: function () { return feed_1.NATIVE_UPDATERS; } });
|
|
6
8
|
var errors_1 = require("./errors");
|
|
7
9
|
Object.defineProperty(exports, "CheckError", { enumerable: true, get: function () { return errors_1.CheckError; } });
|
|
8
10
|
Object.defineProperty(exports, "EndpointError", { enumerable: true, get: function () { return errors_1.EndpointError; } });
|
|
9
11
|
Object.defineProperty(exports, "ErrInvalidBaseURL", { enumerable: true, get: function () { return errors_1.ErrInvalidBaseURL; } });
|
|
10
12
|
Object.defineProperty(exports, "ErrInvalidEdgeURL", { enumerable: true, get: function () { return errors_1.ErrInvalidEdgeURL; } });
|
|
13
|
+
Object.defineProperty(exports, "ErrInvalidEventType", { enumerable: true, get: function () { return errors_1.ErrInvalidEventType; } });
|
|
14
|
+
Object.defineProperty(exports, "ErrInvalidReason", { enumerable: true, get: function () { return errors_1.ErrInvalidReason; } });
|
|
11
15
|
Object.defineProperty(exports, "ErrMissingAppName", { enumerable: true, get: function () { return errors_1.ErrMissingAppName; } });
|
|
16
|
+
Object.defineProperty(exports, "ErrMissingArch", { enumerable: true, get: function () { return errors_1.ErrMissingArch; } });
|
|
12
17
|
Object.defineProperty(exports, "ErrMissingBaseURL", { enumerable: true, get: function () { return errors_1.ErrMissingBaseURL; } });
|
|
18
|
+
Object.defineProperty(exports, "ErrMissingChannel", { enumerable: true, get: function () { return errors_1.ErrMissingChannel; } });
|
|
19
|
+
Object.defineProperty(exports, "ErrMissingDeviceId", { enumerable: true, get: function () { return errors_1.ErrMissingDeviceId; } });
|
|
13
20
|
Object.defineProperty(exports, "ErrMissingOwner", { enumerable: true, get: function () { return errors_1.ErrMissingOwner; } });
|
|
21
|
+
Object.defineProperty(exports, "ErrMissingPlatform", { enumerable: true, get: function () { return errors_1.ErrMissingPlatform; } });
|
|
22
|
+
Object.defineProperty(exports, "ErrMissingReportKey", { enumerable: true, get: function () { return errors_1.ErrMissingReportKey; } });
|
|
14
23
|
Object.defineProperty(exports, "ErrMissingVersion", { enumerable: true, get: function () { return errors_1.ErrMissingVersion; } });
|
|
15
24
|
Object.defineProperty(exports, "FaynoSyncError", { enumerable: true, get: function () { return errors_1.FaynoSyncError; } });
|
|
16
25
|
Object.defineProperty(exports, "RequestFailedError", { enumerable: true, get: function () { return errors_1.RequestFailedError; } });
|
|
26
|
+
Object.defineProperty(exports, "UnsupportedUpdaterError", { enumerable: true, get: function () { return errors_1.UnsupportedUpdaterError; } });
|
|
17
27
|
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return errors_1.ValidationError; } });
|
|
18
28
|
var system_1 = require("./system");
|
|
19
29
|
Object.defineProperty(exports, "systemArch", { enumerable: true, get: function () { return system_1.systemArch; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AAgBf,+BAAyC;AAAhC,uGAAA,eAAe,OAAA;AACxB,mCAoBkB;AAnBhB,oGAAA,UAAU,OAAA;AACV,uGAAA,aAAa,OAAA;AACb,2GAAA,iBAAiB,OAAA;AACjB,2GAAA,iBAAiB,OAAA;AACjB,6GAAA,mBAAmB,OAAA;AACnB,0GAAA,gBAAgB,OAAA;AAChB,2GAAA,iBAAiB,OAAA;AACjB,wGAAA,cAAc,OAAA;AACd,2GAAA,iBAAiB,OAAA;AACjB,2GAAA,iBAAiB,OAAA;AACjB,4GAAA,kBAAkB,OAAA;AAClB,yGAAA,eAAe,OAAA;AACf,4GAAA,kBAAkB,OAAA;AAClB,6GAAA,mBAAmB,OAAA;AACnB,2GAAA,iBAAiB,OAAA;AACjB,wGAAA,cAAc,OAAA;AACd,4GAAA,kBAAkB,OAAA;AAClB,iHAAA,uBAAuB,OAAA;AACvB,yGAAA,eAAe,OAAA;AAEjB,mCAAsD;AAA7C,oGAAA,UAAU,OAAA;AAAE,wGAAA,cAAc,OAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type UpdateSource = 'unknown' | 'edge' | 'api';
|
|
2
|
+
export type EndpointSource = UpdateSource | 'report';
|
|
2
3
|
export interface PackageUpdateURL {
|
|
3
4
|
readonly package: string;
|
|
4
5
|
readonly url: string;
|
|
@@ -12,6 +13,16 @@ export interface CheckOptions {
|
|
|
12
13
|
readonly arch?: string;
|
|
13
14
|
readonly deviceId?: string;
|
|
14
15
|
}
|
|
16
|
+
export type NativeUpdater = 'squirrel_darwin' | 'squirrel_windows';
|
|
17
|
+
export interface NativeFeedOptions extends CheckOptions {
|
|
18
|
+
readonly updater: NativeUpdater;
|
|
19
|
+
}
|
|
20
|
+
export interface NativeFeedResult {
|
|
21
|
+
readonly updateAvailable: boolean;
|
|
22
|
+
readonly feedURL: string;
|
|
23
|
+
readonly source: UpdateSource;
|
|
24
|
+
readonly url?: string;
|
|
25
|
+
}
|
|
15
26
|
export interface UpdateResponse {
|
|
16
27
|
readonly updateAvailable: boolean;
|
|
17
28
|
readonly updateUrl: string;
|
|
@@ -22,4 +33,25 @@ export interface UpdateResponse {
|
|
|
22
33
|
readonly packageUrls: readonly PackageUpdateURL[];
|
|
23
34
|
readonly source: UpdateSource;
|
|
24
35
|
}
|
|
36
|
+
export type ReportEventType = 'crash' | 'startup_failure' | 'update_failure' | 'install_failure' | 'rollback_failure';
|
|
37
|
+
export interface ReportEvent {
|
|
38
|
+
readonly type: ReportEventType;
|
|
39
|
+
readonly reason: string;
|
|
40
|
+
}
|
|
41
|
+
export interface ReportOptions {
|
|
42
|
+
readonly reportKey: string;
|
|
43
|
+
readonly deviceId: string;
|
|
44
|
+
readonly appName: string;
|
|
45
|
+
readonly version: string;
|
|
46
|
+
readonly channel: string;
|
|
47
|
+
readonly platform: string;
|
|
48
|
+
readonly arch: string;
|
|
49
|
+
readonly event: ReportEvent;
|
|
50
|
+
readonly details?: Readonly<Record<string, unknown>>;
|
|
51
|
+
}
|
|
52
|
+
export interface ReportResponse {
|
|
53
|
+
readonly status: string;
|
|
54
|
+
readonly groupHash: string;
|
|
55
|
+
readonly storedDetails: boolean;
|
|
56
|
+
}
|
|
25
57
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,QAAQ,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAEnE,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAGlC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B;AAED,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC"}
|
package/dist/url.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,GAAG,CAW5E;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKrE"}
|
package/dist/url.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseAbsoluteURL = parseAbsoluteURL;
|
|
4
|
+
exports.joinURLPath = joinURLPath;
|
|
5
|
+
function parseAbsoluteURL(raw, sentinel) {
|
|
6
|
+
let u;
|
|
7
|
+
try {
|
|
8
|
+
u = new URL(raw);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
throw sentinel;
|
|
12
|
+
}
|
|
13
|
+
if (!u.protocol || !u.hostname) {
|
|
14
|
+
throw sentinel;
|
|
15
|
+
}
|
|
16
|
+
return u;
|
|
17
|
+
}
|
|
18
|
+
function joinURLPath(basePath, segment) {
|
|
19
|
+
if (basePath === '' || basePath === '/') {
|
|
20
|
+
return `/${segment}`;
|
|
21
|
+
}
|
|
22
|
+
return `${basePath.replace(/\/+$/, '')}/${segment}`;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=url.js.map
|
package/dist/url.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":";;AAEA,4CAWC;AAED,kCAKC;AAlBD,SAAgB,gBAAgB,CAAC,GAAW,EAAE,QAAyB;IACrE,IAAI,CAAM,CAAC;IACX,IAAI,CAAC;QACH,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,QAAQ,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,QAAQ,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAgB,WAAW,CAAC,QAAgB,EAAE,OAAe;IAC3D,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACxC,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;AACtD,CAAC"}
|