oidc-spa 8.1.3 → 8.1.4

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.
Files changed (192) hide show
  1. package/core/OidcMetadata.js +2 -2
  2. package/core/OidcMetadata.js.map +1 -1
  3. package/core/StateData.js +3 -2
  4. package/core/StateData.js.map +1 -1
  5. package/core/createOidc.js +33 -32
  6. package/core/createOidc.js.map +1 -1
  7. package/core/earlyInit.js +5 -5
  8. package/core/earlyInit.js.map +1 -1
  9. package/core/evtIsUserActive.js +5 -4
  10. package/core/evtIsUserActive.js.map +1 -1
  11. package/core/iframeMessageProtection.js +4 -8
  12. package/core/iframeMessageProtection.js.map +1 -1
  13. package/core/loginOrGoToAuthServer.js +5 -4
  14. package/core/loginOrGoToAuthServer.js.map +1 -1
  15. package/core/loginPropagationToOtherTabs.js +2 -2
  16. package/core/loginPropagationToOtherTabs.js.map +1 -1
  17. package/core/loginSilent.js +8 -6
  18. package/core/loginSilent.js.map +1 -1
  19. package/core/logoutPropagationToOtherTabs.js +2 -2
  20. package/core/logoutPropagationToOtherTabs.js.map +1 -1
  21. package/core/oidcClientTsUserToTokens.js +12 -11
  22. package/core/oidcClientTsUserToTokens.js.map +1 -1
  23. package/core/ongoingLoginOrRefreshProcesses.js +5 -4
  24. package/core/ongoingLoginOrRefreshProcesses.js.map +1 -1
  25. package/core/persistedAuthState.js +7 -6
  26. package/core/persistedAuthState.js.map +1 -1
  27. package/esm/angular.js +1 -1
  28. package/esm/angular.js.map +1 -1
  29. package/esm/core/OidcMetadata.js +1 -1
  30. package/esm/core/OidcMetadata.js.map +1 -1
  31. package/esm/core/StateData.js +2 -1
  32. package/esm/core/StateData.js.map +1 -1
  33. package/esm/core/createOidc.js +3 -2
  34. package/esm/core/createOidc.js.map +1 -1
  35. package/esm/core/earlyInit.js +1 -1
  36. package/esm/core/earlyInit.js.map +1 -1
  37. package/esm/core/evtIsUserActive.js +2 -1
  38. package/esm/core/evtIsUserActive.js.map +1 -1
  39. package/esm/core/iframeMessageProtection.js +2 -6
  40. package/esm/core/iframeMessageProtection.js.map +1 -1
  41. package/esm/core/loginOrGoToAuthServer.js +2 -1
  42. package/esm/core/loginOrGoToAuthServer.js.map +1 -1
  43. package/esm/core/loginPropagationToOtherTabs.js +1 -1
  44. package/esm/core/loginPropagationToOtherTabs.js.map +1 -1
  45. package/esm/core/loginSilent.js +3 -1
  46. package/esm/core/loginSilent.js.map +1 -1
  47. package/esm/core/logoutPropagationToOtherTabs.js +1 -1
  48. package/esm/core/logoutPropagationToOtherTabs.js.map +1 -1
  49. package/esm/core/oidcClientTsUserToTokens.js +2 -1
  50. package/esm/core/oidcClientTsUserToTokens.js.map +1 -1
  51. package/esm/core/ongoingLoginOrRefreshProcesses.js +2 -1
  52. package/esm/core/ongoingLoginOrRefreshProcesses.js.map +1 -1
  53. package/esm/core/persistedAuthState.js +2 -1
  54. package/esm/core/persistedAuthState.js.map +1 -1
  55. package/esm/keycloak/keycloak-js/Keycloak.js +2 -1
  56. package/esm/keycloak/keycloak-js/Keycloak.js.map +1 -1
  57. package/esm/keycloak/keycloakIssuerUriParsed.js +1 -1
  58. package/esm/keycloak/keycloakIssuerUriParsed.js.map +1 -1
  59. package/esm/mock/oidc.js +1 -1
  60. package/esm/mock/oidc.js.map +1 -1
  61. package/esm/react/react.js +2 -2
  62. package/esm/react/react.js.map +1 -1
  63. package/esm/tools/EphemeralSessionStorage.js +3 -1
  64. package/esm/tools/EphemeralSessionStorage.js.map +1 -1
  65. package/esm/tools/Evt.js +1 -1
  66. package/esm/tools/Evt.js.map +1 -1
  67. package/esm/tools/getDownlinkAndRtt.js +1 -1
  68. package/esm/tools/getDownlinkAndRtt.js.map +1 -1
  69. package/esm/tools/readExpirationTimeInJwt.js +1 -1
  70. package/esm/tools/readExpirationTimeInJwt.js.map +1 -1
  71. package/esm/tools/tsafe/Equals.d.ts +4 -0
  72. package/esm/tools/tsafe/Equals.js +5 -0
  73. package/esm/tools/tsafe/Equals.js.map +1 -0
  74. package/esm/tools/tsafe/Param0.d.ts +7 -0
  75. package/esm/tools/tsafe/Param0.js +2 -0
  76. package/esm/tools/tsafe/Param0.js.map +1 -0
  77. package/esm/tools/tsafe/Parameters.d.ts +2 -0
  78. package/esm/tools/tsafe/Parameters.js +2 -0
  79. package/esm/tools/tsafe/Parameters.js.map +1 -0
  80. package/esm/tools/tsafe/Reflect.d.ts +2 -0
  81. package/esm/tools/tsafe/Reflect.js +5 -0
  82. package/esm/tools/tsafe/Reflect.js.map +1 -0
  83. package/esm/tools/tsafe/assert.d.ts +10 -0
  84. package/esm/tools/tsafe/assert.js +46 -0
  85. package/esm/tools/tsafe/assert.js.map +1 -0
  86. package/esm/tools/tsafe/id.d.ts +36 -0
  87. package/esm/tools/tsafe/id.js +3 -0
  88. package/esm/tools/tsafe/id.js.map +1 -0
  89. package/esm/tools/tsafe/isAmong.d.ts +2 -0
  90. package/esm/tools/tsafe/isAmong.js +10 -0
  91. package/esm/tools/tsafe/isAmong.js.map +1 -0
  92. package/esm/tools/tsafe/noUndefined.d.ts +9 -0
  93. package/esm/tools/tsafe/noUndefined.js +19 -0
  94. package/esm/tools/tsafe/noUndefined.js.map +1 -0
  95. package/esm/tools/tsafe/tools/StrictEquals.d.ts +1 -0
  96. package/esm/tools/tsafe/tools/StrictEquals.js +2 -0
  97. package/esm/tools/tsafe/tools/StrictEquals.js.map +1 -0
  98. package/esm/tools/tsafe/tools/Unite.d.ts +3 -0
  99. package/esm/tools/tsafe/tools/Unite.js +2 -0
  100. package/esm/tools/tsafe/tools/Unite.js.map +1 -0
  101. package/esm/tools/tsafe/typeGuard.d.ts +2 -0
  102. package/esm/tools/tsafe/typeGuard.js +5 -0
  103. package/esm/tools/tsafe/typeGuard.js.map +1 -0
  104. package/keycloak/keycloak-js/Keycloak.js +55 -54
  105. package/keycloak/keycloak-js/Keycloak.js.map +1 -1
  106. package/keycloak/keycloakIssuerUriParsed.js +3 -3
  107. package/keycloak/keycloakIssuerUriParsed.js.map +1 -1
  108. package/mock/oidc.js +4 -4
  109. package/mock/oidc.js.map +1 -1
  110. package/package.json +1 -1
  111. package/react/react.js +8 -8
  112. package/react/react.js.map +1 -1
  113. package/src/angular.ts +1 -1
  114. package/src/core/OidcMetadata.ts +1 -1
  115. package/src/core/StateData.ts +2 -1
  116. package/src/core/createOidc.ts +2 -1
  117. package/src/core/earlyInit.ts +1 -1
  118. package/src/core/evtIsUserActive.ts +2 -1
  119. package/src/core/iframeMessageProtection.ts +2 -7
  120. package/src/core/loginOrGoToAuthServer.ts +2 -1
  121. package/src/core/loginPropagationToOtherTabs.ts +1 -1
  122. package/src/core/loginSilent.ts +3 -1
  123. package/src/core/logoutPropagationToOtherTabs.ts +1 -1
  124. package/src/core/oidcClientTsUserToTokens.ts +2 -1
  125. package/src/core/ongoingLoginOrRefreshProcesses.ts +2 -1
  126. package/src/core/persistedAuthState.ts +2 -1
  127. package/src/keycloak/keycloak-js/Keycloak.ts +2 -1
  128. package/src/keycloak/keycloakIssuerUriParsed.ts +1 -1
  129. package/src/mock/oidc.ts +1 -1
  130. package/src/react/react.tsx +3 -2
  131. package/src/tools/EphemeralSessionStorage.ts +3 -1
  132. package/src/tools/Evt.ts +1 -1
  133. package/src/tools/getDownlinkAndRtt.ts +1 -1
  134. package/src/tools/readExpirationTimeInJwt.ts +1 -1
  135. package/src/tools/tsafe/Equals.ts +10 -0
  136. package/src/tools/tsafe/Param0.ts +12 -0
  137. package/src/tools/tsafe/Parameters.ts +3 -0
  138. package/src/tools/tsafe/Reflect.ts +4 -0
  139. package/src/tools/tsafe/assert.ts +66 -0
  140. package/src/tools/tsafe/id.ts +37 -0
  141. package/src/tools/tsafe/isAmong.ts +12 -0
  142. package/src/tools/tsafe/noUndefined.ts +21 -0
  143. package/src/tools/tsafe/tools/StrictEquals.ts +5 -0
  144. package/src/tools/tsafe/tools/Unite.ts +1 -0
  145. package/src/tools/tsafe/typeGuard.ts +4 -0
  146. package/tools/EphemeralSessionStorage.js +12 -10
  147. package/tools/EphemeralSessionStorage.js.map +1 -1
  148. package/tools/Evt.js +2 -2
  149. package/tools/Evt.js.map +1 -1
  150. package/tools/getDownlinkAndRtt.js +3 -3
  151. package/tools/getDownlinkAndRtt.js.map +1 -1
  152. package/tools/readExpirationTimeInJwt.js +2 -2
  153. package/tools/readExpirationTimeInJwt.js.map +1 -1
  154. package/tools/tsafe/Equals.d.ts +4 -0
  155. package/tools/tsafe/Equals.js +6 -0
  156. package/tools/tsafe/Equals.js.map +1 -0
  157. package/tools/tsafe/Param0.d.ts +7 -0
  158. package/tools/tsafe/Param0.js +3 -0
  159. package/tools/tsafe/Param0.js.map +1 -0
  160. package/tools/tsafe/Parameters.d.ts +2 -0
  161. package/tools/tsafe/Parameters.js +3 -0
  162. package/tools/tsafe/Parameters.js.map +1 -0
  163. package/tools/tsafe/Reflect.d.ts +2 -0
  164. package/tools/tsafe/Reflect.js +8 -0
  165. package/tools/tsafe/Reflect.js.map +1 -0
  166. package/tools/tsafe/assert.d.ts +10 -0
  167. package/tools/tsafe/assert.js +52 -0
  168. package/tools/tsafe/assert.js.map +1 -0
  169. package/tools/tsafe/id.d.ts +36 -0
  170. package/tools/tsafe/id.js +7 -0
  171. package/tools/tsafe/id.js.map +1 -0
  172. package/tools/tsafe/isAmong.d.ts +2 -0
  173. package/tools/tsafe/isAmong.js +13 -0
  174. package/tools/tsafe/isAmong.js.map +1 -0
  175. package/tools/tsafe/noUndefined.d.ts +9 -0
  176. package/tools/tsafe/noUndefined.js +22 -0
  177. package/tools/tsafe/noUndefined.js.map +1 -0
  178. package/tools/tsafe/tools/StrictEquals.d.ts +1 -0
  179. package/tools/tsafe/tools/StrictEquals.js +3 -0
  180. package/tools/tsafe/tools/StrictEquals.js.map +1 -0
  181. package/tools/tsafe/tools/Unite.d.ts +3 -0
  182. package/tools/tsafe/tools/Unite.js +3 -0
  183. package/tools/tsafe/tools/Unite.js.map +1 -0
  184. package/tools/tsafe/typeGuard.d.ts +2 -0
  185. package/tools/tsafe/typeGuard.js +8 -0
  186. package/tools/tsafe/typeGuard.js.map +1 -0
  187. package/vendor/backend/tsafe.js +1 -1
  188. package/esm/vendor/frontend/tsafe.d.ts +0 -7
  189. package/esm/vendor/frontend/tsafe.js +0 -1
  190. package/src/vendor/frontend/tsafe.ts +0 -7
  191. package/vendor/frontend/tsafe.d.ts +0 -7
  192. package/vendor/frontend/tsafe.js +0 -2
