@hybridly/core 0.7.13 → 0.7.15

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/dist/index.cjs CHANGED
@@ -13,6 +13,7 @@ const axios__default = /*#__PURE__*/_interopDefaultCompat(axios);
13
13
  const STORAGE_EXTERNAL_KEY = "hybridly:external";
14
14
  const HYBRIDLY_HEADER = "x-hybrid";
15
15
  const EXTERNAL_NAVIGATION_HEADER = `${HYBRIDLY_HEADER}-external`;
16
+ const EXTERNAL_NAVIGATION_TARGET_HEADER = `${HYBRIDLY_HEADER}-external-target`;
16
17
  const PARTIAL_COMPONENT_HEADER = `${HYBRIDLY_HEADER}-partial-component`;
17
18
  const ONLY_DATA_HEADER = `${HYBRIDLY_HEADER}-only-data`;
18
19
  const DIALOG_KEY_HEADER = `${HYBRIDLY_HEADER}-dialog-key`;
@@ -29,6 +30,7 @@ const constants = {
29
30
  ERROR_BAG_HEADER: ERROR_BAG_HEADER,
30
31
  EXCEPT_DATA_HEADER: EXCEPT_DATA_HEADER,
31
32
  EXTERNAL_NAVIGATION_HEADER: EXTERNAL_NAVIGATION_HEADER,
33
+ EXTERNAL_NAVIGATION_TARGET_HEADER: EXTERNAL_NAVIGATION_TARGET_HEADER,
32
34
  HYBRIDLY_HEADER: HYBRIDLY_HEADER,
33
35
  ONLY_DATA_HEADER: ONLY_DATA_HEADER,
34
36
  PARTIAL_COMPONENT_HEADER: PARTIAL_COMPONENT_HEADER,
@@ -618,6 +620,15 @@ function payloadFromContext() {
618
620
 
619
621
  async function performExternalNavigation(options) {
620
622
  utils.debug.external("Navigating to an external URL:", options);
623
+ if (options.target === "new-tab") {
624
+ const link = document.createElement("a");
625
+ link.style.display = "none";
626
+ link.target = "_blank";
627
+ link.href = options.url;
628
+ link.click();
629
+ setTimeout(() => link.remove(), 0);
630
+ return;
631
+ }
621
632
  window.sessionStorage.setItem(STORAGE_EXTERNAL_KEY, JSON.stringify(options));
622
633
  window.location.href = options.url;
623
634
  if (sameUrls(window.location, options.url)) {
@@ -826,7 +837,8 @@ async function performHybridNavigation(options) {
826
837
  utils.debug.router("The response is explicitely external.");
827
838
  await performExternalNavigation({
828
839
  url: fillHash(targetUrl, response.headers[EXTERNAL_NAVIGATION_HEADER]),
829
- preserveScroll: options.preserveScroll === true
840
+ preserveScroll: options.preserveScroll === true,
841
+ target: response.headers[EXTERNAL_NAVIGATION_TARGET_HEADER] ?? "current"
830
842
  });
831
843
  return { response };
832
844
  }
package/dist/index.d.cts CHANGED
@@ -500,6 +500,7 @@ interface Component {
500
500
  declare const STORAGE_EXTERNAL_KEY = "hybridly:external";
501
501
  declare const HYBRIDLY_HEADER = "x-hybrid";
502
502
  declare const EXTERNAL_NAVIGATION_HEADER = "x-hybrid-external";
503
+ declare const EXTERNAL_NAVIGATION_TARGET_HEADER = "x-hybrid-external-target";
503
504
  declare const PARTIAL_COMPONENT_HEADER = "x-hybrid-partial-component";
504
505
  declare const ONLY_DATA_HEADER = "x-hybrid-only-data";
505
506
  declare const DIALOG_KEY_HEADER = "x-hybrid-dialog-key";
@@ -514,6 +515,7 @@ declare const constants_DIALOG_REDIRECT_HEADER: typeof DIALOG_REDIRECT_HEADER;
514
515
  declare const constants_ERROR_BAG_HEADER: typeof ERROR_BAG_HEADER;
515
516
  declare const constants_EXCEPT_DATA_HEADER: typeof EXCEPT_DATA_HEADER;
516
517
  declare const constants_EXTERNAL_NAVIGATION_HEADER: typeof EXTERNAL_NAVIGATION_HEADER;
518
+ declare const constants_EXTERNAL_NAVIGATION_TARGET_HEADER: typeof EXTERNAL_NAVIGATION_TARGET_HEADER;
517
519
  declare const constants_HYBRIDLY_HEADER: typeof HYBRIDLY_HEADER;
518
520
  declare const constants_ONLY_DATA_HEADER: typeof ONLY_DATA_HEADER;
519
521
  declare const constants_PARTIAL_COMPONENT_HEADER: typeof PARTIAL_COMPONENT_HEADER;
@@ -521,7 +523,7 @@ declare const constants_SCROLL_REGION_ATTRIBUTE: typeof SCROLL_REGION_ATTRIBUTE;
521
523
  declare const constants_STORAGE_EXTERNAL_KEY: typeof STORAGE_EXTERNAL_KEY;
522
524
  declare const constants_VERSION_HEADER: typeof VERSION_HEADER;
523
525
  declare namespace constants {
524
- export { constants_DIALOG_KEY_HEADER as DIALOG_KEY_HEADER, constants_DIALOG_REDIRECT_HEADER as DIALOG_REDIRECT_HEADER, constants_ERROR_BAG_HEADER as ERROR_BAG_HEADER, constants_EXCEPT_DATA_HEADER as EXCEPT_DATA_HEADER, constants_EXTERNAL_NAVIGATION_HEADER as EXTERNAL_NAVIGATION_HEADER, constants_HYBRIDLY_HEADER as HYBRIDLY_HEADER, constants_ONLY_DATA_HEADER as ONLY_DATA_HEADER, constants_PARTIAL_COMPONENT_HEADER as PARTIAL_COMPONENT_HEADER, constants_SCROLL_REGION_ATTRIBUTE as SCROLL_REGION_ATTRIBUTE, constants_STORAGE_EXTERNAL_KEY as STORAGE_EXTERNAL_KEY, constants_VERSION_HEADER as VERSION_HEADER };
526
+ export { constants_DIALOG_KEY_HEADER as DIALOG_KEY_HEADER, constants_DIALOG_REDIRECT_HEADER as DIALOG_REDIRECT_HEADER, constants_ERROR_BAG_HEADER as ERROR_BAG_HEADER, constants_EXCEPT_DATA_HEADER as EXCEPT_DATA_HEADER, constants_EXTERNAL_NAVIGATION_HEADER as EXTERNAL_NAVIGATION_HEADER, constants_EXTERNAL_NAVIGATION_TARGET_HEADER as EXTERNAL_NAVIGATION_TARGET_HEADER, constants_HYBRIDLY_HEADER as HYBRIDLY_HEADER, constants_ONLY_DATA_HEADER as ONLY_DATA_HEADER, constants_PARTIAL_COMPONENT_HEADER as PARTIAL_COMPONENT_HEADER, constants_SCROLL_REGION_ATTRIBUTE as SCROLL_REGION_ATTRIBUTE, constants_STORAGE_EXTERNAL_KEY as STORAGE_EXTERNAL_KEY, constants_VERSION_HEADER as VERSION_HEADER };
525
527
  }
526
528
 
527
529
  export { type Authorizable, type DynamicConfiguration, type GlobalRouteCollection, type HybridPayload, type HybridRequestOptions, type MaybePromise, type Method, type NavigationResponse, type Plugin, type Progress, type ResolveComponent, type RouteDefinition, type RouteName, type RouteParameters, type Router, type RouterContext, type RouterContextOptions, type RoutingConfiguration, type UrlResolvable, can, constants, createRouter, definePlugin, getRouterContext, makeUrl, registerHook, route, router, sameUrls };
package/dist/index.d.mts CHANGED
@@ -500,6 +500,7 @@ interface Component {
500
500
  declare const STORAGE_EXTERNAL_KEY = "hybridly:external";
501
501
  declare const HYBRIDLY_HEADER = "x-hybrid";
502
502
  declare const EXTERNAL_NAVIGATION_HEADER = "x-hybrid-external";
503
+ declare const EXTERNAL_NAVIGATION_TARGET_HEADER = "x-hybrid-external-target";
503
504
  declare const PARTIAL_COMPONENT_HEADER = "x-hybrid-partial-component";
504
505
  declare const ONLY_DATA_HEADER = "x-hybrid-only-data";
505
506
  declare const DIALOG_KEY_HEADER = "x-hybrid-dialog-key";
@@ -514,6 +515,7 @@ declare const constants_DIALOG_REDIRECT_HEADER: typeof DIALOG_REDIRECT_HEADER;
514
515
  declare const constants_ERROR_BAG_HEADER: typeof ERROR_BAG_HEADER;
515
516
  declare const constants_EXCEPT_DATA_HEADER: typeof EXCEPT_DATA_HEADER;
516
517
  declare const constants_EXTERNAL_NAVIGATION_HEADER: typeof EXTERNAL_NAVIGATION_HEADER;
518
+ declare const constants_EXTERNAL_NAVIGATION_TARGET_HEADER: typeof EXTERNAL_NAVIGATION_TARGET_HEADER;
517
519
  declare const constants_HYBRIDLY_HEADER: typeof HYBRIDLY_HEADER;
518
520
  declare const constants_ONLY_DATA_HEADER: typeof ONLY_DATA_HEADER;
519
521
  declare const constants_PARTIAL_COMPONENT_HEADER: typeof PARTIAL_COMPONENT_HEADER;
@@ -521,7 +523,7 @@ declare const constants_SCROLL_REGION_ATTRIBUTE: typeof SCROLL_REGION_ATTRIBUTE;
521
523
  declare const constants_STORAGE_EXTERNAL_KEY: typeof STORAGE_EXTERNAL_KEY;
522
524
  declare const constants_VERSION_HEADER: typeof VERSION_HEADER;
523
525
  declare namespace constants {
524
- export { constants_DIALOG_KEY_HEADER as DIALOG_KEY_HEADER, constants_DIALOG_REDIRECT_HEADER as DIALOG_REDIRECT_HEADER, constants_ERROR_BAG_HEADER as ERROR_BAG_HEADER, constants_EXCEPT_DATA_HEADER as EXCEPT_DATA_HEADER, constants_EXTERNAL_NAVIGATION_HEADER as EXTERNAL_NAVIGATION_HEADER, constants_HYBRIDLY_HEADER as HYBRIDLY_HEADER, constants_ONLY_DATA_HEADER as ONLY_DATA_HEADER, constants_PARTIAL_COMPONENT_HEADER as PARTIAL_COMPONENT_HEADER, constants_SCROLL_REGION_ATTRIBUTE as SCROLL_REGION_ATTRIBUTE, constants_STORAGE_EXTERNAL_KEY as STORAGE_EXTERNAL_KEY, constants_VERSION_HEADER as VERSION_HEADER };
526
+ export { constants_DIALOG_KEY_HEADER as DIALOG_KEY_HEADER, constants_DIALOG_REDIRECT_HEADER as DIALOG_REDIRECT_HEADER, constants_ERROR_BAG_HEADER as ERROR_BAG_HEADER, constants_EXCEPT_DATA_HEADER as EXCEPT_DATA_HEADER, constants_EXTERNAL_NAVIGATION_HEADER as EXTERNAL_NAVIGATION_HEADER, constants_EXTERNAL_NAVIGATION_TARGET_HEADER as EXTERNAL_NAVIGATION_TARGET_HEADER, constants_HYBRIDLY_HEADER as HYBRIDLY_HEADER, constants_ONLY_DATA_HEADER as ONLY_DATA_HEADER, constants_PARTIAL_COMPONENT_HEADER as PARTIAL_COMPONENT_HEADER, constants_SCROLL_REGION_ATTRIBUTE as SCROLL_REGION_ATTRIBUTE, constants_STORAGE_EXTERNAL_KEY as STORAGE_EXTERNAL_KEY, constants_VERSION_HEADER as VERSION_HEADER };
525
527
  }
526
528
 
527
529
  export { type Authorizable, type DynamicConfiguration, type GlobalRouteCollection, type HybridPayload, type HybridRequestOptions, type MaybePromise, type Method, type NavigationResponse, type Plugin, type Progress, type ResolveComponent, type RouteDefinition, type RouteName, type RouteParameters, type Router, type RouterContext, type RouterContextOptions, type RoutingConfiguration, type UrlResolvable, can, constants, createRouter, definePlugin, getRouterContext, makeUrl, registerHook, route, router, sameUrls };
package/dist/index.d.ts CHANGED
@@ -500,6 +500,7 @@ interface Component {
500
500
  declare const STORAGE_EXTERNAL_KEY = "hybridly:external";
501
501
  declare const HYBRIDLY_HEADER = "x-hybrid";
502
502
  declare const EXTERNAL_NAVIGATION_HEADER = "x-hybrid-external";
503
+ declare const EXTERNAL_NAVIGATION_TARGET_HEADER = "x-hybrid-external-target";
503
504
  declare const PARTIAL_COMPONENT_HEADER = "x-hybrid-partial-component";
504
505
  declare const ONLY_DATA_HEADER = "x-hybrid-only-data";
505
506
  declare const DIALOG_KEY_HEADER = "x-hybrid-dialog-key";
@@ -514,6 +515,7 @@ declare const constants_DIALOG_REDIRECT_HEADER: typeof DIALOG_REDIRECT_HEADER;
514
515
  declare const constants_ERROR_BAG_HEADER: typeof ERROR_BAG_HEADER;
515
516
  declare const constants_EXCEPT_DATA_HEADER: typeof EXCEPT_DATA_HEADER;
516
517
  declare const constants_EXTERNAL_NAVIGATION_HEADER: typeof EXTERNAL_NAVIGATION_HEADER;
518
+ declare const constants_EXTERNAL_NAVIGATION_TARGET_HEADER: typeof EXTERNAL_NAVIGATION_TARGET_HEADER;
517
519
  declare const constants_HYBRIDLY_HEADER: typeof HYBRIDLY_HEADER;
518
520
  declare const constants_ONLY_DATA_HEADER: typeof ONLY_DATA_HEADER;
519
521
  declare const constants_PARTIAL_COMPONENT_HEADER: typeof PARTIAL_COMPONENT_HEADER;
@@ -521,7 +523,7 @@ declare const constants_SCROLL_REGION_ATTRIBUTE: typeof SCROLL_REGION_ATTRIBUTE;
521
523
  declare const constants_STORAGE_EXTERNAL_KEY: typeof STORAGE_EXTERNAL_KEY;
522
524
  declare const constants_VERSION_HEADER: typeof VERSION_HEADER;
523
525
  declare namespace constants {
524
- export { constants_DIALOG_KEY_HEADER as DIALOG_KEY_HEADER, constants_DIALOG_REDIRECT_HEADER as DIALOG_REDIRECT_HEADER, constants_ERROR_BAG_HEADER as ERROR_BAG_HEADER, constants_EXCEPT_DATA_HEADER as EXCEPT_DATA_HEADER, constants_EXTERNAL_NAVIGATION_HEADER as EXTERNAL_NAVIGATION_HEADER, constants_HYBRIDLY_HEADER as HYBRIDLY_HEADER, constants_ONLY_DATA_HEADER as ONLY_DATA_HEADER, constants_PARTIAL_COMPONENT_HEADER as PARTIAL_COMPONENT_HEADER, constants_SCROLL_REGION_ATTRIBUTE as SCROLL_REGION_ATTRIBUTE, constants_STORAGE_EXTERNAL_KEY as STORAGE_EXTERNAL_KEY, constants_VERSION_HEADER as VERSION_HEADER };
526
+ export { constants_DIALOG_KEY_HEADER as DIALOG_KEY_HEADER, constants_DIALOG_REDIRECT_HEADER as DIALOG_REDIRECT_HEADER, constants_ERROR_BAG_HEADER as ERROR_BAG_HEADER, constants_EXCEPT_DATA_HEADER as EXCEPT_DATA_HEADER, constants_EXTERNAL_NAVIGATION_HEADER as EXTERNAL_NAVIGATION_HEADER, constants_EXTERNAL_NAVIGATION_TARGET_HEADER as EXTERNAL_NAVIGATION_TARGET_HEADER, constants_HYBRIDLY_HEADER as HYBRIDLY_HEADER, constants_ONLY_DATA_HEADER as ONLY_DATA_HEADER, constants_PARTIAL_COMPONENT_HEADER as PARTIAL_COMPONENT_HEADER, constants_SCROLL_REGION_ATTRIBUTE as SCROLL_REGION_ATTRIBUTE, constants_STORAGE_EXTERNAL_KEY as STORAGE_EXTERNAL_KEY, constants_VERSION_HEADER as VERSION_HEADER };
525
527
  }
526
528
 
527
529
  export { type Authorizable, type DynamicConfiguration, type GlobalRouteCollection, type HybridPayload, type HybridRequestOptions, type MaybePromise, type Method, type NavigationResponse, type Plugin, type Progress, type ResolveComponent, type RouteDefinition, type RouteName, type RouteParameters, type Router, type RouterContext, type RouterContextOptions, type RoutingConfiguration, type UrlResolvable, can, constants, createRouter, definePlugin, getRouterContext, makeUrl, registerHook, route, router, sameUrls };
package/dist/index.mjs CHANGED
@@ -6,6 +6,7 @@ import { stringify, parse } from 'superjson';
6
6
  const STORAGE_EXTERNAL_KEY = "hybridly:external";
7
7
  const HYBRIDLY_HEADER = "x-hybrid";
8
8
  const EXTERNAL_NAVIGATION_HEADER = `${HYBRIDLY_HEADER}-external`;
9
+ const EXTERNAL_NAVIGATION_TARGET_HEADER = `${HYBRIDLY_HEADER}-external-target`;
9
10
  const PARTIAL_COMPONENT_HEADER = `${HYBRIDLY_HEADER}-partial-component`;
10
11
  const ONLY_DATA_HEADER = `${HYBRIDLY_HEADER}-only-data`;
11
12
  const DIALOG_KEY_HEADER = `${HYBRIDLY_HEADER}-dialog-key`;
@@ -22,6 +23,7 @@ const constants = {
22
23
  ERROR_BAG_HEADER: ERROR_BAG_HEADER,
23
24
  EXCEPT_DATA_HEADER: EXCEPT_DATA_HEADER,
24
25
  EXTERNAL_NAVIGATION_HEADER: EXTERNAL_NAVIGATION_HEADER,
26
+ EXTERNAL_NAVIGATION_TARGET_HEADER: EXTERNAL_NAVIGATION_TARGET_HEADER,
25
27
  HYBRIDLY_HEADER: HYBRIDLY_HEADER,
26
28
  ONLY_DATA_HEADER: ONLY_DATA_HEADER,
27
29
  PARTIAL_COMPONENT_HEADER: PARTIAL_COMPONENT_HEADER,
@@ -611,6 +613,15 @@ function payloadFromContext() {
611
613
 
612
614
  async function performExternalNavigation(options) {
613
615
  debug.external("Navigating to an external URL:", options);
616
+ if (options.target === "new-tab") {
617
+ const link = document.createElement("a");
618
+ link.style.display = "none";
619
+ link.target = "_blank";
620
+ link.href = options.url;
621
+ link.click();
622
+ setTimeout(() => link.remove(), 0);
623
+ return;
624
+ }
614
625
  window.sessionStorage.setItem(STORAGE_EXTERNAL_KEY, JSON.stringify(options));
615
626
  window.location.href = options.url;
616
627
  if (sameUrls(window.location, options.url)) {
@@ -819,7 +830,8 @@ async function performHybridNavigation(options) {
819
830
  debug.router("The response is explicitely external.");
820
831
  await performExternalNavigation({
821
832
  url: fillHash(targetUrl, response.headers[EXTERNAL_NAVIGATION_HEADER]),
822
- preserveScroll: options.preserveScroll === true
833
+ preserveScroll: options.preserveScroll === true,
834
+ target: response.headers[EXTERNAL_NAVIGATION_TARGET_HEADER] ?? "current"
823
835
  });
824
836
  return { response };
825
837
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hybridly/core",
3
3
  "type": "module",
4
- "version": "0.7.13",
4
+ "version": "0.7.15",
5
5
  "description": "Core functionality of Hybridly",
6
6
  "author": "Enzo Innocenzi <enzo@innocenzi.dev>",
7
7
  "license": "MIT",
@@ -41,9 +41,9 @@
41
41
  "axios": "^1.7.2"
42
42
  },
43
43
  "dependencies": {
44
- "qs": "^6.12.1",
44
+ "qs": "^6.13.0",
45
45
  "superjson": "^2.2.1",
46
- "@hybridly/utils": "0.7.13"
46
+ "@hybridly/utils": "0.7.15"
47
47
  },
48
48
  "devDependencies": {
49
49
  "defu": "^6.1.4"