@opra/client 0.18.0 → 0.18.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/browser.js ADDED
@@ -0,0 +1,576 @@
1
+ /****************************************
2
+ * All rights reserved Panates® 2022-2023
3
+ * http://www.panates.com
4
+ *****************************************/
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
+
9
+ // ../../build/client/esm/client-error.js
10
+ var ClientError = class extends Error {
11
+ constructor(init, cause) {
12
+ super(init.message);
13
+ this.cause = cause;
14
+ this.issues = init.issues || [];
15
+ this.status = init.status;
16
+ if (cause) {
17
+ this.cause = cause;
18
+ if (cause.stack)
19
+ this.stack = cause.stack;
20
+ }
21
+ }
22
+ };
23
+ __name(ClientError, "ClientError");
24
+
25
+ // ../../build/client/esm/http/http-client.js
26
+ import { lastValueFrom as lastValueFrom2, Observable as Observable2 } from "rxjs";
27
+ import { isReadableStreamLike } from "rxjs/internal/util/isReadableStreamLike";
28
+ import { DocumentFactory, HttpHeaderCodes, HttpHeaders as HttpHeaders3, HttpParams, isBlob, joinPath } from "@opra/common";
29
+
30
+ // ../../build/client/esm/constants.js
31
+ var JSON_CONTENT_TYPE_PATTERN = /^application\/([\w-]+\+)?\bjson\b/i;
32
+ var TEXT_CONTENT_TYPE_PATTERN = /^text\/.*$/i;
33
+ var FORMDATA_CONTENT_TYPE_PATTERN = /^multipart\/\bform-data\b/i;
34
+ var kHttpClientContext = Symbol("kContext");
35
+
36
+ // ../../build/client/esm/http/http-request-observable.js
37
+ import { lastValueFrom, Observable } from "rxjs";
38
+ import { uid } from "@opra/common";
39
+
40
+ // ../../build/client/esm/http/http-request.js
41
+ import { HttpHeaders, OpraURL } from "@opra/common";
42
+ var directCopyProperties = [
43
+ "cache",
44
+ "credentials",
45
+ "destination",
46
+ "headers",
47
+ "integrity",
48
+ "keepalive",
49
+ "mode",
50
+ "redirect",
51
+ "referrer",
52
+ "referrerPolicy"
53
+ ];
54
+ var HttpRequest = class {
55
+ constructor(init) {
56
+ this.cache = init?.cache || "default";
57
+ this.credentials = init?.credentials || "same-origin";
58
+ this.destination = init?.destination || "";
59
+ this.headers = new HttpHeaders(init?.headers);
60
+ this.integrity = init?.integrity || "";
61
+ this.keepalive = init?.keepalive ?? false;
62
+ this.method = (init?.method || "GET").toUpperCase();
63
+ this.mode = init?.mode || "cors";
64
+ this.redirect = init?.redirect || "follow";
65
+ this.mode = init?.mode || "cors";
66
+ this.referrer = init?.referrer || "";
67
+ this.referrerPolicy = init?.referrerPolicy || "";
68
+ this.signal = init?.signal || new AbortController().signal;
69
+ this.body = init?.body;
70
+ this.urlInstance = new OpraURL(init?.url);
71
+ if (init?.params)
72
+ this.params.appendAll(init.params);
73
+ }
74
+ /** Returns the URL of request as a string. */
75
+ get url() {
76
+ return this.urlInstance.href;
77
+ }
78
+ set url(value) {
79
+ this.urlInstance.parse(value);
80
+ }
81
+ /** Returns the searchParams of the URL as OpraURLSearchParams */
82
+ get params() {
83
+ return this.urlInstance.searchParams;
84
+ }
85
+ /** Returns the path part of URL as OpraURLPath */
86
+ get path() {
87
+ return this.urlInstance.path;
88
+ }
89
+ clone(...update) {
90
+ const out = new HttpRequest();
91
+ out.merge(this);
92
+ for (const upd of update) {
93
+ out.merge(upd);
94
+ }
95
+ return out;
96
+ }
97
+ merge(update) {
98
+ directCopyProperties.forEach((k) => {
99
+ if (update[k] != null)
100
+ this[k] = update[k];
101
+ });
102
+ if (update.headers) {
103
+ const h = update.headers instanceof HttpHeaders ? update.headers : new HttpHeaders(update.headers);
104
+ h.forEach((v, k) => {
105
+ if (k.toLowerCase() === "set-cookie") {
106
+ this.headers.append(k, v);
107
+ } else
108
+ this.headers.set(k, v);
109
+ });
110
+ }
111
+ }
112
+ inset(src) {
113
+ directCopyProperties.forEach((k) => {
114
+ if (this[k] == null && src[k] != null)
115
+ this[k] = src[k];
116
+ });
117
+ if (src.headers) {
118
+ const h = src.headers instanceof HttpHeaders ? src.headers : new HttpHeaders(src.headers);
119
+ h.forEach((v, k) => {
120
+ if (k.toLowerCase() === "set-cookie") {
121
+ this.headers.append(k, v);
122
+ } else if (!this.headers.has(k))
123
+ this.headers.set(k, v);
124
+ });
125
+ }
126
+ }
127
+ };
128
+ __name(HttpRequest, "HttpRequest");
129
+
130
+ // ../../build/client/esm/http/http-request-observable.js
131
+ var kRequest = Symbol("kRequest");
132
+ var HttpRequestObservable = class extends Observable {
133
+ constructor(context, options) {
134
+ super((subscriber) => {
135
+ context.send(options?.observe || "body", this[kRequest]).subscribe(subscriber);
136
+ });
137
+ this[kHttpClientContext] = context;
138
+ this[kRequest] = new HttpRequest(options?.http);
139
+ this.contentId = uid(6);
140
+ }
141
+ header(name, value) {
142
+ this[kRequest].headers.append(name, value);
143
+ return this;
144
+ }
145
+ param(name, value) {
146
+ this[kRequest].params.append(name, value);
147
+ return this;
148
+ }
149
+ async fetch(observe) {
150
+ return lastValueFrom(this[kHttpClientContext].send(observe || "body", this[kRequest]));
151
+ }
152
+ with(cb) {
153
+ cb(this);
154
+ return this;
155
+ }
156
+ };
157
+ __name(HttpRequestObservable, "HttpRequestObservable");
158
+ HttpRequestObservable.kContext = kHttpClientContext;
159
+ HttpRequestObservable.kRequest = kRequest;
160
+
161
+ // ../../build/client/esm/http/http-collection-node.js
162
+ var HttpCollectionNode = class {
163
+ constructor(context) {
164
+ this[kHttpClientContext] = context;
165
+ }
166
+ create(data, options) {
167
+ const context = this[kHttpClientContext];
168
+ const requestHost = new HttpRequestObservable(context, options);
169
+ const request = requestHost[HttpRequestObservable.kRequest];
170
+ request.method = "POST";
171
+ request.url = context.resourceName;
172
+ request.body = data;
173
+ if (options?.include)
174
+ request.params.set("$include", options.include);
175
+ if (options?.pick)
176
+ request.params.set("$pick", options.pick);
177
+ if (options?.omit)
178
+ request.params.set("$omit", options.omit);
179
+ return requestHost;
180
+ }
181
+ delete(id, options) {
182
+ const context = this[kHttpClientContext];
183
+ const requestHost = new HttpRequestObservable(context, options);
184
+ const request = requestHost[HttpRequestObservable.kRequest];
185
+ request.method = "DELETE";
186
+ request.path.join({ resource: context.resourceName, key: id });
187
+ return requestHost;
188
+ }
189
+ deleteMany(options) {
190
+ const context = this[kHttpClientContext];
191
+ const requestHost = new HttpRequestObservable(context, options);
192
+ const request = requestHost[HttpRequestObservable.kRequest];
193
+ request.method = "DELETE";
194
+ request.url = context.resourceName;
195
+ if (options?.filter)
196
+ request.params.set("$filter", options.filter);
197
+ return requestHost;
198
+ }
199
+ get(id, options) {
200
+ const context = this[kHttpClientContext];
201
+ const requestHost = new HttpRequestObservable(context, options);
202
+ const request = requestHost[HttpRequestObservable.kRequest];
203
+ request.method = "GET";
204
+ request.path.join({ resource: context.resourceName, key: id });
205
+ if (options?.include)
206
+ request.params.set("$include", options.include);
207
+ if (options?.pick)
208
+ request.params.set("$pick", options.pick);
209
+ if (options?.omit)
210
+ request.params.set("$omit", options.omit);
211
+ return requestHost;
212
+ }
213
+ findMany(options) {
214
+ const context = this[kHttpClientContext];
215
+ const requestHost = new HttpRequestObservable(context, options);
216
+ const request = requestHost[HttpRequestObservable.kRequest];
217
+ request.method = "GET";
218
+ request.url = context.resourceName;
219
+ if (options?.include)
220
+ request.params.set("$include", options.include);
221
+ if (options?.pick)
222
+ request.params.set("$pick", options.pick);
223
+ if (options?.omit)
224
+ request.params.set("$omit", options.omit);
225
+ if (options?.sort)
226
+ request.params.set("$sort", options.sort);
227
+ if (options?.filter)
228
+ request.params.set("$filter", options.filter);
229
+ if (options?.limit != null)
230
+ request.params.set("$limit", options.limit);
231
+ if (options?.skip != null)
232
+ request.params.set("$skip", options.skip);
233
+ if (options?.count != null)
234
+ request.params.set("$count", options.count);
235
+ if (options?.distinct != null)
236
+ request.params.set("$distinct", options.distinct);
237
+ return requestHost;
238
+ }
239
+ update(id, data, options) {
240
+ const context = this[kHttpClientContext];
241
+ const requestHost = new HttpRequestObservable(context, options);
242
+ const request = requestHost[HttpRequestObservable.kRequest];
243
+ request.method = "PATCH";
244
+ request.path.join({ resource: context.resourceName, key: id });
245
+ request.body = data;
246
+ if (options?.include)
247
+ request.params.set("$include", options.include);
248
+ if (options?.pick)
249
+ request.params.set("$pick", options.pick);
250
+ if (options?.omit)
251
+ request.params.set("$omit", options.omit);
252
+ return requestHost;
253
+ }
254
+ updateMany(data, options) {
255
+ const context = this[kHttpClientContext];
256
+ const requestHost = new HttpRequestObservable(context, options);
257
+ const request = requestHost[HttpRequestObservable.kRequest];
258
+ request.method = "PATCH";
259
+ request.url = context.resourceName;
260
+ request.body = data;
261
+ if (options?.filter)
262
+ request.params.set("$filter", options.filter);
263
+ return requestHost;
264
+ }
265
+ };
266
+ __name(HttpCollectionNode, "HttpCollectionNode");
267
+
268
+ // ../../build/client/esm/http/http-response.js
269
+ import { HttpHeaders as HttpHeaders2 } from "@opra/common";
270
+ var HttpResponse = class {
271
+ constructor(init) {
272
+ this.hasBody = false;
273
+ this.headers = new HttpHeaders2(init?.headers);
274
+ this.status = init?.status || 200;
275
+ this.statusText = init?.statusText || "OK";
276
+ this.url = init?.url || null;
277
+ this.ok = this.status >= 200 && this.status < 300;
278
+ this.body = init?.body;
279
+ this.hasBody = init?.body != null || !!init?.hasBody;
280
+ this.totalMatches = init?.totalMatches;
281
+ }
282
+ clone(update) {
283
+ return new HttpResponse({ ...this, ...update });
284
+ }
285
+ };
286
+ __name(HttpResponse, "HttpResponse");
287
+
288
+ // ../../build/client/esm/http/http-singleton-node.js
289
+ var HttpSingletonNode = class {
290
+ constructor(context) {
291
+ this[kHttpClientContext] = context;
292
+ }
293
+ create(data, options) {
294
+ const context = this[kHttpClientContext];
295
+ const requestHost = new HttpRequestObservable(context, options);
296
+ const request = requestHost[HttpRequestObservable.kRequest];
297
+ request.method = "POST";
298
+ request.url = context.resourceName;
299
+ request.body = data;
300
+ if (options?.include)
301
+ request.params.set("$include", options.include);
302
+ if (options?.pick)
303
+ request.params.set("$pick", options.pick);
304
+ if (options?.omit)
305
+ request.params.set("$omit", options.omit);
306
+ return requestHost;
307
+ }
308
+ delete(options) {
309
+ const context = this[kHttpClientContext];
310
+ const requestHost = new HttpRequestObservable(context, options);
311
+ const request = requestHost[HttpRequestObservable.kRequest];
312
+ request.method = "DELETE";
313
+ request.path.join({ resource: context.resourceName });
314
+ return requestHost;
315
+ }
316
+ get(options) {
317
+ const context = this[kHttpClientContext];
318
+ const requestHost = new HttpRequestObservable(context, options);
319
+ const request = requestHost[HttpRequestObservable.kRequest];
320
+ request.method = "GET";
321
+ request.path.join({ resource: context.resourceName });
322
+ if (options?.include)
323
+ request.params.set("$include", options.include);
324
+ if (options?.pick)
325
+ request.params.set("$pick", options.pick);
326
+ if (options?.omit)
327
+ request.params.set("$omit", options.omit);
328
+ return requestHost;
329
+ }
330
+ update(data, options) {
331
+ const context = this[kHttpClientContext];
332
+ const requestHost = new HttpRequestObservable(context, options);
333
+ const request = requestHost[HttpRequestObservable.kRequest];
334
+ request.method = "PATCH";
335
+ request.path.join({ resource: context.resourceName });
336
+ request.body = data;
337
+ if (options?.include)
338
+ request.params.set("$include", options.include);
339
+ if (options?.pick)
340
+ request.params.set("$pick", options.pick);
341
+ if (options?.omit)
342
+ request.params.set("$omit", options.omit);
343
+ return requestHost;
344
+ }
345
+ };
346
+ __name(HttpSingletonNode, "HttpSingletonNode");
347
+
348
+ // ../../build/client/esm/http/http-client.js
349
+ var kAssets = Symbol("kAssets");
350
+ var OpraHttpClient = class {
351
+ constructor(serviceUrl, options) {
352
+ Object.defineProperty(this, kAssets, {
353
+ enumerable: false,
354
+ value: {
355
+ serviceUrl,
356
+ api: options?.api,
357
+ requestInterceptors: options?.requestInterceptors || [],
358
+ responseInterceptors: options?.responseInterceptors || []
359
+ }
360
+ });
361
+ this.defaults = {
362
+ ...options?.defaults,
363
+ headers: options?.defaults?.headers instanceof HttpHeaders3 ? options?.defaults?.headers : new HttpHeaders3(options?.defaults?.headers),
364
+ params: options?.defaults?.params instanceof HttpParams ? options?.defaults?.params : new HttpParams(options?.defaults?.params)
365
+ };
366
+ }
367
+ get serviceUrl() {
368
+ return this[kAssets].serviceUrl;
369
+ }
370
+ async getMetadata() {
371
+ if (this[kAssets].api)
372
+ return this[kAssets].api;
373
+ let promise = this[kAssets].metadataPromise;
374
+ if (promise) {
375
+ return promise;
376
+ }
377
+ this[kAssets].metadataPromise = promise = lastValueFrom2(this._sendRequest("body", new HttpRequest({
378
+ method: "GET",
379
+ url: "$metadata",
380
+ headers: new HttpHeaders3({ "accept": "application/json" })
381
+ })));
382
+ return await promise.then(async (body) => {
383
+ const api = await DocumentFactory.createDocument(body);
384
+ this[kAssets].api = api;
385
+ return api;
386
+ }).catch((e) => {
387
+ e.message = "Unable to fetch metadata from " + this.serviceUrl + ". " + e.message;
388
+ throw e;
389
+ }).finally(() => delete this[kAssets].metadataPromise);
390
+ }
391
+ // batch(requests: HttpRequestHost<any>[]): BatchRequest {
392
+ // this._assertMetadata();
393
+ // return new BatchRequest(request => this._sendRequest('response', request, requests);
394
+ // }
395
+ collection(resourceName) {
396
+ if (typeof resourceName === "function")
397
+ resourceName = resourceName.name;
398
+ const ctx = {
399
+ client: this,
400
+ resourceName,
401
+ send: (observe, request) => this._sendRequest(observe, request, ctx),
402
+ requestInterceptors: [
403
+ // Validate resource exists and is a collection resource
404
+ async () => {
405
+ const metadata = await this.getMetadata();
406
+ metadata.getCollection(ctx.resourceName);
407
+ }
408
+ ],
409
+ responseInterceptors: []
410
+ };
411
+ return new HttpCollectionNode(ctx);
412
+ }
413
+ singleton(resourceName) {
414
+ if (typeof resourceName === "function")
415
+ resourceName = resourceName.name;
416
+ const ctx = {
417
+ client: this,
418
+ resourceName,
419
+ send: (observe, request) => this._sendRequest(observe, request, ctx),
420
+ requestInterceptors: [
421
+ // Validate resource exists and is a singleton resource
422
+ async () => {
423
+ const metadata = await this.getMetadata();
424
+ metadata.getSingleton(ctx.resourceName);
425
+ }
426
+ ],
427
+ responseInterceptors: []
428
+ };
429
+ return new HttpSingletonNode(ctx);
430
+ }
431
+ _sendRequest(observe, request, ctx) {
432
+ return new Observable2((subscriber) => {
433
+ (async () => {
434
+ request.inset(this.defaults);
435
+ const url = request.url.includes("://") ? request.url : joinPath(this.serviceUrl, request.url);
436
+ let body;
437
+ if (request.body) {
438
+ let contentType;
439
+ if (typeof request.body === "string" || typeof request.body === "number" || typeof request.body === "boolean") {
440
+ contentType = 'text/plain;charset=UTF-8"';
441
+ body = String(request.body);
442
+ request.headers.delete("Content-Size");
443
+ delete request.duplex;
444
+ } else if (isReadableStreamLike(request.body)) {
445
+ contentType = "application/octet-stream";
446
+ body = request.body;
447
+ request.duplex = "half";
448
+ } else if (Buffer.isBuffer(request.body)) {
449
+ contentType = "application/octet-stream";
450
+ body = request.body;
451
+ request.headers.set("Content-Size", request.body.length);
452
+ delete request.duplex;
453
+ } else if (isBlob(request.body)) {
454
+ contentType = request.body.type || "application/octet-stream";
455
+ body = request.body;
456
+ request.headers.set("Content-Size", request.body.length);
457
+ delete request.duplex;
458
+ } else {
459
+ contentType = "application/json";
460
+ body = JSON.stringify(request.body);
461
+ request.headers.delete("Content-Size");
462
+ delete request.duplex;
463
+ }
464
+ if (!request.headers.has("Content-Type") && contentType)
465
+ request.headers.set("Content-Type", contentType);
466
+ request.body = body;
467
+ }
468
+ if (ctx) {
469
+ const requestInterceptors = [
470
+ ...this[kAssets].requestInterceptors,
471
+ ...ctx.requestInterceptors
472
+ ];
473
+ for (const interceptor of requestInterceptors) {
474
+ await interceptor(ctx, request);
475
+ }
476
+ }
477
+ if (observe === "events")
478
+ subscriber.next({ event: "sent", request });
479
+ const response = await this._fetch(url, { ...request, headers: request.headers.toObject() });
480
+ await this._handleResponse(observe, subscriber, request, response);
481
+ })().catch((error) => subscriber.error(error));
482
+ });
483
+ }
484
+ _fetch(url, init = {}) {
485
+ return fetch(url, init);
486
+ }
487
+ _createResponse(init) {
488
+ return new HttpResponse(init);
489
+ }
490
+ async _handleResponse(observe, subscriber, request, fetchResponse, ctx) {
491
+ const headers = new HttpHeaders3(fetchResponse.headers);
492
+ if (observe === "events") {
493
+ const response2 = this._createResponse({
494
+ url: fetchResponse.url,
495
+ headers,
496
+ status: fetchResponse.status,
497
+ statusText: fetchResponse.statusText,
498
+ hasBody: !!fetchResponse.body
499
+ });
500
+ subscriber.next({ event: "headers-received", request, response: response2 });
501
+ }
502
+ let body;
503
+ if (fetchResponse.body) {
504
+ if (JSON_CONTENT_TYPE_PATTERN.test(fetchResponse.headers.get("Content-Type") || "")) {
505
+ body = await fetchResponse.json();
506
+ if (typeof body === "string")
507
+ body = JSON.parse(body);
508
+ } else if (TEXT_CONTENT_TYPE_PATTERN.test(fetchResponse.headers.get("Content-Type") || ""))
509
+ body = await fetchResponse.text();
510
+ else if (FORMDATA_CONTENT_TYPE_PATTERN.test(fetchResponse.headers.get("Content-Type") || ""))
511
+ body = await fetchResponse.formData();
512
+ else {
513
+ const buf = await fetchResponse.arrayBuffer();
514
+ if (buf.byteLength)
515
+ body = buf;
516
+ }
517
+ }
518
+ if (observe === "body" && fetchResponse.status >= 400 && fetchResponse.status < 600) {
519
+ subscriber.error(new ClientError({
520
+ message: fetchResponse.status + " " + fetchResponse.statusText,
521
+ status: fetchResponse.status,
522
+ issues: body?.errors
523
+ }));
524
+ subscriber.complete();
525
+ return;
526
+ }
527
+ const responseInit = {
528
+ url: fetchResponse.url,
529
+ headers,
530
+ status: fetchResponse.status,
531
+ statusText: fetchResponse.statusText,
532
+ body
533
+ };
534
+ if (fetchResponse.headers.has(HttpHeaderCodes.X_Opra_Total_Matches))
535
+ responseInit.totalMatches = parseInt(fetchResponse.headers.get(HttpHeaderCodes.X_Opra_Total_Matches), 10);
536
+ const response = this._createResponse(responseInit);
537
+ if (ctx) {
538
+ const responseInterceptors = [
539
+ ...this[kAssets].responseInterceptors,
540
+ ...ctx.responseInterceptors
541
+ ];
542
+ for (const interceptor of responseInterceptors) {
543
+ await interceptor(ctx, observe, request);
544
+ }
545
+ }
546
+ if (observe === "body") {
547
+ subscriber.next(body);
548
+ } else {
549
+ if (observe === "events")
550
+ subscriber.next({ event: "response", request, response });
551
+ else
552
+ subscriber.next(response);
553
+ }
554
+ subscriber.complete();
555
+ }
556
+ };
557
+ __name(OpraHttpClient, "OpraHttpClient");
558
+ OpraHttpClient.kAssets = kAssets;
559
+
560
+ // ../../build/client/esm/http/http-service-base.js
561
+ var HttpServiceBase = class {
562
+ constructor($client) {
563
+ this.$client = $client;
564
+ }
565
+ };
566
+ __name(HttpServiceBase, "HttpServiceBase");
567
+ export {
568
+ ClientError,
569
+ HttpCollectionNode,
570
+ HttpRequest,
571
+ HttpRequestObservable,
572
+ HttpResponse,
573
+ HttpServiceBase,
574
+ HttpSingletonNode,
575
+ OpraHttpClient
576
+ };
@@ -46,8 +46,11 @@ class OpraHttpClient {
46
46
  headers: new common_1.HttpHeaders({ 'accept': 'application/json' })
47
47
  })));
