@frankieone/one-sdk 0.5.5-rc → 0.6.5-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/README.md +38 -36
- package/dist/commit.txt +2 -2
- package/dist/esm/modules/common/constants.d.ts +1 -0
- package/dist/esm/modules/common/constants.js +2 -0
- package/dist/esm/modules/common/constants.js.map +1 -1
- package/dist/esm/modules/common/modules/{runIfWhen.d.ts → HOF.d.ts} +17 -2
- package/dist/esm/modules/common/modules/{runIfWhen.js → HOF.js} +22 -3
- package/dist/esm/modules/common/modules/HOF.js.map +1 -0
- package/dist/esm/modules/common/modules/LocalStorage.d.ts +6 -0
- package/dist/esm/modules/common/modules/LocalStorage.js +21 -0
- package/dist/esm/modules/common/modules/LocalStorage.js.map +1 -0
- package/dist/esm/modules/common/modules/env2url.d.ts +6 -1
- package/dist/esm/modules/common/modules/env2url.js +17 -1
- package/dist/esm/modules/common/modules/env2url.js.map +1 -1
- package/dist/esm/modules/common/modules/url.d.ts +5 -0
- package/dist/esm/modules/common/modules/url.js +10 -0
- package/dist/esm/modules/common/modules/url.js.map +1 -0
- package/dist/esm/modules/common/types/Configuration.d.ts +15 -0
- package/dist/esm/modules/federation/constants.d.ts +2 -0
- package/dist/esm/modules/federation/constants.js +3 -0
- package/dist/esm/modules/federation/constants.js.map +1 -0
- package/dist/esm/modules/federation/index.d.ts +3 -0
- package/dist/esm/modules/federation/index.js +69 -0
- package/dist/esm/modules/federation/index.js.map +1 -0
- package/dist/esm/modules/federation/parseConfiguration.d.ts +2 -0
- package/dist/esm/modules/federation/parseConfiguration.js +43 -0
- package/dist/esm/modules/federation/parseConfiguration.js.map +1 -0
- package/dist/esm/modules/federation/types/events.d.ts +4 -0
- package/dist/esm/modules/federation/types/events.js +2 -0
- package/dist/esm/modules/federation/types/events.js.map +1 -0
- package/dist/esm/modules/federation/types/module.d.ts +8 -0
- package/dist/esm/modules/federation/types/module.js +2 -0
- package/dist/esm/modules/federation/types/module.js.map +1 -0
- package/dist/esm/modules/federation/types/wrapper.d.ts +18 -0
- package/dist/esm/modules/federation/types/wrapper.js +2 -0
- package/dist/esm/modules/federation/types/wrapper.js.map +1 -0
- package/dist/esm/modules/federation/vendors/Singpass.d.ts +8 -0
- package/dist/esm/modules/federation/vendors/Singpass.js +110 -0
- package/dist/esm/modules/federation/vendors/Singpass.js.map +1 -0
- package/dist/esm/modules/frankie-client/DummyFrankieApiClient.d.ts +28 -22
- package/dist/esm/modules/frankie-client/DummyFrankieApiClient.js +47 -45
- package/dist/esm/modules/frankie-client/DummyFrankieApiClient.js.map +1 -1
- package/dist/esm/modules/frankie-client/FrankieApiClient.d.ts +6 -8
- package/dist/esm/modules/frankie-client/FrankieApiClient.js +10 -25
- package/dist/esm/modules/frankie-client/FrankieApiClient.js.map +1 -1
- package/dist/esm/modules/frankie-client/clients/ApplicantClient.js +7 -11
- package/dist/esm/modules/frankie-client/clients/ApplicantClient.js.map +1 -1
- package/dist/esm/modules/frankie-client/clients/BaseClient.d.ts +1 -3
- package/dist/esm/modules/frankie-client/clients/BaseClient.js +4 -3
- package/dist/esm/modules/frankie-client/clients/BaseClient.js.map +1 -1
- package/dist/esm/modules/frankie-client/clients/FederationClient.d.ts +11 -0
- package/dist/esm/modules/frankie-client/clients/FederationClient.js +24 -0
- package/dist/esm/modules/frankie-client/clients/FederationClient.js.map +1 -0
- package/dist/esm/modules/frankie-client/clients/StorageClient.d.ts +10 -0
- package/dist/esm/modules/frankie-client/clients/StorageClient.js +23 -0
- package/dist/esm/modules/frankie-client/clients/StorageClient.js.map +1 -0
- package/dist/esm/modules/frankie-client/index.d.ts +8 -2
- package/dist/esm/modules/frankie-client/index.js +23 -32
- package/dist/esm/modules/frankie-client/index.js.map +1 -1
- package/dist/esm/modules/frankie-client/mocks/federation/index.d.ts +4 -0
- package/dist/esm/modules/frankie-client/mocks/federation/index.js +32 -0
- package/dist/esm/modules/frankie-client/mocks/federation/index.js.map +1 -0
- package/dist/esm/modules/frankie-client/mocks/index.js +4 -0
- package/dist/esm/modules/frankie-client/mocks/index.js.map +1 -1
- package/dist/esm/modules/frankie-client/mocks/individual/loadIndividual.d.ts +1 -1
- package/dist/esm/modules/frankie-client/mocks/individual/loadIndividual.js +2 -2
- package/dist/esm/modules/frankie-client/mocks/individual/loadIndividual.js.map +1 -1
- package/dist/esm/modules/index.d.ts +15 -3
- package/dist/esm/modules/index.js +18 -9
- package/dist/esm/modules/index.js.map +1 -1
- package/dist/esm/modules/individual/actions/search.js +4 -5
- package/dist/esm/modules/individual/actions/search.js.map +1 -1
- package/dist/esm/modules/individual/types/events.d.ts +1 -1
- package/dist/esm/modules/meta.json +1 -1
- package/dist/esm/modules/ocr/actions/start.js +6 -14
- package/dist/esm/modules/ocr/actions/start.js.map +1 -1
- package/dist/esm/modules/sdk/index.js +3 -1
- package/dist/esm/modules/sdk/index.js.map +1 -1
- package/dist/esm/modules/sdk/initialisation/componentLoader.js +1 -1
- package/dist/esm/modules/sdk/initialisation/componentLoader.js.map +1 -1
- package/dist/esm/modules/sdk/initialisation/configurationParser.js +4 -7
- package/dist/esm/modules/sdk/initialisation/configurationParser.js.map +1 -1
- package/dist/esm/modules/sdk/initialisation/sharedDependencies.d.ts +2 -1
- package/dist/esm/modules/sdk/initialisation/sharedDependencies.js +4 -4
- package/dist/esm/modules/sdk/initialisation/sharedDependencies.js.map +1 -1
- package/dist/esm/modules/sdk/types/components.d.ts +2 -2
- package/dist/esm/modules/sdk/types/configuration.d.ts +17 -26
- package/dist/esm/modules/sdk/types/configuration.js.map +1 -1
- package/dist/esm/modules/sdk/types/module.d.ts +1 -1
- package/dist/esm/modules/session/SessionContext.d.ts +55 -0
- package/dist/esm/modules/session/SessionContext.js +88 -0
- package/dist/esm/modules/session/SessionContext.js.map +1 -0
- package/dist/esm/modules/session/constants.d.ts +3 -0
- package/dist/esm/modules/session/constants.js +4 -0
- package/dist/esm/modules/session/constants.js.map +1 -0
- package/dist/esm/modules/session/index.d.ts +6 -0
- package/dist/esm/modules/session/index.js +70 -0
- package/dist/esm/modules/session/index.js.map +1 -0
- package/dist/esm/modules/session/types/module.d.ts +5 -0
- package/dist/esm/modules/session/types/module.js +2 -0
- package/dist/esm/modules/session/types/module.js.map +1 -0
- package/dist/esm/types/Primitives.d.ts +1 -0
- package/dist/release.txt +2 -2
- package/dist/umd/device-sardine.js +1 -1
- package/dist/umd/oneSdk.umd.js +1 -1
- package/dist/umd/oneSdk.umd.js.map +1 -1
- package/dist/version.txt +2 -2
- package/package.json +12 -9
- package/dist/esm/modules/common/modules/runIfWhen.js.map +0 -1
- package/dist/esm/modules/common/types/Session.d.ts +0 -16
- package/dist/esm/modules/common/types/Session.js +0 -2
- package/dist/esm/modules/common/types/Session.js.map +0 -1
|
@@ -10,7 +10,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { Applicant } from "../../common/shared/models/Applicant";
|
|
11
11
|
import { CheckSummary } from "../../common/shared/models/CheckSummary";
|
|
12
12
|
import { Document } from "../../common/shared/models/Document";
|
|
13
|
-
import { hasEntityId } from "../../common/types/Session";
|
|
14
13
|
import { BaseClient } from "./BaseClient";
|
|
15
14
|
/**
|
|
16
15
|
* Applicant client handles BFF Applicant and Document Operations
|
|
@@ -23,7 +22,7 @@ export class ApplicantClient extends BaseClient {
|
|
|
23
22
|
* A search made using entityId HAS to be successful, since the entity id already exists. If not found, throw exception
|
|
24
23
|
* A search made using reference doesn't need to return results, as it might be a
|
|
25
24
|
*/
|
|
26
|
-
const { reference, entityId } = this
|
|
25
|
+
const { reference, entityId } = this;
|
|
27
26
|
const data = yield this.frankie
|
|
28
27
|
.get("/data/v2/applicant/", {
|
|
29
28
|
params: {
|
|
@@ -59,11 +58,10 @@ export class ApplicantClient extends BaseClient {
|
|
|
59
58
|
updateApplicant(payload) {
|
|
60
59
|
return __awaiter(this, void 0, void 0, function* () {
|
|
61
60
|
const { applicant, documents } = payload;
|
|
62
|
-
if (!
|
|
61
|
+
if (!this.entityId)
|
|
63
62
|
throw new Error("Entity id not found in local state. Has entity been created yet?");
|
|
64
|
-
const { entityId } = this.entityIdentifier;
|
|
65
63
|
return this.frankie
|
|
66
|
-
.put(`/data/v2/applicants/${entityId}`, {
|
|
64
|
+
.put(`/data/v2/applicants/${this.entityId}`, {
|
|
67
65
|
applicant,
|
|
68
66
|
documents,
|
|
69
67
|
kycMethod: "electronic",
|
|
@@ -73,10 +71,9 @@ export class ApplicantClient extends BaseClient {
|
|
|
73
71
|
}
|
|
74
72
|
getLatestCheckResults() {
|
|
75
73
|
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
-
if (!
|
|
74
|
+
if (!this.entityId)
|
|
77
75
|
throw new Error("Entity id not found in local state. Has entity been created yet?");
|
|
78
|
-
|
|
79
|
-
return yield this.frankie.get(`/data/v2/applicants/${entityId}`).then((r) => {
|
|
76
|
+
return yield this.frankie.get(`/data/v2/applicants/${this.entityId}`).then((r) => {
|
|
80
77
|
const { checkSummary } = r.data;
|
|
81
78
|
return CheckSummary.fromJSON(checkSummary);
|
|
82
79
|
});
|
|
@@ -84,10 +81,9 @@ export class ApplicantClient extends BaseClient {
|
|
|
84
81
|
}
|
|
85
82
|
triggerChecks() {
|
|
86
83
|
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
-
if (!
|
|
84
|
+
if (!this.entityId)
|
|
88
85
|
throw new Error("Entity id not found in local state. Has entity been created yet?");
|
|
89
|
-
|
|
90
|
-
yield this.frankie.post(`/data/v1/applicants/${entityId}/checks`);
|
|
86
|
+
yield this.frankie.post(`/data/v1/applicants/${this.entityId}/checks`);
|
|
91
87
|
return this.getLatestCheckResults();
|
|
92
88
|
});
|
|
93
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicantClient.js","sourceRoot":"","sources":["../../../../../modules/frankie-client/clients/ApplicantClient.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,SAAS,EAAqB,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAoB,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ApplicantClient.js","sourceRoot":"","sources":["../../../../../modules/frankie-client/clients/ApplicantClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { ApplicantId } from "../../common/types/Session";
|
|
2
|
-
import { ReadonlyDeep } from "type-fest";
|
|
3
1
|
import { FrankieApiClient } from "../FrankieApiClient";
|
|
4
2
|
export declare class BaseClient {
|
|
5
3
|
protected frankie: FrankieApiClient;
|
|
6
4
|
constructor(frankie: FrankieApiClient);
|
|
7
|
-
get
|
|
5
|
+
get reference(): string | null;
|
|
8
6
|
get entityId(): string | null;
|
|
9
7
|
set entityId(v: string | null);
|
|
10
8
|
}
|
|
@@ -2,12 +2,13 @@ export class BaseClient {
|
|
|
2
2
|
constructor(frankie) {
|
|
3
3
|
this.frankie = frankie;
|
|
4
4
|
}
|
|
5
|
-
get
|
|
6
|
-
|
|
5
|
+
get reference() {
|
|
6
|
+
var _a;
|
|
7
|
+
return (_a = this.frankie.session.reference) !== null && _a !== void 0 ? _a : null;
|
|
7
8
|
}
|
|
8
9
|
get entityId() {
|
|
9
10
|
var _a;
|
|
10
|
-
return (_a = this.
|
|
11
|
+
return (_a = this.frankie.session.entityId) !== null && _a !== void 0 ? _a : null;
|
|
11
12
|
}
|
|
12
13
|
set entityId(v) {
|
|
13
14
|
this.frankie.entityId = v;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseClient.js","sourceRoot":"","sources":["../../../../../modules/frankie-client/clients/BaseClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BaseClient.js","sourceRoot":"","sources":["../../../../../modules/frankie-client/clients/BaseClient.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,UAAU;IACrB,YAAsB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAEnD,IAAI,SAAS;;QACX,OAAO,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,mCAAI,IAAI,CAAC;IAChD,CAAC;IACD,IAAI,QAAQ;;QACV,OAAO,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,mCAAI,IAAI,CAAC;IAC/C,CAAC;IACD,IAAI,QAAQ,CAAC,CAAgB;QAC3B,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Vendor } from "../../federation/constants";
|
|
2
|
+
import { BaseClient } from "./BaseClient";
|
|
3
|
+
export declare class FederationClient extends BaseClient {
|
|
4
|
+
provideAuthorisation(provider: Vendor, authCode: string): Promise<AuthorisationPayload>;
|
|
5
|
+
submitCachedData(): Promise<unknown>;
|
|
6
|
+
}
|
|
7
|
+
declare type AuthorisationPayload = {
|
|
8
|
+
individual: object;
|
|
9
|
+
status: string;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { BaseClient } from "./BaseClient";
|
|
11
|
+
export class FederationClient extends BaseClient {
|
|
12
|
+
provideAuthorisation(provider, authCode) {
|
|
13
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
14
|
+
// TODO: This whole method
|
|
15
|
+
return yield this.frankie
|
|
16
|
+
.get(`/federation/v1/callback/${provider}?authCode=${authCode}`)
|
|
17
|
+
.then((d) => d.data);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
submitCachedData() {
|
|
21
|
+
return this.frankie.post("/federation/v1/singpass/entity").then((d) => d.data);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=FederationClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FederationClient.js","sourceRoot":"","sources":["../../../../../modules/frankie-client/clients/FederationClient.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IACxC,oBAAoB,CAAC,QAAgB,EAAE,QAAgB;;YAC3D,0BAA0B;YAC1B,OAAO,MAAM,IAAI,CAAC,OAAO;iBACtB,GAAG,CAAuB,2BAA2B,QAAQ,aAAa,QAAQ,EAAE,CAAC;iBACrF,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;KAAA;IACD,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* May be used to abstract quick storage. May be implemented as a wrapper for LocalStorage
|
|
3
|
+
* OR as a wrapper for a backend API which stores temporary data in redis
|
|
4
|
+
*/
|
|
5
|
+
import { BaseClient } from "./BaseClient";
|
|
6
|
+
export declare class StorageClient extends BaseClient {
|
|
7
|
+
store(key: string, value: unknown): void;
|
|
8
|
+
retrieve<Type>(key: string): Type;
|
|
9
|
+
retrieveAndDelete<Type>(key: string): Type;
|
|
10
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* May be used to abstract quick storage. May be implemented as a wrapper for LocalStorage
|
|
3
|
+
* OR as a wrapper for a backend API which stores temporary data in redis
|
|
4
|
+
*/
|
|
5
|
+
import { BaseClient } from "./BaseClient";
|
|
6
|
+
export class StorageClient extends BaseClient {
|
|
7
|
+
store(key, value) {
|
|
8
|
+
window.localStorage.setItem(key, JSON.stringify(value));
|
|
9
|
+
}
|
|
10
|
+
retrieve(key) {
|
|
11
|
+
// May fail parsing and throw exception
|
|
12
|
+
const value = window.localStorage.getItem(key);
|
|
13
|
+
if (!value)
|
|
14
|
+
return null;
|
|
15
|
+
return JSON.parse(value);
|
|
16
|
+
}
|
|
17
|
+
retrieveAndDelete(key) {
|
|
18
|
+
const value = this.retrieve(key);
|
|
19
|
+
window.localStorage.removeItem(key);
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=StorageClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageClient.js","sourceRoot":"","sources":["../../../../../modules/frankie-client/clients/StorageClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,OAAO,aAAc,SAAQ,UAAU;IAC3C,KAAK,CAAC,GAAW,EAAE,KAAc;QAC/B,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,QAAQ,CAAO,GAAW;QACxB,uCAAuC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,iBAAiB,CAAO,GAAW;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAO,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { EventHub } from "../common";
|
|
2
2
|
import { GlobalEvents, OneSdkRootParameters } from "../sdk/types";
|
|
3
|
+
import { SessionContext } from "../session/SessionContext";
|
|
3
4
|
import { DummyFrankieApiClient } from "./DummyFrankieApiClient";
|
|
4
5
|
import { FrankieApiClient } from "./FrankieApiClient";
|
|
5
|
-
declare type
|
|
6
|
+
declare type Mode = OneSdkRootParameters["mode"];
|
|
7
|
+
declare type Options<Validate extends boolean = true> = {
|
|
6
8
|
globalEventHub: EventHub<GlobalEvents>;
|
|
9
|
+
mode: Mode;
|
|
10
|
+
session: SessionContext;
|
|
11
|
+
validateToken?: Validate;
|
|
7
12
|
};
|
|
8
|
-
export declare function mkFrankieClient(options: Options):
|
|
13
|
+
export declare function mkFrankieClient(options: Options<false>): FrankieApiClient;
|
|
14
|
+
export declare function mkFrankieClient(options: Options<true>): Promise<FrankieApiClient>;
|
|
9
15
|
export { FrankieApiClient, DummyFrankieApiClient };
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { SdkModes } from "../sdk/types";
|
|
2
|
+
import { resolveMode } from "../sdk/initialisation/configurationParser";
|
|
11
3
|
import { Status } from "./clients/OCRClient";
|
|
12
4
|
import { DummyFrankieApiClient } from "./DummyFrankieApiClient";
|
|
13
5
|
import { FrankieApiClient } from "./FrankieApiClient";
|
|
@@ -22,30 +14,29 @@ const defaultMockOptions = {
|
|
|
22
14
|
statusResults: [Status.WAITING_BACK, Status.DOCUMENTS_INVALID, Status.COMPLETE],
|
|
23
15
|
},
|
|
24
16
|
};
|
|
25
|
-
const isDummy = (mode) => (typeof mode === "string" ? mode : mode.modeName);
|
|
26
17
|
export function mkFrankieClient(options) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return client;
|
|
48
|
-
|
|
18
|
+
if (resolveMode(options).modeName === SdkModes.DUMMY) {
|
|
19
|
+
// initialise dummy client with optional token
|
|
20
|
+
const dummyClient = new DummyFrankieApiClient(Object.assign(Object.assign({}, options), { defaultDelay: 200 }));
|
|
21
|
+
dummyClient.session = options.session;
|
|
22
|
+
// resolve mock options either from mode: { options } or if mode: "dummy", then use default mock options
|
|
23
|
+
const simplifiedMockOptions = typeof options.mode === "string" ? defaultMockOptions : options.mode.mocks;
|
|
24
|
+
const mockOptions = resolveSimplifiedMockOptions(simplifiedMockOptions);
|
|
25
|
+
console.debug("Resolved mock options", {
|
|
26
|
+
mockOptions,
|
|
27
|
+
resultingMockedRequests: mockOptions,
|
|
28
|
+
});
|
|
29
|
+
// inject mocked flow to dummy client
|
|
30
|
+
return mockFlow(dummyClient, mockOptions);
|
|
31
|
+
}
|
|
32
|
+
// if not in dummy mode, simply initialise the regular api client with the provided token
|
|
33
|
+
const client = new FrankieApiClient();
|
|
34
|
+
client.session = options.session;
|
|
35
|
+
// This function is only synchronous if options.validateToken is explicitly false
|
|
36
|
+
const { validateToken = true } = options;
|
|
37
|
+
if (validateToken)
|
|
38
|
+
return client.validateSession().then(() => client);
|
|
39
|
+
return client;
|
|
49
40
|
}
|
|
50
41
|
export { FrankieApiClient, DummyFrankieApiClient };
|
|
51
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../modules/frankie-client/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../modules/frankie-client/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAExE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAyB,MAAM,oBAAoB,CAAC;AAEzF,MAAM,kBAAkB,GAA0B;IAChD,mBAAmB,EAAE;QACnB,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;KAChD;IACD,OAAO,EAAE;QACP,YAAY,EAAE,iBAAiB;QAC/B,aAAa,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC;KAChF;CACF,CAAC;AAWF,MAAM,UAAU,eAAe,CAAC,OAAyB;IACvD,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE;QACpD,8CAA8C;QAC9C,MAAM,WAAW,GAAG,IAAI,qBAAqB,iCAAM,OAAO,KAAE,YAAY,EAAE,GAAG,IAAG,CAAC;QACjF,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACtC,wGAAwG;QACxG,MAAM,qBAAqB,GACzB,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7E,MAAM,WAAW,GAAgB,4BAA4B,CAAC,qBAAqB,CAAC,CAAC;QACrF,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE;YACrC,WAAW;YACX,uBAAuB,EAAE,WAAW;SACrC,CAAC,CAAC;QACH,qCAAqC;QACrC,OAAO,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;KAC3C;IACD,yFAAyF;IACzF,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACtC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEjC,iFAAiF;IACjF,MAAM,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACzC,IAAI,aAAa;QAAE,OAAO,MAAM,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DummyFrankieApiClient } from "../../../frankie-client";
|
|
2
|
+
export declare function skipFederationLogin(client: DummyFrankieApiClient): void;
|
|
3
|
+
export declare function successfulDataFetching(client: DummyFrankieApiClient): void;
|
|
4
|
+
export declare function successfulConfirmation(client: DummyFrankieApiClient): void;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { singpassURLs } from "../../../federation/vendors/Singpass";
|
|
2
|
+
import { v4 as uuid } from "uuid";
|
|
3
|
+
import { QUERY_PARAM, URL_PARAM } from "../../DummyFrankieApiClient";
|
|
4
|
+
export function skipFederationLogin(client) {
|
|
5
|
+
client.stubResponse({ url: /.+/, method: "redirect" }, (url) => {
|
|
6
|
+
const authCode = uuid();
|
|
7
|
+
if (Object.values(singpassURLs).some((u) => u.includes(url.hostname))) {
|
|
8
|
+
const newUrl = new URL(window.location.href);
|
|
9
|
+
newUrl.searchParams.append("code", authCode);
|
|
10
|
+
newUrl.searchParams.append("state", url.searchParams.get("state"));
|
|
11
|
+
return newUrl;
|
|
12
|
+
}
|
|
13
|
+
return null;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export function successfulDataFetching(client) {
|
|
17
|
+
client.stubResponse({ url: new RegExp(`/federation/v1/callback/${URL_PARAM}\\?authCode=${QUERY_PARAM}`), method: "get" }, (data) => ({
|
|
18
|
+
title: `Get data from '${data.urlMatch[1]}'`,
|
|
19
|
+
status: 200,
|
|
20
|
+
data: {
|
|
21
|
+
individual: { name: { givenName: "Dummy name", familyName: "Family" }, addresses: [], documents: {} },
|
|
22
|
+
status: "STATUS_OK",
|
|
23
|
+
},
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
export function successfulConfirmation(client) {
|
|
27
|
+
client.stubResponse({ url: "/federation/v1/singpass/entity", method: "post" }, {
|
|
28
|
+
title: "Confirming federation data",
|
|
29
|
+
status: 201,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../modules/frankie-client/mocks/federation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,UAAU,mBAAmB,CAAC,MAA6B;IAC/D,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;QAC7D,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC;QAExB,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE;YACrE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACnE,OAAO,MAAM,CAAC;SACf;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAA6B;IAClE,MAAM,CAAC,YAAY,CACjB,EAAE,GAAG,EAAE,IAAI,MAAM,CAAC,2BAA2B,SAAS,eAAe,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EACpG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACT,KAAK,EAAE,kBAAkB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;QAC5C,MAAM,EAAE,GAAG;QACX,IAAI,EAAE;YACJ,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YACrG,MAAM,EAAE,WAAW;SACpB;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,sBAAsB,CAAC,MAA6B;IAClE,MAAM,CAAC,YAAY,CACjB,EAAE,GAAG,EAAE,gCAAgC,EAAE,MAAM,EAAE,MAAM,EAAE,EACzD;QACE,KAAK,EAAE,4BAA4B;QACnC,MAAM,EAAE,GAAG;KACZ,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { generateIDVToken, initIDVProcess, initSynchronousIDVProcess } from "./biometrics/idvSubmission";
|
|
2
|
+
import { skipFederationLogin, successfulConfirmation, successfulDataFetching } from "./federation";
|
|
2
3
|
import { applicantNotFound, loadExistingApplicant, loadSuccessfulCheckResults, } from "./individual/loadIndividual";
|
|
3
4
|
import { submitSuccessfulData, successfulVerification } from "./individual/submitData";
|
|
4
5
|
import { loadConfiguration } from "./initialisation/loadConfiguration";
|
|
@@ -21,6 +22,9 @@ export function mockFlow(client, options) {
|
|
|
21
22
|
generateIDVToken(client);
|
|
22
23
|
initIDVProcess(client);
|
|
23
24
|
initSynchronousIDVProcess(client);
|
|
25
|
+
skipFederationLogin(client);
|
|
26
|
+
successfulDataFetching(client);
|
|
27
|
+
successfulConfirmation(client);
|
|
24
28
|
return client;
|
|
25
29
|
}
|
|
26
30
|
const hasPreloadedIndividual = (options) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../modules/frankie-client/mocks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACzG,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,0BAA0B,GAE3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAA6B,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,UAAU,QAAQ,CAAC,MAA6B,EAAE,OAAoB;IAC1E,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,aAAa,CAAC,MAAM,CAAC,CAAC;IAEtB,IAAI,sBAAsB,CAAC,OAAO,CAAC;QAAE,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;QACvE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE/B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAE/B,IAAI,aAAa,CAAC,OAAO,CAAC;QAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEvD,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,MAAM,sBAAsB,GAAG,CAC7B,OAAoB,EAC4D,EAAE;IAClF,OAAO,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC9C,CAAC,CAAC;AACF,MAAM,aAAa,GAAG,CACpB,OAAoB,EAC2D,EAAE;IACjF,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../modules/frankie-client/mocks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACzG,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACnG,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,0BAA0B,GAE3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAA6B,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,UAAU,QAAQ,CAAC,MAA6B,EAAE,OAAoB;IAC1E,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,aAAa,CAAC,MAAM,CAAC,CAAC;IAEtB,IAAI,sBAAsB,CAAC,OAAO,CAAC;QAAE,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;QACvE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE/B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAE/B,IAAI,aAAa,CAAC,OAAO,CAAC;QAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEvD,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAElC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAE/B,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,MAAM,sBAAsB,GAAG,CAC7B,OAAoB,EAC4D,EAAE;IAClF,OAAO,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC9C,CAAC,CAAC;AACF,MAAM,aAAa,GAAG,CACpB,OAAoB,EAC2D,EAAE;IACjF,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC,CAAC"}
|
|
@@ -10,7 +10,7 @@ export declare type Options = {
|
|
|
10
10
|
declare type MockOptions = MockOptionsPartial & {
|
|
11
11
|
preloadedIndividual: Options;
|
|
12
12
|
};
|
|
13
|
-
export declare function
|
|
13
|
+
export declare function resolveIndividualData(options: Options): {
|
|
14
14
|
individual: Applicant & {
|
|
15
15
|
name: {
|
|
16
16
|
givenName: string;
|
|
@@ -4,7 +4,7 @@ import { Document } from "../../../common/shared/models/Document";
|
|
|
4
4
|
import merge from "lodash.merge";
|
|
5
5
|
import { v4 as uuid } from "uuid";
|
|
6
6
|
import { URL_PARAM } from "../../DummyFrankieApiClient";
|
|
7
|
-
export function
|
|
7
|
+
export function resolveIndividualData(options) {
|
|
8
8
|
var _a, _b;
|
|
9
9
|
return {
|
|
10
10
|
individual: merge(new Applicant(), {
|
|
@@ -22,7 +22,7 @@ export function resolveIndividualDdata(options) {
|
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
24
|
export function loadExistingApplicant(client, options) {
|
|
25
|
-
const { individual, documents } =
|
|
25
|
+
const { individual, documents } = resolveIndividualData(options.preloadedIndividual);
|
|
26
26
|
client.stubResponse({ url: "/data/v2/applicant", method: "get" }, (config) => {
|
|
27
27
|
if (config.params.entityId)
|
|
28
28
|
individual.entityId = config.params.entityId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadIndividual.js","sourceRoot":"","sources":["../../../../../../modules/frankie-client/mocks/individual/loadIndividual.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAEjE,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAGlC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAOxD,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"loadIndividual.js","sourceRoot":"","sources":["../../../../../../modules/frankie-client/mocks/individual/loadIndividual.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,34 @@
|
|
|
1
1
|
import * as utils from "./common";
|
|
2
|
+
import { ENVIRONMENTS } from "./common";
|
|
2
3
|
import { FrankieApiClient } from "./frankie-client";
|
|
3
4
|
import { SdkModes } from "./sdk/types";
|
|
4
5
|
/**
|
|
5
6
|
* Explicitly Export types (with type-only exports) and enums (without "type") at the root when importing into a typescript project via npm
|
|
6
7
|
* https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export
|
|
7
8
|
*/
|
|
8
|
-
export { ENVIRONMENTS } from "./common";
|
|
9
9
|
export type { Accessors, mkEventHub, ReadonlyAccessors } from "./common";
|
|
10
10
|
export type { CheckSummary } from "./common/shared/models/CheckSummary";
|
|
11
11
|
export type { DeviceModule, DeviceModuleContext as DeviceModuleContext, Events as DeviceModuleEvents, } from "./device";
|
|
12
|
-
export
|
|
12
|
+
export { DummyFrankieApiClient, FrankieApiClient } from "./frankie-client";
|
|
13
13
|
export { Status as OCRStatus } from "./ocr";
|
|
14
14
|
export type { OneSdkContext, OneSdkRootParameters as OneSdkConfiguration } from "./sdk";
|
|
15
|
-
export { SdkModes as SdkMode };
|
|
15
|
+
export { SdkModes as SdkMode, ENVIRONMENTS as Environments };
|
|
16
|
+
export { OneSDK };
|
|
17
|
+
/**
|
|
18
|
+
* The default export of the OneSDK, also exposed as a named variable `OneSDK`.
|
|
19
|
+
* It is an asynchronous function that returns a Promise of the OneSdkContext,
|
|
20
|
+
* which is essentially an instance of the OneSDK.
|
|
21
|
+
* (options: OneSdkRootParameters) => Promise<OneSdkContext>
|
|
22
|
+
*
|
|
23
|
+
* This default export also contains utilities attached to it, such as the `modes` enum.
|
|
24
|
+
* @param {OneSdkRootParameters} options
|
|
25
|
+
* @returns {Promise<OneSdkContext>} Promise of an Instance of OneSDK
|
|
26
|
+
*/
|
|
16
27
|
declare const OneSDK: ((p: import("./sdk").OneSdkRootParameters) => Promise<import("./sdk").OneSdkContext>) & {
|
|
17
28
|
FrankieApiClient: typeof FrankieApiClient;
|
|
18
29
|
utils: typeof utils;
|
|
19
30
|
modes: typeof SdkModes;
|
|
31
|
+
environments: typeof utils.ENVIRONMENTS;
|
|
20
32
|
version: string;
|
|
21
33
|
};
|
|
22
34
|
export default OneSDK;
|
|
@@ -1,23 +1,32 @@
|
|
|
1
1
|
import * as utils from "./common";
|
|
2
|
+
import { ENVIRONMENTS } from "./common";
|
|
2
3
|
import { FrankieApiClient } from "./frankie-client";
|
|
3
4
|
import packageMeta from "./meta.json";
|
|
4
5
|
import { oneSdk } from "./sdk";
|
|
5
6
|
import { SdkModes } from "./sdk/types";
|
|
6
|
-
|
|
7
|
-
* Explicitly Export types (with type-only exports) and enums (without "type") at the root when importing into a typescript project via npm
|
|
8
|
-
* https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export
|
|
9
|
-
*/
|
|
10
|
-
export { ENVIRONMENTS } from "./common";
|
|
7
|
+
export { DummyFrankieApiClient, FrankieApiClient } from "./frankie-client";
|
|
11
8
|
export { Status as OCRStatus } from "./ocr";
|
|
12
|
-
export { SdkModes as SdkMode };
|
|
9
|
+
export { SdkModes as SdkMode, ENVIRONMENTS as Environments };
|
|
13
10
|
// Exported OneSdk object
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
11
|
+
// Either named as OneSDK or as a default export, which when loaded via CDN
|
|
12
|
+
// The UMD build will attach the default export to the global window object as [window.]OneSdk
|
|
13
|
+
// You'll find extra descriptions in the JSDoc below
|
|
14
|
+
export { OneSDK };
|
|
15
|
+
/**
|
|
16
|
+
* The default export of the OneSDK, also exposed as a named variable `OneSDK`.
|
|
17
|
+
* It is an asynchronous function that returns a Promise of the OneSdkContext,
|
|
18
|
+
* which is essentially an instance of the OneSDK.
|
|
19
|
+
* (options: OneSdkRootParameters) => Promise<OneSdkContext>
|
|
20
|
+
*
|
|
21
|
+
* This default export also contains utilities attached to it, such as the `modes` enum.
|
|
22
|
+
* @param {OneSdkRootParameters} options
|
|
23
|
+
* @returns {Promise<OneSdkContext>} Promise of an Instance of OneSDK
|
|
24
|
+
*/
|
|
17
25
|
const OneSDK = Object.assign(oneSdk.initialise, {
|
|
18
26
|
FrankieApiClient,
|
|
19
27
|
utils,
|
|
20
28
|
modes: SdkModes,
|
|
29
|
+
environments: ENVIRONMENTS,
|
|
21
30
|
version: packageMeta.version,
|
|
22
31
|
});
|
|
23
32
|
// eslint-disable-next-line import/no-default-export
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAYvC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,CAAC;AAC7D,yBAAyB;AACzB,2EAA2E;AAC3E,8FAA8F;AAC9F,oDAAoD;AACpD,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB;;;;;;;;;GASG;AACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;IAC9C,gBAAgB;IAChB,KAAK;IACL,KAAK,EAAE,QAAQ;IACf,YAAY,EAAE,YAAY;IAC1B,OAAO,EAAE,WAAW,CAAC,OAAO;CAC7B,CAAC,CAAC;AACH,oDAAoD;AACpD,eAAe,MAAM,CAAC"}
|
|
@@ -9,7 +9,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { OneSDKError } from "../../common";
|
|
11
11
|
import { Applicant } from "../../common/shared/models/Applicant";
|
|
12
|
-
import { hasEntityId } from "../../common/types/Session";
|
|
13
12
|
import { Profile } from "../../common/shared/models/Profile";
|
|
14
13
|
export const mkSearchMethod = (deps) => () => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
14
|
const { client, eventHub, state$, recipeName } = deps;
|
|
@@ -23,8 +22,8 @@ export const mkSearchMethod = (deps) => () => __awaiter(void 0, void 0, void 0,
|
|
|
23
22
|
hasLoaded = true;
|
|
24
23
|
}
|
|
25
24
|
catch (e) {
|
|
26
|
-
if (
|
|
27
|
-
const errorMessage = `Critical error! There was an issue loading the individual's details. Is the entityId (${client.
|
|
25
|
+
if (client.entityId) {
|
|
26
|
+
const errorMessage = `Critical error! There was an issue loading the individual's details. Is the entityId (${client.entityId}) used to create this session valid?`;
|
|
28
27
|
eventHub.emit("error", new OneSDKError(errorMessage, e));
|
|
29
28
|
hasLoaded = false;
|
|
30
29
|
throw new Error(errorMessage);
|
|
@@ -35,7 +34,7 @@ export const mkSearchMethod = (deps) => () => __awaiter(void 0, void 0, void 0,
|
|
|
35
34
|
documents = [];
|
|
36
35
|
const profile = new Profile(recipeName, "electronic");
|
|
37
36
|
applicant.profile = profile;
|
|
38
|
-
applicant.customerReference = client.
|
|
37
|
+
applicant.customerReference = client.reference;
|
|
39
38
|
}
|
|
40
39
|
}
|
|
41
40
|
const isPreloaded = Boolean(applicant === null || applicant === void 0 ? void 0 : applicant.entityId);
|
|
@@ -46,6 +45,6 @@ export const mkSearchMethod = (deps) => () => __awaiter(void 0, void 0, void 0,
|
|
|
46
45
|
isPreloaded,
|
|
47
46
|
});
|
|
48
47
|
if (hasLoaded)
|
|
49
|
-
eventHub.emit("data_loaded",
|
|
48
|
+
eventHub.emit("data_loaded", { entityId: client.entityId, reference: client.reference, isPreloaded });
|
|
50
49
|
});
|
|
51
50
|
//# sourceMappingURL=search.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../modules/individual/actions/search.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAY,WAAW,EAAiB,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../modules/individual/actions/search.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAY,WAAW,EAAiB,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGnE,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAG7D,MAAM,CAAC,MAAM,cAAc,GACzB,CAAC,IAA+G,EAAE,EAAE,CACpH,GAAS,EAAE;IACT,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IACtD,IAAI,SAAS,GAAc,IAAI,CAAC;IAChC,IAAI,SAAS,GAAe,IAAI,CAAC;IACjC,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,IAAI;QACF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAC5B,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAC5B,SAAS,GAAG,IAAI,CAAC;KAClB;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,MAAM,YAAY,GAAG,yFAAyF,MAAM,CAAC,QAAQ,sCAAsC,CAAC;YACpK,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;YACzD,SAAS,GAAG,KAAK,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;SAC/B;aAAM;YACL,SAAS,GAAG,IAAI,CAAC;YACjB,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,SAAS,GAAG,EAAE,CAAC;YAEf,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACtD,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;YAC5B,SAAS,CAAC,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC;SAChD;KACF;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,CAAC;QACV,SAAS;QACT,SAAS;QACT,SAAS;QACT,WAAW;KACZ,CAAC,CAAC;IACH,IAAI,SAAS;QACX,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;AAC1G,CAAC,CAAA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "version": "0.
|
|
1
|
+
{ "version": "0.6.5-alpha" }
|
|
@@ -8,9 +8,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { Document } from "../../common/shared/models/Document";
|
|
11
|
-
import { isCompleteStatus, isFailedStatus, isInputRequiredStatus,
|
|
12
|
-
import {
|
|
11
|
+
import { Status, isCompleteStatus, isFailedStatus, isInputRequiredStatus, } from "../../frankie-client/clients/OCRClient";
|
|
12
|
+
import { Subject, filter, takeUntil, takeWhile } from "rxjs";
|
|
13
13
|
import { OneSDKError } from "../../common/errors/OneSDKError";
|
|
14
|
+
import { runOnce } from "../../common/modules/HOF";
|
|
14
15
|
/**
|
|
15
16
|
* Returns the start method called by customers to trigger the OCR flow
|
|
16
17
|
* It first generates two observables by branching off the OCR's internal state variables
|
|
@@ -53,6 +54,7 @@ export const mkStartMethod = (deps) => () => __awaiter(void 0, void 0, void 0, f
|
|
|
53
54
|
const subscriber = {
|
|
54
55
|
next: (newStatus) => {
|
|
55
56
|
// For each new status/failureStatus, trigger inputRequired part of the flow
|
|
57
|
+
// This callback is what implements the loops in the OCR Flow
|
|
56
58
|
inputRequired(newStatus, depsWithManualInterrupt);
|
|
57
59
|
},
|
|
58
60
|
complete: () => {
|
|
@@ -71,9 +73,9 @@ export const mkStartMethod = (deps) => () => __awaiter(void 0, void 0, void 0, f
|
|
|
71
73
|
// either continue a flow, or start a new one
|
|
72
74
|
yield resetCurrentStatus(depsWithManualInterrupt);
|
|
73
75
|
// register callbacks to each data stream
|
|
74
|
-
// for status
|
|
76
|
+
// - for each new status, handle "error", "complete" and "next"/loop callbacks
|
|
75
77
|
statusUntilComplete$.subscribe(subscriber);
|
|
76
|
-
// for failed statuses
|
|
78
|
+
// - for each new failed statuses, only handle the "next"/loop callback
|
|
77
79
|
failedStatusExceptNull$.subscribe(subscriber.next);
|
|
78
80
|
// expose interruptOCR() to allow interruption of an active flow, which unregister all listeners
|
|
79
81
|
return {
|
|
@@ -180,16 +182,6 @@ export const inputRequired = (status, deps) => {
|
|
|
180
182
|
const provideFile = mkProvideFile(deps);
|
|
181
183
|
eventHub.emit("input_required", info, status, runOnce(provideFile, message));
|
|
182
184
|
};
|
|
183
|
-
const runOnce = (func, errorMessage) => {
|
|
184
|
-
let wasCalled = false;
|
|
185
|
-
return ((...args) => {
|
|
186
|
-
if (wasCalled)
|
|
187
|
-
throw new Error(errorMessage);
|
|
188
|
-
const result = func(...args);
|
|
189
|
-
wasCalled = true;
|
|
190
|
-
return result;
|
|
191
|
-
});
|
|
192
|
-
};
|
|
193
185
|
export const mkProvideFile = (deps) => (file) => {
|
|
194
186
|
const { files$, document$, client } = deps;
|
|
195
187
|
if (!file.type)
|