@mmstack/resource 20.4.0 → 21.0.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.
@@ -945,7 +945,12 @@ function createDedupeRequestsInterceptor(allowed = ['GET', 'DELETE', 'HEAD', 'OP
945
945
  * isPlainObject(new Date()) // => false
946
946
  */
947
947
  function isPlainObject(value) {
948
- return (typeof value === 'object' && value !== null && value.constructor === Object);
948
+ if (value === null || typeof value !== 'object')
949
+ return false;
950
+ const proto = Object.getPrototypeOf(value);
951
+ if (proto === null)
952
+ return false; // remove Object.create(null);
953
+ return proto === Object.prototype;
949
954
  }
950
955
  /**
951
956
  * Internal helper to generate a stable JSON string from an array.
@@ -1173,15 +1178,21 @@ function hasSlowConnection() {
1173
1178
 
1174
1179
  function persist(src, equal) {
1175
1180
  // linkedSignal allows us to access previous source value
1176
- const persisted = linkedSignal({
1177
- source: () => src(),
1178
- computation: (next, prev) => {
1179
- if (next === undefined && prev !== undefined)
1180
- return prev.value;
1181
- return next;
1182
- },
1183
- equal,
1184
- });
1181
+ const persisted = linkedSignal(...(ngDevMode ? [{ debugName: "persisted", source: () => src(),
1182
+ computation: (next, prev) => {
1183
+ if (next === undefined && prev !== undefined)
1184
+ return prev.value;
1185
+ return next;
1186
+ },
1187
+ equal }] : [{
1188
+ source: () => src(),
1189
+ computation: (next, prev) => {
1190
+ if (next === undefined && prev !== undefined)
1191
+ return prev.value;
1192
+ return next;
1193
+ },
1194
+ equal,
1195
+ }]));
1185
1196
  // if original value was WritableSignal then override linkedSignal methods to original...angular uses linkedSignal under the hood in ResourceImpl, this applies to that.
1186
1197
  if ('set' in src) {
1187
1198
  persisted.set = src.set;
@@ -1266,10 +1277,10 @@ function retryOnError(res, opt) {
1266
1277
 
1267
1278
  class ResourceSensors {
1268
1279
  networkStatus = sensor('networkStatus');
1269
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ResourceSensors, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1270
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ResourceSensors, providedIn: 'root' });
1280
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: ResourceSensors, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1281
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: ResourceSensors, providedIn: 'root' });
1271
1282
  }
1272
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: ResourceSensors, decorators: [{
1283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: ResourceSensors, decorators: [{
1273
1284
  type: Injectable,
1274
1285
  args: [{
1275
1286
  providedIn: 'root',
@@ -1388,27 +1399,45 @@ function queryResource(request, options) {
1388
1399
  resource = catchValueError(resource, options?.defaultValue);
1389
1400
  // get full HttpResonse from Cache
1390
1401
  const cachedEvent = cache.getEntryOrKey(cacheKey);
1391
- const cacheEntry = linkedSignal({
1392
- source: () => cachedEvent(),
1393
- computation: (entry, prev) => {
1394
- if (!entry)
1395
- return null;
1396
- if (typeof entry === 'string' &&
1397
- prev &&
1398
- prev.value !== null &&
1399
- prev.value.key === entry) {
1400
- return prev.value;
1401
- }
1402
- if (typeof entry === 'string')
1403
- return { key: entry, value: null };
1404
- if (!(entry.value instanceof HttpResponse))
1405
- return { key: entry.key, value: null };
1406
- return {
1407
- value: entry.value.body,
1408
- key: entry.key,
1409
- };
1410
- },
1411
- });
1402
+ const cacheEntry = linkedSignal(...(ngDevMode ? [{ debugName: "cacheEntry", source: () => cachedEvent(),
1403
+ computation: (entry, prev) => {
1404
+ if (!entry)
1405
+ return null;
1406
+ if (typeof entry === 'string' &&
1407
+ prev &&
1408
+ prev.value !== null &&
1409
+ prev.value.key === entry) {
1410
+ return prev.value;
1411
+ }
1412
+ if (typeof entry === 'string')
1413
+ return { key: entry, value: null };
1414
+ if (!(entry.value instanceof HttpResponse))
1415
+ return { key: entry.key, value: null };
1416
+ return {
1417
+ value: entry.value.body,
1418
+ key: entry.key,
1419
+ };
1420
+ } }] : [{
1421
+ source: () => cachedEvent(),
1422
+ computation: (entry, prev) => {
1423
+ if (!entry)
1424
+ return null;
1425
+ if (typeof entry === 'string' &&
1426
+ prev &&
1427
+ prev.value !== null &&
1428
+ prev.value.key === entry) {
1429
+ return prev.value;
1430
+ }
1431
+ if (typeof entry === 'string')
1432
+ return { key: entry, value: null };
1433
+ if (!(entry.value instanceof HttpResponse))
1434
+ return { key: entry.key, value: null };
1435
+ return {
1436
+ value: entry.value.body,
1437
+ key: entry.key,
1438
+ };
1439
+ },
1440
+ }]));
1412
1441
  resource = refresh(resource, destroyRef, options?.refresh);
1413
1442
  resource = retryOnError(resource, options?.retry);
1414
1443
  resource = persistResourceValues(resource, options?.keepPrevious, options?.equal);
@@ -1493,6 +1522,7 @@ function queryResource(request, options) {
1493
1522
  try {
1494
1523
  await firstValueFrom(client.request(prefetchRequest.method ?? 'GET', prefetchRequest.url, {
1495
1524
  ...prefetchRequest,
1525
+ referrerPolicy: prefetchRequest.referrerPolicy,
1496
1526
  credentials: prefetchRequest.credentials,
1497
1527
  priority: prefetchRequest.priority,
1498
1528
  cache: prefetchRequest.cache,
@@ -1580,14 +1610,19 @@ function mutationResource(request, options = {}) {
1580
1610
  }, ...(ngDevMode ? [{ debugName: "req", equal: requestEqual }] : [{
1581
1611
  equal: requestEqual,
1582
1612
  }]));
1583
- const lastValue = linkedSignal({
1584
- source: next,
1585
- computation: (next, prev) => {
1586
- if (next === null && !!prev)
1587
- return prev.value;
1588
- return next;
1589
- },
1590
- });
1613
+ const lastValue = linkedSignal(...(ngDevMode ? [{ debugName: "lastValue", source: next,
1614
+ computation: (next, prev) => {
1615
+ if (next === null && !!prev)
1616
+ return prev.value;
1617
+ return next;
1618
+ } }] : [{
1619
+ source: next,
1620
+ computation: (next, prev) => {
1621
+ if (next === null && !!prev)
1622
+ return prev.value;
1623
+ return next;
1624
+ },
1625
+ }]));
1591
1626
  const lastValueRequest = computed(() => {
1592
1627
  const nr = lastValue();
1593
1628
  if (!nr)