@bitblit/ratchet-warden-server 4.0.84-alpha
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/CHANGELOG.md +19 -0
- package/License.txt +13 -0
- package/README.md +38 -0
- package/dist/cjs/build/ratchet-warden-server-info.js +18 -0
- package/dist/cjs/index.js +18 -0
- package/dist/cjs/server/provider/warden-default-user-decoration-provider.js +15 -0
- package/dist/cjs/server/provider/warden-event-processing-provider.js +2 -0
- package/dist/cjs/server/provider/warden-mailer-message-sending-provider-options.js +2 -0
- package/dist/cjs/server/provider/warden-mailer-message-sending-provider.js +36 -0
- package/dist/cjs/server/provider/warden-message-sending-provider.js +2 -0
- package/dist/cjs/server/provider/warden-no-op-event-processing-provider.js +8 -0
- package/dist/cjs/server/provider/warden-s3-single-file-storage-provider-options.js +2 -0
- package/dist/cjs/server/provider/warden-s3-single-file-storage-provider.js +90 -0
- package/dist/cjs/server/provider/warden-storage-provider.js +2 -0
- package/dist/cjs/server/provider/warden-twilio-text-message-sending-provider-options.js +2 -0
- package/dist/cjs/server/provider/warden-twilio-text-message-sending-provider.js +31 -0
- package/dist/cjs/server/provider/warden-user-decoration-provider.js +2 -0
- package/dist/cjs/server/warden-service-options.js +2 -0
- package/dist/cjs/server/warden-service.js +456 -0
- package/dist/es/build/ratchet-warden-server-info.js +14 -0
- package/dist/es/index.js +15 -0
- package/dist/es/server/provider/warden-default-user-decoration-provider.js +11 -0
- package/dist/es/server/provider/warden-event-processing-provider.js +1 -0
- package/dist/es/server/provider/warden-mailer-message-sending-provider-options.js +1 -0
- package/dist/es/server/provider/warden-mailer-message-sending-provider.js +32 -0
- package/dist/es/server/provider/warden-message-sending-provider.js +1 -0
- package/dist/es/server/provider/warden-no-op-event-processing-provider.js +4 -0
- package/dist/es/server/provider/warden-s3-single-file-storage-provider-options.js +1 -0
- package/dist/es/server/provider/warden-s3-single-file-storage-provider.js +86 -0
- package/dist/es/server/provider/warden-storage-provider.js +1 -0
- package/dist/es/server/provider/warden-twilio-text-message-sending-provider-options.js +1 -0
- package/dist/es/server/provider/warden-twilio-text-message-sending-provider.js +27 -0
- package/dist/es/server/provider/warden-user-decoration-provider.js +1 -0
- package/dist/es/server/warden-service-options.js +1 -0
- package/dist/es/server/warden-service.js +450 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.es.tsbuildinfo +1 -0
- package/dist/tsconfig.types.tsbuildinfo +1 -0
- package/dist/types/build/ratchet-warden-server-info.d.ts +5 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/server/provider/warden-default-user-decoration-provider.d.ts +9 -0
- package/dist/types/server/provider/warden-event-processing-provider.d.ts +8 -0
- package/dist/types/server/provider/warden-mailer-message-sending-provider-options.d.ts +5 -0
- package/dist/types/server/provider/warden-mailer-message-sending-provider.d.ts +13 -0
- package/dist/types/server/provider/warden-message-sending-provider.d.ts +10 -0
- package/dist/types/server/provider/warden-no-op-event-processing-provider.d.ts +9 -0
- package/dist/types/server/provider/warden-s3-single-file-storage-provider-options.d.ts +4 -0
- package/dist/types/server/provider/warden-s3-single-file-storage-provider.d.ts +29 -0
- package/dist/types/server/provider/warden-storage-provider.d.ts +14 -0
- package/dist/types/server/provider/warden-twilio-text-message-sending-provider-options.d.ts +5 -0
- package/dist/types/server/provider/warden-twilio-text-message-sending-provider.d.ts +10 -0
- package/dist/types/server/provider/warden-user-decoration-provider.d.ts +8 -0
- package/dist/types/server/warden-service-options.d.ts +16 -0
- package/dist/types/server/warden-service.d.ts +27 -0
- package/package.json +71 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Automatically generated by barrelsby.
|
|
3
|
+
*/
|
|
4
|
+
export * from './build/ratchet-warden-server-info';
|
|
5
|
+
export * from './server/warden-service-options';
|
|
6
|
+
export * from './server/warden-service';
|
|
7
|
+
export * from './server/provider/warden-default-user-decoration-provider';
|
|
8
|
+
export * from './server/provider/warden-event-processing-provider';
|
|
9
|
+
export * from './server/provider/warden-mailer-message-sending-provider-options';
|
|
10
|
+
export * from './server/provider/warden-mailer-message-sending-provider';
|
|
11
|
+
export * from './server/provider/warden-message-sending-provider';
|
|
12
|
+
export * from './server/provider/warden-no-op-event-processing-provider';
|
|
13
|
+
export * from './server/provider/warden-s3-single-file-storage-provider-options';
|
|
14
|
+
export * from './server/provider/warden-s3-single-file-storage-provider';
|
|
15
|
+
export * from './server/provider/warden-storage-provider';
|
|
16
|
+
export * from './server/provider/warden-twilio-text-message-sending-provider-options';
|
|
17
|
+
export * from './server/provider/warden-twilio-text-message-sending-provider';
|
|
18
|
+
export * from './server/provider/warden-user-decoration-provider';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The user details gets jammed into the JWT token upon login. If one is not provided,
|
|
3
|
+
* the default only puts the WardenEntrySummary in there
|
|
4
|
+
*/
|
|
5
|
+
import { WardenEntry, WardenEntrySummary, WardenUserDecoration } from '@bitblit/ratchet-warden-common';
|
|
6
|
+
import { WardenUserDecorationProvider } from './warden-user-decoration-provider';
|
|
7
|
+
export declare class WardenDefaultUserDecorationProvider implements WardenUserDecorationProvider<WardenEntrySummary> {
|
|
8
|
+
fetchDecoration(wardenUser: WardenEntry): Promise<WardenUserDecoration<WardenEntrySummary>>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { WardenEntry } from '@bitblit/ratchet-warden-common';
|
|
2
|
+
/**
|
|
3
|
+
* Notifies the containing system when significant events happen
|
|
4
|
+
*/
|
|
5
|
+
export interface WardenEventProcessingProvider {
|
|
6
|
+
userCreated(entry: WardenEntry): Promise<void>;
|
|
7
|
+
userRemoved(entry: WardenEntry): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { WardenMessageSendingProvider } from './warden-message-sending-provider';
|
|
2
|
+
import { WardenContact, WardenContactType, WardenCustomerMessageType } from '@bitblit/ratchet-warden-common';
|
|
3
|
+
import { WardenMailerMessageSendingProviderOptions } from './warden-mailer-message-sending-provider-options';
|
|
4
|
+
import { MailerLike, ReadyToSendEmail } from '@bitblit/ratchet-aws';
|
|
5
|
+
export declare class WardenMailerMessageSendingProvider implements WardenMessageSendingProvider<ReadyToSendEmail> {
|
|
6
|
+
private mailer;
|
|
7
|
+
private options;
|
|
8
|
+
private static defaultOptions;
|
|
9
|
+
constructor(mailer: MailerLike, options?: WardenMailerMessageSendingProviderOptions);
|
|
10
|
+
formatMessage(contact: WardenContact, messageType: WardenCustomerMessageType, context: Record<string, any>): Promise<ReadyToSendEmail>;
|
|
11
|
+
handlesContactType(type: WardenContactType): boolean;
|
|
12
|
+
sendMessage(contact: WardenContact, message: ReadyToSendEmail): Promise<boolean>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { WardenContact, WardenContactType, WardenCustomerMessageType } from '@bitblit/ratchet-warden-common';
|
|
2
|
+
/**
|
|
3
|
+
* Classes implementing WardenMessageSendingProvider are able to
|
|
4
|
+
* send expiring, single
|
|
5
|
+
*/
|
|
6
|
+
export interface WardenMessageSendingProvider<T> {
|
|
7
|
+
handlesContactType(type: WardenContactType): boolean;
|
|
8
|
+
sendMessage(contact: WardenContact, message: T): Promise<boolean>;
|
|
9
|
+
formatMessage(contact: WardenContact, messageType: WardenCustomerMessageType, context: Record<string, any>): Promise<T>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default implementation of the event processing provider - does nothing
|
|
3
|
+
*/
|
|
4
|
+
import { WardenEntry } from '@bitblit/ratchet-warden-common';
|
|
5
|
+
import { WardenEventProcessingProvider } from './warden-event-processing-provider';
|
|
6
|
+
export declare class WardenNoOpEventProcessingProvider implements WardenEventProcessingProvider {
|
|
7
|
+
userCreated(entry: WardenEntry): Promise<void>;
|
|
8
|
+
userRemoved(entry: WardenEntry): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { WardenContact, WardenEntry, WardenEntrySummary } from '@bitblit/ratchet-warden-common';
|
|
2
|
+
import { WardenStorageProvider } from './warden-storage-provider';
|
|
3
|
+
import { WardenS3SingleFileStorageProviderOptions } from './warden-s3-single-file-storage-provider-options';
|
|
4
|
+
import { PutObjectOutput, S3Client } from '@aws-sdk/client-s3';
|
|
5
|
+
export declare class WardenS3SingleFileStorageProvider implements WardenStorageProvider {
|
|
6
|
+
private s3;
|
|
7
|
+
private options;
|
|
8
|
+
private ratchet;
|
|
9
|
+
constructor(s3: S3Client, options: WardenS3SingleFileStorageProviderOptions);
|
|
10
|
+
listUserSummaries(): Promise<WardenEntrySummary[]>;
|
|
11
|
+
fetchDataFile(): Promise<WardenS3SingleFileStorageProviderDataFile>;
|
|
12
|
+
storeDataFile(file: WardenS3SingleFileStorageProviderDataFile): Promise<PutObjectOutput>;
|
|
13
|
+
fetchCurrentUserChallenge(userId: string, relyingPartyId: string): Promise<string>;
|
|
14
|
+
findEntryByContact(contact: WardenContact): Promise<WardenEntry>;
|
|
15
|
+
findEntryById(userId: string): Promise<WardenEntry>;
|
|
16
|
+
removeEntry(userId: string): Promise<boolean>;
|
|
17
|
+
saveEntry(entry: WardenEntry): Promise<WardenEntry>;
|
|
18
|
+
updateUserChallenge(userId: string, relyingPartyId: string, challenge: string): Promise<boolean>;
|
|
19
|
+
}
|
|
20
|
+
export interface WardenS3SingleFileStorageProviderChallengeRecord {
|
|
21
|
+
userId: string;
|
|
22
|
+
relyingPartyId: string;
|
|
23
|
+
challenge: string;
|
|
24
|
+
updatedEpochMS: number;
|
|
25
|
+
}
|
|
26
|
+
export interface WardenS3SingleFileStorageProviderDataFile {
|
|
27
|
+
entries: WardenEntry[];
|
|
28
|
+
challenges: WardenS3SingleFileStorageProviderChallengeRecord[];
|
|
29
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { WardenContact, WardenEntry, WardenEntrySummary } from '@bitblit/ratchet-warden-common';
|
|
2
|
+
/**
|
|
3
|
+
* Classes implementing WardenStorageProvider perform store and
|
|
4
|
+
* retrieval functions for the SimpleAuthenticationProvider
|
|
5
|
+
*/
|
|
6
|
+
export interface WardenStorageProvider {
|
|
7
|
+
findEntryById(userId: string): Promise<WardenEntry>;
|
|
8
|
+
findEntryByContact(contact: WardenContact): Promise<WardenEntry>;
|
|
9
|
+
saveEntry(entry: WardenEntry): Promise<WardenEntry>;
|
|
10
|
+
removeEntry(userId: string): Promise<boolean>;
|
|
11
|
+
updateUserChallenge(userId: string, relyingPartyId: string, challenge: string): Promise<boolean>;
|
|
12
|
+
fetchCurrentUserChallenge(userId: string, relyingPartyId: string): Promise<string>;
|
|
13
|
+
listUserSummaries(): Promise<WardenEntrySummary[]>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { WardenMessageSendingProvider } from './warden-message-sending-provider';
|
|
2
|
+
import { WardenContact, WardenContactType, WardenCustomerMessageType } from '@bitblit/ratchet-warden-common';
|
|
3
|
+
import { WardenTwilioTextMessageSendingProviderOptions } from './warden-twilio-text-message-sending-provider-options';
|
|
4
|
+
export declare class WardenTwilioTextMessageSendingProvider implements WardenMessageSendingProvider<string> {
|
|
5
|
+
private optsPromise;
|
|
6
|
+
constructor(optsPromise: Promise<WardenTwilioTextMessageSendingProviderOptions>);
|
|
7
|
+
formatMessage(contact: WardenContact, messageType: WardenCustomerMessageType, context: Record<string, any>): Promise<string>;
|
|
8
|
+
handlesContactType(type: WardenContactType): boolean;
|
|
9
|
+
sendMessage(contact: WardenContact, message: string): Promise<boolean>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The user details gets jammed into the JWT token upon login. If one is not provided,
|
|
3
|
+
* the default only puts the user id and label in there
|
|
4
|
+
*/
|
|
5
|
+
import { WardenEntry, WardenUserDecoration } from '@bitblit/ratchet-warden-common';
|
|
6
|
+
export interface WardenUserDecorationProvider<T> {
|
|
7
|
+
fetchDecoration(wardenUser: WardenEntry): Promise<WardenUserDecoration<T>>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { WardenStorageProvider } from './provider/warden-storage-provider';
|
|
2
|
+
import { WardenMessageSendingProvider } from './provider/warden-message-sending-provider';
|
|
3
|
+
import { ExpiringCodeProvider } from '@bitblit/ratchet-aws';
|
|
4
|
+
import { JwtRatchetLike } from '@bitblit/ratchet-common';
|
|
5
|
+
import { WardenUserDecorationProvider } from './provider/warden-user-decoration-provider';
|
|
6
|
+
import { WardenEventProcessingProvider } from './provider/warden-event-processing-provider';
|
|
7
|
+
export interface WardenServiceOptions {
|
|
8
|
+
relyingPartyName: string;
|
|
9
|
+
allowedOrigins: string[];
|
|
10
|
+
storageProvider: WardenStorageProvider;
|
|
11
|
+
messageSendingProviders: WardenMessageSendingProvider<any>[];
|
|
12
|
+
expiringCodeProvider: ExpiringCodeProvider;
|
|
13
|
+
jwtRatchet: JwtRatchetLike;
|
|
14
|
+
userDecorationProvider?: WardenUserDecorationProvider<any>;
|
|
15
|
+
eventProcessor?: WardenEventProcessingProvider;
|
|
16
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { AuthenticationResponseJSON, PublicKeyCredentialCreationOptionsJSON, PublicKeyCredentialRequestOptionsJSON, RegistrationResponseJSON } from '@simplewebauthn/typescript-types';
|
|
2
|
+
import { WardenServiceOptions } from './warden-service-options';
|
|
3
|
+
import { WardenCommand, WardenCommandResponse, WardenContact, WardenEntry, WardenLoginRequest, WardenStoreRegistrationResponse } from '@bitblit/ratchet-warden-common';
|
|
4
|
+
import { WardenMessageSendingProvider } from './provider/warden-message-sending-provider';
|
|
5
|
+
export declare class WardenService {
|
|
6
|
+
private inOptions;
|
|
7
|
+
private opts;
|
|
8
|
+
private expiringCodeRatchet;
|
|
9
|
+
constructor(inOptions: WardenServiceOptions);
|
|
10
|
+
get options(): WardenServiceOptions;
|
|
11
|
+
findEntryByContact(contact: WardenContact): Promise<WardenEntry>;
|
|
12
|
+
processCommandStringToString(cmdString: string, origin: string, loggedInUserId: string): Promise<string>;
|
|
13
|
+
processCommandToResponse(cmd: WardenCommand, origin: string, loggedInUserId: string): Promise<WardenCommandResponse>;
|
|
14
|
+
createAccount(contact: WardenContact, sendCode?: boolean, label?: string, tags?: string[]): Promise<string>;
|
|
15
|
+
addContactMethodToUser(userId: string, contact: WardenContact): Promise<boolean>;
|
|
16
|
+
removeContactMethodFromUser(userId: string, contact: WardenContact): Promise<WardenEntry>;
|
|
17
|
+
generateWebAuthnRegistrationChallengeForLoggedInUser(userId: string, origin: string): Promise<PublicKeyCredentialCreationOptionsJSON>;
|
|
18
|
+
storeAuthnRegistration(userId: string, origin: string, data: RegistrationResponseJSON): Promise<WardenStoreRegistrationResponse>;
|
|
19
|
+
generateWebAuthnAuthenticationChallengeForUserId(userId: string, origin: string): Promise<PublicKeyCredentialRequestOptionsJSON>;
|
|
20
|
+
generateWebAuthnAuthenticationChallenge(user: WardenEntry, origin: string): Promise<PublicKeyCredentialRequestOptionsJSON>;
|
|
21
|
+
senderForContact(contact: WardenContact): WardenMessageSendingProvider<any>;
|
|
22
|
+
sendExpiringValidationToken(request: WardenContact): Promise<boolean>;
|
|
23
|
+
processLogin(request: WardenLoginRequest, origin: string): Promise<boolean>;
|
|
24
|
+
loginWithWebAuthnRequest(user: WardenEntry, origin: string, data: AuthenticationResponseJSON): Promise<boolean>;
|
|
25
|
+
removeSingleWebAuthnRegistration(userId: string, key: string): Promise<WardenEntry>;
|
|
26
|
+
removeUser(userId: string): Promise<boolean>;
|
|
27
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bitblit/ratchet-warden-server",
|
|
3
|
+
"version": "4.0.84-alpha",
|
|
4
|
+
"description": "Typescript library to simplify using simplewebauthn and secondary auth methods over GraphQL",
|
|
5
|
+
"sideEffects": false,
|
|
6
|
+
"bin": {},
|
|
7
|
+
"main": "./dist/cjs/index.js",
|
|
8
|
+
"module": "./dist/esm/index.js",
|
|
9
|
+
"types": "./dist/types/index.d.ts",
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/*",
|
|
12
|
+
"includes/*"
|
|
13
|
+
],
|
|
14
|
+
"contributors": [
|
|
15
|
+
"Christopher Weiss <bitblit@gmail.com>"
|
|
16
|
+
],
|
|
17
|
+
"husky": {
|
|
18
|
+
"hooks": {
|
|
19
|
+
"pre-commit": "pretty-quick --staged"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"prettier": {
|
|
23
|
+
"printWidth": 140,
|
|
24
|
+
"singleQuote": true,
|
|
25
|
+
"arrowParens": "always"
|
|
26
|
+
},
|
|
27
|
+
"config": {},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"watch": "tsc-watch",
|
|
30
|
+
"clean": "shx rm -Rf dist",
|
|
31
|
+
"test": "jest",
|
|
32
|
+
"docs": "typedoc",
|
|
33
|
+
"lint": "eslint src/**/*.ts",
|
|
34
|
+
"lint-fix": "eslint --fix src/**/*.ts",
|
|
35
|
+
"generate-barrels": "barrelsby -q --delete -d src -e .*\\.spec\\.ts",
|
|
36
|
+
"build": "yarn run generate-barrels && concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
|
|
37
|
+
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
38
|
+
"build:es": "tsc -p tsconfig.es.json",
|
|
39
|
+
"build:types": "tsc -p tsconfig.types.json"
|
|
40
|
+
},
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "https://github.com/bitblit/Ratchet"
|
|
44
|
+
},
|
|
45
|
+
"keywords": [
|
|
46
|
+
"warden",
|
|
47
|
+
"simplewebauthn"
|
|
48
|
+
],
|
|
49
|
+
"bugs": {
|
|
50
|
+
"url": "https://github.com/bitblit/Ratchet/issues"
|
|
51
|
+
},
|
|
52
|
+
"homepage": "https://github.com/bitblit/Ratchet#readme",
|
|
53
|
+
"engines": {
|
|
54
|
+
"node": ">=14.18"
|
|
55
|
+
},
|
|
56
|
+
"license": "Apache-2.0",
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"@aws-sdk/client-s3": "3.289.0",
|
|
59
|
+
"@aws-sdk/client-ses": "3.289.0",
|
|
60
|
+
"@bitblit/ratchet-aws": "*",
|
|
61
|
+
"@bitblit/ratchet-common": "*",
|
|
62
|
+
"@bitblit/ratchet-warden-common": "*",
|
|
63
|
+
"@simplewebauthn/browser": "7.1.0",
|
|
64
|
+
"@simplewebauthn/server": "7.0.1",
|
|
65
|
+
"@simplewebauthn/typescript-types": "7.0.0",
|
|
66
|
+
"jwt-decode": "3.1.2"
|
|
67
|
+
},
|
|
68
|
+
"devDependencies": {
|
|
69
|
+
"@bitblit/ratchet-jest": "*"
|
|
70
|
+
}
|
|
71
|
+
}
|