@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 CHANGED
@@ -1,5 +1,7 @@
1
1
  # faynoSync JS SDK
2
2
 
3
+ [![Website](https://img.shields.io/badge/website-faynosync.com-2563eb)](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
- For example:
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 RequestFailedError) {
224
- // all endpoints failed — inspect for details
225
- if (err instanceof CheckError) {
226
- console.error('edge error:', err.edgeError?.message);
227
- console.error('api error:', err.apiError?.message);
228
- }
229
- if (err instanceof EndpointError) {
230
- console.error('url:', err.endpointUrl);
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAoB,cAAc,EAAgB,MAAM,SAAS,CAAC;AAgB5F,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;AAYD,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;IAkCxF,OAAO,CAAC,cAAc;YAOR,SAAS;YAKT,QAAQ;YAKR,eAAe;IAsC7B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,2BAA2B;YAerB,uBAAuB;CAkBtC"}
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
- const u = parseAbsoluteURL(this.baseURL, errors_1.ErrInvalidBaseURL);
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
- const u = parseAbsoluteURL(this.edgeURL, errors_1.ErrInvalidEdgeURL);
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 parseAbsoluteURL(raw, sentinel) {
159
- let u;
160
- try {
161
- u = new URL(raw);
162
- }
163
- catch {
164
- throw sentinel;
165
- }
166
- if (!u.protocol || !u.hostname) {
167
- throw sentinel;
168
- }
169
- return u;
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 joinURLPath(basePath, segment) {
172
- if (basePath === '' || basePath === '/') {
173
- return `/${segment}`;
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 `${basePath.replace(/\/+$/, '')}/${segment}`;
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);
@@ -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":";;;AAAA,yCAAqC;AAYrC,iCAIgB;AAChB,+BAAsD;AACtD,qCAgBkB;AAElB,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,UAAU,GAAG,kBAAkB,CAAC;AACtC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAsCzB,MAAM,kBAAkB,GAA+B;IACrD,OAAO;IACP,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;CACnB,CAAC;AAEF,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;AAExD,MAAa,MAAM;IACA,OAAO,CAAS;IAChB,OAAO,CAAS;IAChB,OAAO,CAA0B;IACjC,SAAS,CAAS;IAEnC,YAAY,GAAW;QACrB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,kBAAkB,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAkB,EAAE,MAAoB;QAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAE3B,MAAM,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC;QAC3B,IAAI,SAA4B,CAAC;QAEjC,IAAI,IAAI,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;oBACvE,CAAC;oBAAC,MAAM,CAAC;wBACP,0DAA0D;oBAC5D,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,GAAG,GAAY,CAAC;gBACzB,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;oBAC7B,MAAM,IAAI,mBAAU,CAAC,SAAS,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5C,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,mBAAU,CAAC,SAAS,EAAE,QAAiB,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAmB,EAAE,MAAoB;QACzD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAEnC,MAAM,OAAO,GAA2B;YACtC,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,EAAE;YACzC,aAAa,EAAE,IAAI,CAAC,QAAQ;YAC5B,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;YAC1B,YAAY,EAAE,UAAU;SACzB,CAAC;QAEF,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,IAAI,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtE,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC5B,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,sBAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAY,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,sBAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,GAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAsB,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,sBAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAY,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAEO,cAAc;QACpB,MAAM,CAAC,GAAG,IAAA,sBAAgB,EAAC,IAAI,CAAC,OAAO,EAAE,0BAAiB,CAAC,CAAC;QAC5D,CAAC,CAAC,QAAQ,GAAG,IAAA,iBAAW,EAAC,CAAC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACvD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtB,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC/B,MAAM,0BAAiB,CAAC;QAC1B,CAAC;QACD,IAAA,sBAAgB,EAAC,IAAI,CAAC,OAAO,EAAE,0BAAiB,CAAC,CAAC;IACpD,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAkB,EAAE,MAA0B;QACpE,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,IAAkB,EAAE,MAA0B;QACnE,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,GAAW,EACX,QAA4B,EAC5B,MAAoB,EACpB,MAA0B;QAE1B,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,kBAAkB;YAC1B,YAAY,EAAE,UAAU;SACzB,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;QACpC,CAAC;QAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE9D,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,sBAAa,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAY,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,sBAAa,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,GAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAsB,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,sBAAa,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAY,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,kBAAkB,CAAC,IAAuB;QACxC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAA,yBAAqB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAuB,EAAE,MAAoB;QACnE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC;QAE3B,IAAI,CAAC,IAAA,6BAAsB,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,iFAAiF;YACjF,2DAA2D;YAC3D,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACnE,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9D,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC3D,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACpD,CAAC;YAAC,MAAM,CAAC;gBACP,+CAA+C;YACjD,CAAC;QACH,CAAC;QAED,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACzD,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,GAAW,EACX,MAAoB,EACpB,MAA0B;QAE1B,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,kBAAkB;YAC1B,YAAY,EAAE,UAAU;SACzB,CAAC;QACF,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE9D,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,sBAAa,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAY,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACzB,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,sBAAa,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,GAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAsB,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,sBAAa,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAY,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,OAAO,EAAE,eAAe,EAAE,OAAO,KAAK,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAClE,CAAC;IAEO,gBAAgB,CAAC,IAAkB;QACzC,OAAO,IAAA,2BAAoB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAEO,iBAAiB,CAAC,IAAkB;QAC1C,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAEO,oBAAoB,CAAC,IAAkB,EAAE,OAAe;QAC9D,MAAM,CAAC,GAAG,IAAA,sBAAgB,EAAC,IAAI,CAAC,OAAO,EAAE,0BAAiB,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG;YACf,WAAW;YACX,IAAI,CAAC,KAAK;YACV,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,OAAO,IAAI,EAAE;YAClB,IAAI,CAAC,QAAQ,IAAI,EAAE;YACnB,IAAI,CAAC,IAAI,IAAI,EAAE;YACf,OAAO;YACP,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO;SAC1C,CAAC;QACF,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzD,OAAO,GAAG,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACjE,CAAC;IAEO,2BAA2B,CAAC,IAAkB,EAAE,QAAiB;QACvE,MAAM,CAAC,GAAG,IAAA,sBAAgB,EAAC,IAAI,CAAC,OAAO,EAAE,0BAAiB,CAAC,CAAC;QAC5D,CAAC,CAAC,QAAQ,GAAG,IAAA,iBAAW,EAAC,CAAC,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACzD,CAAC,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC;YAC7B,QAAQ,EAAE,IAAI,CAAC,OAAO;YACtB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC;SAC5B,CAAC,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACnC,IAAkB,EAClB,QAAiB,EACjB,MAA0B;QAE1B,MAAM,GAAG,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7D,MAAM,OAAO,GAA2B,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;QACrE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzC,CAAC;QAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,sBAAa,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;CACF;AArRD,wBAqRC;AAED,SAAS,oBAAoB,CAAC,IAAkB;IAC9C,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;AAC7C,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAmB;IAChD,IAAI,CAAC,IAAI,CAAC,SAAS;QAAE,MAAM,4BAAmB,CAAC;IAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,MAAM,2BAAkB,CAAC;IAC7C,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,MAAM,0BAAiB,CAAC;IAC3C,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;IACrC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,MAAM,4BAAmB,CAAC;IAC7E,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,MAAM,yBAAgB,CAAC;AAC7E,CAAC;AAED,SAAS,eAAe,CAAC,IAAmB;IAC1C,MAAM,IAAI,GAAsB;QAC9B,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;QACjF,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QACpD,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;KAC5D,CAAC;IAEF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAA,oBAAQ,EAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvF,IAAI,CAAC,OAAO,GAAG;YACb,QAAQ,EAAE,aAAa;YACvB,YAAY,EAAE,kBAAkB;YAChC,OAAO;SACR,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAsB;IACjD,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;QACxB,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;QAC/B,aAAa,EAAE,GAAG,CAAC,cAAc,IAAI,KAAK;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,UAA8B,EAAE,SAAiB;IAC5E,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,aAAa,CAAC;IAE9C,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;QAChC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3B,OAAO,CAAC,CAAC,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5D,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACrF,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3F,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAsB;IACjD,MAAM,WAAW,GAAuB,EAAE,CAAC;IAE3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/D,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAE/D,OAAO;QACL,eAAe,EAAE,GAAG,CAAC,gBAAgB,IAAI,KAAK;QAC9C,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;QAC/B,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE;QAC9B,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,KAAK;QAC/B,sBAAsB,EAAE,GAAG,CAAC,wBAAwB,IAAI,KAAK;QAC7D,gBAAgB,EAAE,GAAG,CAAC,iBAAiB,IAAI,KAAK;QAChD,WAAW;QACX,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { UpdateSource } from './types';
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: UpdateSource;
12
+ readonly source: EndpointSource;
13
13
  readonly endpointUrl: string;
14
14
  readonly statusCode?: number | undefined;
15
- constructor(source: UpdateSource, endpointUrl: string, statusCode?: number | undefined, cause?: Error);
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
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,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,YAAY;aACpB,WAAW,EAAE,MAAM;aACnB,UAAU,CAAC,EAAE,MAAM;gBAFnB,MAAM,EAAE,YAAY,EACpB,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,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"}
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
@@ -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,MAAoB,EACpB,WAAmB,EACnB,UAAmB,EACnC,KAAa;QAEb,IAAI,GAAW,CAAC;QAChB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,GAAG,GAAG,8BAA8B,WAAW,kBAAkB,UAAU,EAAE,CAAC;QAChF,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,GAAG,GAAG,8BAA8B,WAAW,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,8BAA8B,WAAW,EAAE,CAAC;QACpD,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,CAAC;QAbK,WAAM,GAAN,MAAM,CAAc;QACpB,gBAAW,GAAX,WAAW,CAAQ;QACnB,eAAU,GAAV,UAAU,CAAS;QAYnC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;CACF;AArBD,sCAqBC;AAED,MAAa,UAAW,SAAQ,kBAAkB;IAE9B;IACA;IAFlB,YACkB,SAAiB,EACjB,QAAgB;QAEhC,IAAI,GAAW,CAAC;QAChB,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACtD,GAAG,GAAG,2CAA2C,SAAS,CAAC,OAAO,iBAAiB,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxG,CAAC;aAAM,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,GAAG,GAAG,2CAA2C,SAAS,CAAC,OAAO,EAAE,CAAC;QACvE,CAAC;aAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,GAAG,GAAG,0CAA0C,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,2BAA2B,CAAC;QACpC,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,CAAC;QAbK,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAQ;QAahC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAlBD,gCAkBC;AAEY,QAAA,iBAAiB,GAAG,IAAI,eAAe,CAAC,6BAA6B,CAAC,CAAC;AACvE,QAAA,iBAAiB,GAAG,IAAI,eAAe,CAAC,6BAA6B,CAAC,CAAC;AACvE,QAAA,iBAAiB,GAAG,IAAI,eAAe,CAAC,6BAA6B,CAAC,CAAC;AACvE,QAAA,eAAe,GAAG,IAAI,eAAe,CAAC,0BAA0B,CAAC,CAAC;AAClE,QAAA,iBAAiB,GAAG,IAAI,eAAe,CAAC,6BAA6B,CAAC,CAAC;AACvE,QAAA,iBAAiB,GAAG,IAAI,eAAe,CAAC,4BAA4B,CAAC,CAAC"}
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
@@ -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 { CheckError, EndpointError, ErrInvalidBaseURL, ErrInvalidEdgeURL, ErrMissingAppName, ErrMissingBaseURL, ErrMissingOwner, ErrMissingVersion, FaynoSyncError, RequestFailedError, ValidationError, } from './errors';
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
@@ -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,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EACL,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
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;AAGf,mCAYkB;AAXhB,oGAAA,UAAU,OAAA;AACV,uGAAA,aAAa,OAAA;AACb,2GAAA,iBAAiB,OAAA;AACjB,2GAAA,iBAAiB,OAAA;AACjB,2GAAA,iBAAiB,OAAA;AACjB,2GAAA,iBAAiB,OAAA;AACjB,yGAAA,eAAe,OAAA;AACf,2GAAA,iBAAiB,OAAA;AACjB,wGAAA,cAAc,OAAA;AACd,4GAAA,kBAAkB,OAAA;AAClB,yGAAA,eAAe,OAAA;AAEjB,mCAAsD;AAA7C,oGAAA,UAAU,OAAA;AAAE,wGAAA,cAAc,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
@@ -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,4 @@
1
+ import type { ValidationError } from './errors';
2
+ export declare function parseAbsoluteURL(raw: string, sentinel: ValidationError): URL;
3
+ export declare function joinURLPath(basePath: string, segment: string): string;
4
+ //# sourceMappingURL=url.d.ts.map
@@ -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
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faynosync/sdk-js",
3
- "version": "0.2.1",
3
+ "version": "0.4.0",
4
4
  "description": "JavaScript/TypeScript SDK for faynoSync",
5
5
  "repository": {
6
6
  "type": "git",