@@ -1,5 +1,5 @@
1
1
  import { type OidcMetadata as OidcClientTsOidcMetadata } from "../vendor/frontend/oidc-client-ts";
2
- import { assert, type Equals } from "../vendor/frontend/tsafe";
2
+ import { assert, type Equals } from "../tools/tsafe/assert";
3
3
 
4
4
  /**
5
5
  * OpenID Providers have metadata describing their configuration.
@@ -1,4 +1,5 @@
1
- import { typeGuard, assert } from "../vendor/frontend/tsafe";
1
+ import { assert } from "../tools/tsafe/assert";
2
+ import { typeGuard } from "../tools/tsafe/typeGuard";
2
3
  import { generateUrlSafeRandom } from "../tools/generateUrlSafeRandom";
3
4
 
4
5
  export type StateData = StateData.IFrame | StateData.Redirect;
@@ -5,7 +5,8 @@ import {
5
5
  InMemoryWebStorage
6
6
  } from "../vendor/frontend/oidc-client-ts";
7
7
  import type { OidcMetadata } from "./OidcMetadata";
8
- import { id, assert, is, type Equals } from "../vendor/frontend/tsafe";
8
+ import { assert, is, type Equals } from "../tools/tsafe/assert";
9
+ import { id } from "../tools/tsafe/id";
9
10
  import { setTimeout, clearTimeout } from "../tools/workerTimers";
10
11
  import { Deferred } from "../tools/Deferred";
11
12
  import { createEvtIsUserActive } from "./evtIsUserActive";
@@ -1,5 +1,5 @@
1
1
  import { getStateData, getIsStatQueryParamValue } from "./StateData";
2
- import { assert, type Equals } from "../vendor/frontend/tsafe";
2
+ import { assert, type Equals } from "../tools/tsafe/assert";
3
3
  import type { AuthResponse } from "./AuthResponse";
4
4
  import {
5
5
  encryptAuthResponse,
@@ -1,6 +1,7 @@
1
1
  import { createEvt, type NonPostableEvt } from "../tools/Evt";
2
2
  import { subscribeToUserInteraction } from "../tools/subscribeToUserInteraction";
3
- import { assert, is, id } from "../vendor/frontend/tsafe";
3
+ import { assert, is } from "../tools/tsafe/assert";
4
+ import { id } from "../tools/tsafe/id";
4
5
  import { setTimeout, clearTimeout } from "../tools/workerTimers";
5
6
 
6
7
  const globalContext = {
@@ -1,25 +1,20 @@
1
- import { assert } from "../vendor/frontend/tsafe";
1
+ import { assert } from "../tools/tsafe/assert";
2
2
  import { asymmetricEncrypt, asymmetricDecrypt, generateKeys } from "../tools/asymmetricEncryption";
3
3
  import { type AuthResponse } from "./AuthResponse";
4
4
 
5
- const sessionStorage_original = window.sessionStorage;
6
5
  const setItem_real = Storage.prototype.setItem;
7
6
 
8
7
  const SESSION_STORAGE_PREFIX = "oidc-spa_iframe_authResponse_publicKey_";
9
8
 
10
9
  export function preventSessionStorageSetItemOfPublicKeyByThirdParty() {
11
10
  const setItem_protected = function setItem(this: any, key: string, value: string): void {
12
- if (this !== sessionStorage_original) {
13
- return setItem_real.call(this, key, value);
14
- }
15
-
16
11
  if (key.startsWith(SESSION_STORAGE_PREFIX)) {
17
12
  throw new Error(
18
13
  "Attack prevented by oidc-spa. You have malicious code running in your system"
19
14
  );
20
15
  }
21
16
 
22
- return setItem_real.call(sessionStorage_original, key, value);
17
+ return setItem_real.call(this, key, value);
23
18
  };
24
19
 
25
20
  {
@@ -1,6 +1,7 @@
1
1
  import type { UserManager as OidcClientTsUserManager } from "../vendor/frontend/oidc-client-ts";
2
2
  import { toFullyQualifiedUrl } from "../tools/toFullyQualifiedUrl";
3
- import { assert, type Equals, noUndefined } from "../vendor/frontend/tsafe";
3
+ import { assert, type Equals } from "../tools/tsafe/assert";
4
+ import { noUndefined } from "../tools/tsafe/noUndefined";
4
5
  import type { StateData } from "./StateData";
5
6
  import type { NonPostableEvt } from "../tools/Evt";
6
7
  import { createStatefulEvt } from "../tools/StatefulEvt";
@@ -1,4 +1,4 @@
1
- import { assert, is } from "../vendor/frontend/tsafe";
1
+ import { assert, is } from "../tools/tsafe/assert";
2
2
  import { Deferred } from "../tools/Deferred";
3
3
 
4
4
  const globalContext = {
@@ -3,7 +3,9 @@ import type {
3
3
  User as OidcClientTsUser
4
4
  } from "../vendor/frontend/oidc-client-ts";
5
5
  import { Deferred } from "../tools/Deferred";
6
- import { id, assert, noUndefined } from "../vendor/frontend/tsafe";
6
+ import { assert } from "../tools/tsafe/assert";
7
+ import { id } from "../tools/tsafe/id";
8
+ import { noUndefined } from "../tools/tsafe/noUndefined";
7
9
  import { getStateData, clearStateStore, type StateData } from "./StateData";
8
10
  import { getDownlinkAndRtt } from "../tools/getDownlinkAndRtt";
9
11
  import { getIsDev } from "../tools/isDev";
@@ -1,4 +1,4 @@
1
- import { assert, is } from "../vendor/frontend/tsafe";
1
+ import { assert, is } from "../tools/tsafe/assert";
2
2
  import { Deferred } from "../tools/Deferred";
3
3
 
4
4
  const globalContext = {
@@ -1,5 +1,6 @@
1
1
  import type { User as OidcClientTsUser } from "../vendor/frontend/oidc-client-ts";
2
- import { assert, id } from "../vendor/frontend/tsafe";
2
+ import { assert } from "../tools/tsafe/assert";
3
+ import { id } from "../tools/tsafe/id";
3
4
  import { readExpirationTimeInJwt } from "../tools/readExpirationTimeInJwt";
4
5
  import { decodeJwt } from "../tools/decodeJwt";
5
6
  import type { Oidc } from "./Oidc";
@@ -1,5 +1,6 @@
1
1
  import { Deferred } from "../tools/Deferred";
2
- import { assert, id } from "../vendor/frontend/tsafe";
2
+ import { assert } from "../tools/tsafe/assert";
3
+ import { id } from "../tools/tsafe/id";
3
4
 
4
5
  const globalContext = {
5
6
  prDone_arr: id<Promise<void>[]>([]),
@@ -1,4 +1,5 @@
1
- import { typeGuard, id } from "../vendor/frontend/tsafe";
1
+ import { typeGuard } from "../tools/tsafe/typeGuard";
2
+ import { id } from "../tools/tsafe/id";
2
3
 
3
4
  function getKey(params: { configId: string }) {
4
5
  const { configId } = params;
@@ -12,7 +12,8 @@ import type {
12
12
  KeycloakRegisterOptions,
13
13
  KeycloakAccountOptions
14
14
  } from "./types";
15
- import { assert, is, isAmong } from "../../vendor/frontend/tsafe";
15
+ import { assert, is } from "../../tools/tsafe/assert";
16
+ import { isAmong } from "../../tools/tsafe/isAmong";
16
17
  import { createOidc, type Oidc, OidcInitializationError } from "../../core";
17
18
  import { Deferred } from "../../tools/Deferred";
18
19
  import { decodeJwt } from "../../tools/decodeJwt";
@@ -1,4 +1,4 @@
1
- import { assert } from "../vendor/frontend/tsafe";
1
+ import { assert } from "../tools/tsafe/assert";
2
2
  import { isKeycloak } from "./isKeycloak";
3
3
 
4
4
  export type KeycloakIssuerUriParsed = {
package/src/mock/oidc.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { Oidc } from "../core";
2
2
  import { createObjectThatThrowsIfAccessed } from "../tools/createObjectThatThrowsIfAccessed";
3
- import { id } from "../vendor/frontend/tsafe";
3
+ import { id } from "../tools/tsafe/id";
4
4
  import { toFullyQualifiedUrl } from "../tools/toFullyQualifiedUrl";
5
5
  import { getSearchParam, addOrUpdateSearchParam } from "../tools/urlSearchParams";
6
6
  import { getRootRelativeOriginalLocationHref } from "../core/earlyInit";
@@ -9,8 +9,9 @@ import {
9
9
  type JSX
10
10
  } from "react";
11
11
  import { type Oidc, createOidc, type ParamsOfCreateOidc, OidcInitializationError } from "../core";
12
- import { assert, type Equals, type Param0 } from "../vendor/frontend/tsafe";
13
- import { id } from "../vendor/frontend/tsafe";
12
+ import { assert, type Equals } from "../tools/tsafe/assert";
13
+ import type { Param0 } from "../tools/tsafe/Param0";
14
+ import { id } from "../tools/tsafe/id";
14
15
  import type { ValueOrAsyncGetter } from "../tools/ValueOrAsyncGetter";
15
16
  import { Deferred } from "../tools/Deferred";
16
17
  import { toFullyQualifiedUrl } from "../tools/toFullyQualifiedUrl";
@@ -1,4 +1,6 @@
1
- import { assert, typeGuard, id } from "../vendor/frontend/tsafe";
1
+ import { assert } from "../tools/tsafe/assert";
2
+ import { id } from "../tools/tsafe/id";
3
+ import { typeGuard } from "../tools/tsafe/typeGuard";
2
4
 
3
5
  type SessionStorageItem_Parsed = {
4
6
  __brand: "SessionStorageItem_Parsed-v1";
package/src/tools/Evt.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Deferred } from "./Deferred";
2
- import { assert, is } from "../vendor/frontend/tsafe";
2
+ import { assert, is } from "../tools/tsafe/assert";
3
3
 
4
4
  export type NonPostableEvt<T> = {
5
5
  waitFor: () => Promise<T>;
@@ -1,4 +1,4 @@
1
- import { assert } from "../vendor/frontend/tsafe";
1
+ import { assert } from "../tools/tsafe/assert";
2
2
 
3
3
  export function getDownlinkAndRtt(): { downlink: number; rtt: number } | undefined {
4
4
  if (!(window.navigator instanceof Object)) {
@@ -1,5 +1,5 @@
1
1
  import { decodeJwt } from "./decodeJwt";
2
- import { assert } from "../vendor/frontend/tsafe";
2
+ import { assert } from "../tools/tsafe/assert";
3
3
  import { INFINITY_TIME } from "./INFINITY_TIME";
4
4
 
5
5
  // Return undefined if token provided wasn't a JWT or if it hasn't an exp claim number
@@ -0,0 +1,10 @@
1
+ import type { Unite } from "./tools/Unite";
2
+ import type { StrictEquals } from "./tools/StrictEquals";
3
+
4
+ // Credit https://stackoverflow.com/a/53808212/3731798
5
+ /** https://docs.tsafe.dev/main/equals */
6
+ export type Equals<A1, A2> = StrictEquals<Unite<A1>, Unite<A2>>;
7
+
8
+ // TODO: To export and document, this type can be used in place of equals if the types to compare have no `any` in them.
9
+ // (I think but some more testing is needed)
10
+ // export type LooseEquals<T, U> = T extends U ? (U extends T ? true : false) : false;
@@ -0,0 +1,12 @@
1
+ import type { Parameters } from "./Parameters";
2
+
3
+ type NonUndefined<T> = T extends undefined ? never : T;
4
+
5
+ /** Shorthand for Parameters<typeof f>[0] https://docs.tsafe.dev/param0 */
6
+ export type Param0<T extends ((...args: any[]) => unknown) | null | undefined | false | ""> = [
7
+ Parameters<T>
8
+ ] extends [never]
9
+ ? never
10
+ : Parameters<T> extends []
11
+ ? void
12
+ : NonUndefined<Parameters<T>[0]>;
@@ -0,0 +1,3 @@
1
+ /** https://docs.tsafe.dev/parameters */
2
+ export type Parameters<T extends ((...args: any[]) => unknown) | null | undefined | false | ""> =
3
+ T extends (...args: infer P) => any ? P : never;
@@ -0,0 +1,4 @@
1
+ /** Always return null but pretends it returns an object of type T */
2
+ export function Reflect<T>(): T {
3
+ return null as any;
4
+ }
@@ -0,0 +1,66 @@
1
+ export type { Equals } from "./Equals";
2
+
3
+ /** https://docs.tsafe.dev/assert#error-thrown */
4
+ export class AssertionError extends Error {
5
+ originalMessage?: string;
6
+
7
+ constructor(msg: string | undefined) {
8
+ super(`Wrong assert${!msg ? "" : `: "${msg}"`}`);
9
+
10
+ this.originalMessage = msg;
11
+
12
+ Object.setPrototypeOf(this, new.target.prototype);
13
+
14
+ if (!this.stack) {
15
+ return;
16
+ }
17
+ }
18
+ }
19
+
20
+ let refOfIs: undefined | Record<string, never> = undefined;
21
+
22
+ /** https://docs.tsafe.dev/assert */
23
+ export function assert<_T extends true>(
24
+ condition?: any,
25
+ msg?: string | (() => string)
26
+ ): asserts condition {
27
+ if (arguments.length === 0) {
28
+ condition = true;
29
+ }
30
+ if (refOfIs) {
31
+ refOfIs = undefined;
32
+ return;
33
+ }
34
+
35
+ if (!condition) {
36
+ const error = new AssertionError(typeof msg === "function" ? msg() : msg);
37
+
38
+ if (Error.captureStackTrace) {
39
+ Error.captureStackTrace(error, assert);
40
+ }
41
+
42
+ throw error;
43
+ }
44
+ }
45
+
46
+ const errorMessage = "'is' error";
47
+
48
+ /** https://docs.tsafe.dev/is */
49
+ export function is<T>(_value: any): _value is T {
50
+ const ref = {};
51
+
52
+ if (refOfIs) {
53
+ refOfIs = undefined;
54
+ throw new Error(errorMessage);
55
+ }
56
+
57
+ refOfIs = ref;
58
+
59
+ Promise.resolve().then(() => {
60
+ if (refOfIs === ref) {
61
+ throw new Error(errorMessage);
62
+ }
63
+ });
64
+
65
+ return null as any;
66
+ }
@@ -0,0 +1,37 @@
1
+ /** https://docs.tsafe.dev/id */
2
+ export const id = <T>(x: T) => x;
3
+
4
+ /**
5
+ * Ensure that a that a specific type that we are declaring extends a more generic type
6
+ *
7
+ * Use case example 1:
8
+ *
9
+ * type MyObject = {
10
+ * p1: string;
11
+ * p2: string;
12
+ * a: string;
13
+ * b: string;
14
+ * };
15
+ *
16
+ * We want to define a type that consist in an union of
17
+ * all the property name that are letters:
18
+ *
19
+ * type AlphabeticalKeys = Id<keyof MyObject, "a" | "b">;
20
+ *
21
+ * Here AlphabeticalKeys is "a" | "b" but it's better than
22
+ * simply writing it explicitly as we get autocompletion
23
+ * and we can't include a property name that does not exist on MyObject.
24
+ *
25
+ * Use case example 2:
26
+ *
27
+ * We want to declare object type that only take string or number
28
+ * as key value:
29
+ *
30
+ * export type MyObject = Id<Record<string, string | number>, {
31
+ * p1: string;
32
+ * p2: number;
33
+ * }>;
34
+ *
35
+ * If later on someone adds "p3": string[] he will get a type error.
36
+ * */
37
+ export type Id<Generic, Specific extends Generic> = Specific;
@@ -0,0 +1,12 @@
1
+ /** https://docs.tsafe.dev/isamong */
2
+ export function isAmong<Name extends string | number | boolean | null | undefined>(
3
+ names: readonly Name[],
4
+ value: unknown
5
+ ): value is Name {
6
+ for (const name of names) {
7
+ if (name === value) {
8
+ return true;
9
+ }
10
+ }
11
+ return false;
12
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Removes the enumerable properties whose values are
3
+ * undefined.
4
+ *
5
+ * Example:
6
+ * noUndefined({ "foo": undefined, "bar": 3 }) returns
7
+ * a new object { "bar": 3 }
8
+ */
9
+ export function noUndefined<T extends object>(obj: T): T {
10
+ const out: typeof obj = {} as any;
11
+
12
+ for (const key in obj) {
13
+ if (obj[key] === undefined) {
14
+ continue;
15
+ }
16
+
17
+ out[key] = obj[key];
18
+ }
19
+
20
+ return out;
21
+ }
@@ -0,0 +1,5 @@
1
+ export type StrictEquals<A1, A2> = (<A>() => A extends A2 ? true : false) extends <A>() => A extends A1
2
+ ? true
3
+ : false
4
+ ? true
5
+ : false;
@@ -0,0 +1 @@
1
+ export type Unite<T> = T extends Record<string, unknown> ? { [Key in keyof T]: T[Key] } : T;
@@ -0,0 +1,4 @@
1
+ /** https://docs.tsafe.dev/typeguard */
2
+ export function typeGuard<T>(_value: any, isMatched: boolean): _value is T {
3
+ return isMatched;
4
+ }
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createEphemeralSessionStorage = createEphemeralSessionStorage;
4
- const tsafe_1 = require("../vendor/frontend/tsafe");
4
+ const assert_1 = require("../tools/tsafe/assert");
5
+ const id_1 = require("../tools/tsafe/id");
6
+ const typeGuard_1 = require("../tools/tsafe/typeGuard");
5
7
  function parseSessionStorageItem(sessionStorageItemValue) {
6
8
  let json;
7
9
  try {
@@ -10,9 +12,9 @@ function parseSessionStorageItem(sessionStorageItemValue) {
10
12
  catch {
11
13
  return undefined;
12
14
  }
13
- if (!(0, tsafe_1.typeGuard)(json, json instanceof Object &&
15
+ if (!(0, typeGuard_1.typeGuard)(json, json instanceof Object &&
14
16
  "__brand" in json &&
15
- json.__brand === (0, tsafe_1.id)("SessionStorageItem_Parsed-v1"))) {
17
+ json.__brand === (0, id_1.id)("SessionStorageItem_Parsed-v1"))) {
16
18
  return undefined;
17
19
  }
18
20
  return json;
@@ -33,7 +35,7 @@ function createStoreInSessionStorageAndScheduleRemovalInMemoryItem(params) {
33
35
  removeFromSessionStorage
34
36
  };
35
37
  sessionStorage.removeItem(sessionStorageKey);
36
- sessionStorage.setItem(sessionStorageKey, JSON.stringify((0, tsafe_1.id)({
38
+ sessionStorage.setItem(sessionStorageKey, JSON.stringify((0, id_1.id)({
37
39
  __brand: "SessionStorageItem_Parsed-v1",
38
40
  value,
39
41
  expiresAtTime: Date.now() + remainingTtlMs
@@ -45,12 +47,12 @@ function createEphemeralSessionStorage(params) {
45
47
  const inMemoryItems = [];
46
48
  for (let i = 0; i < sessionStorage.length; i++) {
47
49
  const sessionStorageKey = sessionStorage.key(i);
48
- (0, tsafe_1.assert)(sessionStorageKey !== null, "470498");
50
+ (0, assert_1.assert)(sessionStorageKey !== null, "470498");
49
51
  if (!sessionStorageKey.startsWith(SESSION_STORAGE_PREFIX)) {
50
52
  continue;
51
53
  }
52
54
  const sessionStorageItem = sessionStorage.getItem(sessionStorageKey);
53
- (0, tsafe_1.assert)(sessionStorageItem !== null, "846771");
55
+ (0, assert_1.assert)(sessionStorageItem !== null, "846771");
54
56
  const sessionStorageItem_parsed = parseSessionStorageItem(sessionStorageItem);
55
57
  if (sessionStorageItem_parsed === undefined) {
56
58
  continue;
@@ -72,9 +74,9 @@ function createEphemeralSessionStorage(params) {
72
74
  isPersistenceEnabled = true;
73
75
  for (let i = 0; i < storage.length; i++) {
74
76
  const key = storage.key(i);
75
- (0, tsafe_1.assert)(key !== null, "803385");
77
+ (0, assert_1.assert)(key !== null, "803385");
76
78
  const value = storage.getItem(key);
77
- (0, tsafe_1.assert)(value !== null, "777098");
79
+ (0, assert_1.assert)(value !== null, "777098");
78
80
  storage.setItem(key, value);
79
81
  }
80
82
  },
@@ -100,7 +102,7 @@ function createEphemeralSessionStorage(params) {
100
102
  clear: () => {
101
103
  for (let i = 0; i < storage.length; i++) {
102
104
  const key = storage.key(i);
103
- (0, tsafe_1.assert)(key !== null, "290875");
105
+ (0, assert_1.assert)(key !== null, "290875");
104
106
  storage.removeItem(key);
105
107
  }
106
108
  },
@@ -126,7 +128,7 @@ function createEphemeralSessionStorage(params) {
126
128
  value,
127
129
  remainingTtlMs: sessionStorageTtlMs
128
130
  })
129
- : (0, tsafe_1.id)({
131
+ : (0, id_1.id)({
130
132
  key,
131
133
  value,
132
134
  removeFromSessionStorage: undefined
@@ -1 +1 @@
1
- {"version":3,"file":"EphemeralSessionStorage.js","sourceRoot":"","sources":["../src/tools/EphemeralSessionStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EphemeralSessionStorage.js","sourceRoot":"","sources":["../src/tools/EphemeralSessionStorage.ts"],"names":[],"mappings":"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"}
package/tools/Evt.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createEvt = createEvt;
4
4
  const Deferred_1 = require("./Deferred");
5
- const tsafe_1 = require("../vendor/frontend/tsafe");
5
+ const assert_1 = require("../tools/tsafe/assert");
6
6
  function createEvt() {
7
7
  const eventTarget = new EventTarget();
8
8
  const KEY = "event";
@@ -10,7 +10,7 @@ function createEvt() {
10
10
  const evt = {
11
11
  subscribe: next => {
12
12
  const listener = (e) => {
13
- (0, tsafe_1.assert)((0, tsafe_1.is)(e));
13
+ (0, assert_1.assert)((0, assert_1.is)(e));
14
14
  next(e.detail);
15
15
  };
16
16
  eventTarget.addEventListener(KEY, listener);
package/tools/Evt.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Evt.js","sourceRoot":"","sources":["../src/tools/Evt.ts"],"names":[],"mappings":";;AAaA,8BA0CC;AAvDD,yCAAsC;AACtC,oDAAsD;AAYtD,SAAgB,SAAS;IACrB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC;IAEpB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,MAAM,GAAG,GAAW;QAChB,SAAS,EAAE,IAAI,CAAC,EAAE;YACd,MAAM,QAAQ,GAAG,CAAC,CAAQ,EAAE,EAAE;gBAC1B,IAAA,cAAM,EAAC,IAAA,UAAE,EAAiB,CAAC,CAAC,CAAC,CAAC;gBAE9B,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC,CAAC;YAEF,WAAW,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAE5C,OAAO;gBACH,WAAW,EAAE,GAAG,EAAE;oBACd,WAAW,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACnD,CAAC;aACJ,CAAC;QACN,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,IAAI,mBAAQ,EAAK,CAAC;YAE5B,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACzC,WAAW,EAAE,CAAC;gBACd,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,CAAC,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,EAAE,CAAC,IAAO,EAAE,EAAE;YACd,SAAS,EAAE,CAAC;YACZ,WAAW,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,SAAS;YACT,OAAO,SAAS,CAAC;QACrB,CAAC;KACJ,CAAC;IAEF,OAAO,GAAG,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"Evt.js","sourceRoot":"","sources":["../src/tools/Evt.ts"],"names":[],"mappings":";;AAaA,8BA0CC;AAvDD,yCAAsC;AACtC,kDAAmD;AAYnD,SAAgB,SAAS;IACrB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC;IAEpB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,MAAM,GAAG,GAAW;QAChB,SAAS,EAAE,IAAI,CAAC,EAAE;YACd,MAAM,QAAQ,GAAG,CAAC,CAAQ,EAAE,EAAE;gBAC1B,IAAA,eAAM,EAAC,IAAA,WAAE,EAAiB,CAAC,CAAC,CAAC,CAAC;gBAE9B,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC,CAAC;YAEF,WAAW,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAE5C,OAAO;gBACH,WAAW,EAAE,GAAG,EAAE;oBACd,WAAW,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACnD,CAAC;aACJ,CAAC;QACN,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,IAAI,mBAAQ,EAAK,CAAC;YAE5B,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACzC,WAAW,EAAE,CAAC;gBACd,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,CAAC,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,EAAE,CAAC,IAAO,EAAE,EAAE;YACd,SAAS,EAAE,CAAC;YACZ,WAAW,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,SAAS;YACT,OAAO,SAAS,CAAC;QACrB,CAAC;KACJ,CAAC;IAEF,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getDownlinkAndRtt = getDownlinkAndRtt;
4
- const tsafe_1 = require("../vendor/frontend/tsafe");
4
+ const assert_1 = require("../tools/tsafe/assert");
5
5
  function getDownlinkAndRtt() {
6
6
  if (!(window.navigator instanceof Object)) {
7
7
  return undefined;
@@ -10,8 +10,8 @@ function getDownlinkAndRtt() {
10
10
  for (const key of ["connection", "mozConnection", "webkitConnection"]) {
11
11
  try {
12
12
  const { downlink, rtt } = navigator[key];
13
- (0, tsafe_1.assert)(typeof downlink === "number", "768860");
14
- (0, tsafe_1.assert)(typeof rtt === "number", "945829");
13
+ (0, assert_1.assert)(typeof downlink === "number", "768860");
14
+ (0, assert_1.assert)(typeof rtt === "number", "945829");
15
15
  return { downlink, rtt };
16
16
  }
17
17
  catch { }
@@ -1 +1 @@
1
- {"version":3,"file":"getDownlinkAndRtt.js","sourceRoot":"","sources":["../src/tools/getDownlinkAndRtt.ts"],"names":[],"mappings":";;AAEA,8CAmBC;AArBD,oDAAkD;AAElD,SAAgB,iBAAiB;IAC7B,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,YAAY,MAAM,CAAC,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,SAAS,GAAQ,MAAM,CAAC,SAAS,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,eAAe,EAAE,kBAAkB,CAAU,EAAE,CAAC;QAC7E,IAAI,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAEzC,IAAA,cAAM,EAAC,OAAO,QAAQ,KAAK,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC/C,IAAA,cAAM,EAAC,OAAO,GAAG,KAAK,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE1C,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACd,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"getDownlinkAndRtt.js","sourceRoot":"","sources":["../src/tools/getDownlinkAndRtt.ts"],"names":[],"mappings":";;AAEA,8CAmBC;AArBD,kDAA+C;AAE/C,SAAgB,iBAAiB;IAC7B,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,YAAY,MAAM,CAAC,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,SAAS,GAAQ,MAAM,CAAC,SAAS,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,eAAe,EAAE,kBAAkB,CAAU,EAAE,CAAC;QAC7E,IAAI,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAEzC,IAAA,eAAM,EAAC,OAAO,QAAQ,KAAK,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC/C,IAAA,eAAM,EAAC,OAAO,GAAG,KAAK,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE1C,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACd,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -2,14 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.readExpirationTimeInJwt = readExpirationTimeInJwt;
4
4
  const decodeJwt_1 = require("./decodeJwt");
5
- const tsafe_1 = require("../vendor/frontend/tsafe");
5
+ const assert_1 = require("../tools/tsafe/assert");
6
6
  const INFINITY_TIME_1 = require("./INFINITY_TIME");
7
7
  // Return undefined if token provided wasn't a JWT or if it hasn't an exp claim number
8
8
  function readExpirationTimeInJwt(token) {
9
9
  let exp;
10
10
  try {
11
11
  exp = (0, decodeJwt_1.decodeJwt)(token).exp;
12
- (0, tsafe_1.assert)(typeof exp === "number");
12
+ (0, assert_1.assert)(typeof exp === "number");
13
13
  }
14
14
  catch {
15
15
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"readExpirationTimeInJwt.js","sourceRoot":"","sources":["../src/tools/readExpirationTimeInJwt.ts"],"names":[],"mappings":";;AAKA,0DAeC;AApBD,2CAAwC;AACxC,oDAAkD;AAClD,mDAAgD;AAEhD,sFAAsF;AACtF,SAAgB,uBAAuB,CAAC,KAAa;IACjD,IAAI,GAAW,CAAC;IAEhB,IAAI,CAAC;QACD,GAAG,GAAG,IAAA,qBAAS,EAAkB,KAAK,CAAC,CAAC,GAAG,CAAC;QAC5C,IAAA,cAAM,EAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACZ,OAAO,6BAAa,CAAC;IACzB,CAAC;IAED,OAAO,GAAG,GAAG,IAAI,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"readExpirationTimeInJwt.js","sourceRoot":"","sources":["../src/tools/readExpirationTimeInJwt.ts"],"names":[],"mappings":";;AAKA,0DAeC;AApBD,2CAAwC;AACxC,kDAA+C;AAC/C,mDAAgD;AAEhD,sFAAsF;AACtF,SAAgB,uBAAuB,CAAC,KAAa;IACjD,IAAI,GAAW,CAAC;IAEhB,IAAI,CAAC;QACD,GAAG,GAAG,IAAA,qBAAS,EAAkB,KAAK,CAAC,CAAC,GAAG,CAAC;QAC5C,IAAA,eAAM,EAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACZ,OAAO,6BAAa,CAAC;IACzB,CAAC;IAED,OAAO,GAAG,GAAG,IAAI,CAAC;AACtB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Unite } from "./tools/Unite";
2
+ import type { StrictEquals } from "./tools/StrictEquals";
3
+ /** https://docs.tsafe.dev/main/equals */
4
+ export type Equals<A1, A2> = StrictEquals<Unite<A1>, Unite<A2>>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // TODO: To export and document, this type can be used in place of equals if the types to compare have no `any` in them.
4
+ // (I think but some more testing is needed)
5
+ // export type LooseEquals<T, U> = T extends U ? (U extends T ? true : false) : false;
6
+ //# sourceMappingURL=Equals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Equals.js","sourceRoot":"","sources":["../../src/tools/tsafe/Equals.ts"],"names":[],"mappings":";;AAOA,wHAAwH;AACxH,4CAA4C;AAC5C,sFAAsF"}
@@ -0,0 +1,7 @@
1
+ import type { Parameters } from "./Parameters";
2
+ type NonUndefined<T> = T extends undefined ? never : T;
3
+ /** Shorthand for Parameters<typeof f>[0] https://docs.tsafe.dev/param0 */
4
+ export type Param0<T extends ((...args: any[]) => unknown) | null | undefined | false | ""> = [
5
+ Parameters<T>
6
+ ] extends [never] ? never : Parameters<T> extends [] ? void : NonUndefined<Parameters<T>[0]>;
7
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Param0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Param0.js","sourceRoot":"","sources":["../../src/tools/tsafe/Param0.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ /** https://docs.tsafe.dev/parameters */
2
+ export type Parameters<T extends ((...args: any[]) => unknown) | null | undefined | false | ""> = T extends (...args: infer P) => any ? P : never;