48
48
  return await promise
49
- .then(body => common_1.DocumentFactory.createDocument(body))
50
- .then(api => this[kAssets].api = api)
49
+ .then(async (body) => {
50
+ const api = await common_1.DocumentFactory.createDocument(body);
51
+ this[kAssets].api = api;
52
+ return api;
53
+ })
51
54
  .catch((e) => {
52
55
  e.message = 'Unable to fetch metadata from ' + this.serviceUrl + '. ' + e.message;
53
56
  throw e;
@@ -43,8 +43,11 @@ export class OpraHttpClient {
43
43
  headers: new HttpHeaders({ 'accept': 'application/json' })
44
44
  })));
45
45
  return await promise
46
- .then(body => DocumentFactory.createDocument(body))
47
- .then(api => this[kAssets].api = api)
46
+ .then(async (body) => {
47
+ const api = await DocumentFactory.createDocument(body);
48
+ this[kAssets].api = api;
49
+ return api;
50
+ })
48
51
  .catch((e) => {
49
52
  e.message = 'Unable to fetch metadata from ' + this.serviceUrl + '. ' + e.message;
50
53
  throw e;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opra/client",
3
- "version": "0.18.0",
3
+ "version": "0.18.2",
4
4
  "description": "Opra Client package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
@@ -12,7 +12,7 @@
12
12
  "scripts": {
13
13
  "compile": "tsc",
14
14
  "prebuild": "npm run check && npm run lint && npm run clean",
15
- "build": "npm run build:cjs && npm run build:esm",
15
+ "build": "npm run build:cjs && npm run build:esm && npm run build:browser",
16
16
  "build:cjs": "tsc -b tsconfig-build-cjs.json",
17
17
  "build:esm": "tsc -b tsconfig-build-esm.json",
18
18
  "build:browser": "node esbuild.mjs",
@@ -33,13 +33,10 @@
33
33
  "types": "./types/index.d.ts",
34
34
  "typings": "./types/index.d.ts",
35
35
  "exports": {
36
- "./package.json": {
37
- "default": "./package.json"
38
- },
39
36
  ".": {
40
37
  "require": "./cjs/index.js",
41
- "default": "./esm/index.js",
42
- "browser": "./browser.js"
38
+ "browser": "./browser.js",
39
+ "default": "./esm/index.js"
43
40
  }
44
41
  },
45
42
  "dependencies": {
@@ -50,7 +47,7 @@
50
47
  "@browsery/i18next": "^0.5.0",
51
48
  "@browsery/stream": "^0.4.0",
52
49
  "@browsery/util": "^0.4.0",
53
- "@opra/common": "^0.18.0",
50
+ "@opra/common": "^0.18.2",
54
51
  "accepts": "^1.3.8",
55
52
  "buffer": "^6.0.3",
56
53
  "cookie": "^0.5.0",
@@ -77,6 +74,7 @@
77
74
  "cjs/",
78
75
  "esm/",
79
76
  "types/",
77
+ "browser.js",
80
78
  "LICENSE",
81
79
  "README.md"
82
80
  ],