summaryrefslogtreecommitdiffhomepage
path: root/packages/typescript-types/src
diff options
context:
space:
mode:
authorJonathan Stewmon <jstewmon@gmail.com>2020-11-04 08:45:40 -0600
committerJonathan Stewmon <jstewmon@gmail.com>2020-11-26 10:49:06 -0600
commitc707d9c02bab395141fb053bdcd7f26460cc7366 (patch)
tree392982fd15a46fc843d746fce8798543a2db8a3d /packages/typescript-types/src
parentb0f3b8f39bd5e57d81e77d71d667968e3734d670 (diff)
chore: remove dom lib reference from server package
The dom lib is incompatible with node, which can result in inaccurate type checking. Packages which reference types provided by a lib require package consumers to either include the lib or use skipLibCheck which disables all type declaration checks. So instead of referencing the dom lib, define the types needed by the server package locally and import them where needed.
Diffstat (limited to 'packages/typescript-types/src')
-rw-r--r--packages/typescript-types/src/dom.ts126
-rw-r--r--packages/typescript-types/src/index.ts15
2 files changed, 141 insertions, 0 deletions
diff --git a/packages/typescript-types/src/dom.ts b/packages/typescript-types/src/dom.ts
new file mode 100644
index 0000000..8369427
--- /dev/null
+++ b/packages/typescript-types/src/dom.ts
@@ -0,0 +1,126 @@
+export interface txAuthGenericArg {
+ content: ArrayBuffer;
+ contentType: string;
+}
+
+export interface AuthenticationExtensionsClientInputs {
+ appid?: string;
+ authnSel?: AuthenticatorSelectionList;
+ exts?: boolean;
+ loc?: boolean;
+ txAuthGeneric?: txAuthGenericArg;
+ txAuthSimple?: string;
+ uvi?: boolean;
+ uvm?: boolean;
+}
+
+export interface AuthenticationExtensionsClientOutputs {
+ appid?: boolean;
+ authnSel?: boolean;
+ exts?: AuthenticationExtensionsSupported;
+ loc?: Coordinates;
+ txAuthGeneric?: ArrayBuffer;
+ txAuthSimple?: string;
+ uvi?: ArrayBuffer;
+ uvm?: UvmEntries;
+}
+
+export interface AuthenticatorAssertionResponse extends AuthenticatorResponse {
+ readonly authenticatorData: ArrayBuffer;
+ readonly signature: ArrayBuffer;
+ readonly userHandle: ArrayBuffer | null;
+}
+
+export interface AuthenticatorAttestationResponse extends AuthenticatorResponse {
+ readonly attestationObject: ArrayBuffer;
+}
+
+export interface AuthenticatorResponse {
+ readonly clientDataJSON: ArrayBuffer;
+}
+
+export interface AuthenticatorSelectionCriteria {
+ authenticatorAttachment?: AuthenticatorAttachment;
+ requireResidentKey?: boolean;
+ userVerification?: UserVerificationRequirement;
+}
+
+export interface Coordinates {
+ readonly accuracy: number;
+ readonly altitude: number | null;
+ readonly altitudeAccuracy: number | null;
+ readonly heading: number | null;
+ readonly latitude: number;
+ readonly longitude: number;
+ readonly speed: number | null;
+}
+
+export interface Credential {
+ readonly id: string;
+ readonly type: string;
+}
+
+export interface PublicKeyCredential extends Credential {
+ readonly rawId: ArrayBuffer;
+ readonly response: AuthenticatorResponse;
+ getClientExtensionResults(): AuthenticationExtensionsClientOutputs;
+}
+
+export interface PublicKeyCredentialCreationOptions {
+ attestation?: AttestationConveyancePreference;
+ authenticatorSelection?: AuthenticatorSelectionCriteria;
+ challenge: BufferSource;
+ excludeCredentials?: PublicKeyCredentialDescriptor[];
+ extensions?: AuthenticationExtensionsClientInputs;
+ pubKeyCredParams: PublicKeyCredentialParameters[];
+ rp: PublicKeyCredentialRpEntity;
+ timeout?: number;
+ user: PublicKeyCredentialUserEntity;
+}
+
+export interface PublicKeyCredentialDescriptor {
+ id: BufferSource;
+ transports?: AuthenticatorTransport[];
+ type: PublicKeyCredentialType;
+}
+
+export interface PublicKeyCredentialEntity {
+ icon?: string;
+ name: string;
+}
+
+export interface PublicKeyCredentialParameters {
+ alg: COSEAlgorithmIdentifier;
+ type: PublicKeyCredentialType;
+}
+
+export interface PublicKeyCredentialRequestOptions {
+ allowCredentials?: PublicKeyCredentialDescriptor[];
+ challenge: BufferSource;
+ extensions?: AuthenticationExtensionsClientInputs;
+ rpId?: string;
+ timeout?: number;
+ userVerification?: UserVerificationRequirement;
+}
+
+export interface PublicKeyCredentialRpEntity extends PublicKeyCredentialEntity {
+ id?: string;
+}
+
+export interface PublicKeyCredentialUserEntity extends PublicKeyCredentialEntity {
+ displayName: string;
+ id: BufferSource;
+}
+
+export type AAGUID = BufferSource;
+export type AttestationConveyancePreference = 'direct' | 'indirect' | 'none';
+export type AuthenticationExtensionsSupported = string[];
+export type AuthenticatorAttachment = 'cross-platform' | 'platform';
+export type AuthenticatorSelectionList = AAGUID[];
+export type AuthenticatorTransport = 'ble' | 'internal' | 'nfc' | 'usb';
+export type BufferSource = ArrayBuffer | ArrayBufferView;
+export type COSEAlgorithmIdentifier = number;
+export type PublicKeyCredentialType = 'public-key';
+export type UserVerificationRequirement = 'discouraged' | 'preferred' | 'required';
+export type UvmEntry = number[];
+export type UvmEntries = UvmEntry[];
diff --git a/packages/typescript-types/src/index.ts b/packages/typescript-types/src/index.ts
index 4f238d7..954615b 100644
--- a/packages/typescript-types/src/index.ts
+++ b/packages/typescript-types/src/index.ts
@@ -2,6 +2,21 @@
* @packageDocumentation
* @module @simplewebauthn/typescript-types
*/
+
+import type {
+ AuthenticatorAssertionResponse,
+ AuthenticatorAttestationResponse,
+ AuthenticatorTransport,
+ COSEAlgorithmIdentifier,
+ PublicKeyCredential,
+ PublicKeyCredentialCreationOptions,
+ PublicKeyCredentialDescriptor,
+ PublicKeyCredentialRequestOptions,
+ PublicKeyCredentialUserEntity,
+} from './dom';
+
+export * from './dom';
+
/**
* A variant of PublicKeyCredentialCreationOptions suitable for JSON transmission to the browser to
* (eventually) get passed into navigator.credentials.create(...) in the browser.