@passlock/node 0.9.13 → 0.9.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@passlock/node",
3
3
  "type": "module",
4
- "version": "0.9.13",
4
+ "version": "0.9.15",
5
5
  "description": "Server side passkey library for node/express",
6
6
  "keywords": [
7
7
  "passkey",
@@ -22,25 +22,25 @@
22
22
  "email": "team@passlock.dev"
23
23
  },
24
24
  "dependencies": {
25
- "effect": "3.2.5",
26
- "@passlock/shared": "^0.9.13"
25
+ "effect": "^3.2.8",
26
+ "@passlock/shared": "^0.9.15"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@tsconfig/node18": "^18.2.4",
30
- "@types/node": "^20.12.12",
31
- "@typescript-eslint/eslint-plugin": "^7.11.0",
32
- "@typescript-eslint/parser": "^7.11.0",
30
+ "@types/node": "^20.14.1",
31
+ "@typescript-eslint/eslint-plugin": "^7.12.0",
32
+ "@typescript-eslint/parser": "^7.12.0",
33
33
  "@vitest/coverage-v8": "^1.6.0",
34
34
  "@vitest/ui": "^1.6.0",
35
- "eslint": "^8.56.0",
35
+ "eslint": "^8.57.0",
36
36
  "eslint-config-prettier": "^9.1.0",
37
37
  "eslint-import-resolver-typescript": "^3.6.1",
38
38
  "eslint-plugin-import": "^2.29.1",
39
- "prettier": "^3.2.5",
39
+ "prettier": "^3.3.0",
40
40
  "rimraf": "^5.0.7",
41
- "tsx": "^4.11.0",
41
+ "tsx": "^4.11.2",
42
42
  "typescript": "^5.4.5",
43
- "vite": "^5.2.11",
43
+ "vite": "^5.2.12",
44
44
  "vitest": "^1.6.0"
45
45
  },
46
46
  "exports": {
@@ -65,7 +65,7 @@
65
65
  "lint": "eslint --ext .ts src",
66
66
  "lint:fix": "pnpm run lint --fix",
67
67
  "format": "prettier --write \"src/**/*.+(js|ts|json)\"",
68
- "ncu": "ncu -x @passlock/shared",
69
- "ncu:save": "ncu -u -x @passlock/shared -x effect -x eslint"
68
+ "ncu": "ncu --peer -x @passlock/* -x effect",
69
+ "ncu:save": "ncu --peer -u -x @passlock/* -x effect"
70
70
  }
71
71
  }
@@ -1,10 +0,0 @@
1
- import { Context } from 'effect';
2
- declare const Config_base: Context.TagClass<Config, "Config", {
3
- readonly tenancyId: string;
4
- readonly apiKey: string;
5
- readonly endpoint?: string;
6
- }>;
7
- export declare class Config extends Config_base {
8
- }
9
- export {};
10
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;;wBAKR,MAAM;qBACT,MAAM;wBACH,MAAM;;AAL9B,qBAAa,MAAO,SAAQ,WAOzB;CAAG"}
@@ -1,4 +0,0 @@
1
- import { Context } from 'effect';
2
- export class Config extends Context.Tag('Config')() {
3
- }
4
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,MAAM,OAAO,MAAO,SAAQ,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAO9C;CAAG"}
package/dist/index.d.ts DELETED
@@ -1,61 +0,0 @@
1
- import { ErrorCode } from '@passlock/shared/dist/error/error.js';
2
- import { type PrincipalRequest } from './principal/principal.js';
3
- export type { PrincipalRequest } from './principal/principal.js';
4
- export { ErrorCode } from '@passlock/shared/dist/error/error.js';
5
- export declare class PasslockError extends Error {
6
- readonly _tag = "PasslockError";
7
- readonly code: ErrorCode;
8
- constructor(message: string, code: ErrorCode);
9
- static readonly isError: (error: unknown) => error is PasslockError;
10
- }
11
- export declare class PasslockUnsafe {
12
- private readonly runtime;
13
- constructor(config: {
14
- tenancyId: string;
15
- apiKey: string;
16
- endpoint?: string;
17
- });
18
- private readonly runPromise;
19
- fetchPrincipal: (request: PrincipalRequest) => Promise<{
20
- readonly token: string;
21
- readonly user: {
22
- readonly id: string;
23
- readonly givenName: string;
24
- readonly familyName: string;
25
- readonly email: string;
26
- readonly emailVerified: boolean;
27
- };
28
- readonly authStatement: {
29
- readonly authType: "email" | "google" | "passkey";
30
- readonly userVerified: boolean;
31
- readonly authTimestamp: Date;
32
- };
33
- readonly expireAt: Date;
34
- }>;
35
- }
36
- export declare class Passlock {
37
- private readonly runtime;
38
- constructor(config: {
39
- tenancyId: string;
40
- apiKey: string;
41
- endpoint?: string;
42
- });
43
- private readonly runPromise;
44
- fetchPrincipal: (request: PrincipalRequest) => Promise<{
45
- readonly token: string;
46
- readonly user: {
47
- readonly id: string;
48
- readonly givenName: string;
49
- readonly familyName: string;
50
- readonly email: string;
51
- readonly emailVerified: boolean;
52
- };
53
- readonly authStatement: {
54
- readonly authType: "email" | "google" | "passkey";
55
- readonly userVerified: boolean;
56
- readonly authTimestamp: Date;
57
- };
58
- readonly expireAt: Date;
59
- } | PasslockError>;
60
- }
61
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EAKZ,MAAM,sCAAsC,CAAA;AAG7C,OAAO,EAIH,KAAK,gBAAgB,EACxB,MAAM,0BAA0B,CAAA;AAEjC,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAEhE,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,mBAAkB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;gBAEZ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS;IAK5C,MAAM,CAAC,QAAQ,CAAC,OAAO,UAAW,OAAO,4BAOxC;CACF;AAyDD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;gBAE3C,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAW5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAQ1B;IAED,cAAc,YAAa,gBAAgB;;;;;;;;;;;;;;;OAKxC;CACJ;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;gBAE3C,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAW5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAI1B;IAED,cAAc,YAAa,gBAAgB;;;;;;;;;;;;;;;uBAKxC;CACJ"}
package/dist/index.js DELETED
@@ -1,80 +0,0 @@
1
- import { ErrorCode, Forbidden, InternalServerError, NotFound, Unauthorized, } from '@passlock/shared/dist/error/error.js';
2
- import { Effect as E, Layer as L, Runtime, Scope, pipe } from 'effect';
3
- import { Config } from './config/config.js';
4
- import { PrincipalService, PrincipalServiceLive, StreamResponseLive, } from './principal/principal.js';
5
- export { ErrorCode } from '@passlock/shared/dist/error/error.js';
6
- export class PasslockError extends Error {
7
- _tag = 'PasslockError';
8
- code;
9
- constructor(message, code) {
10
- super(message);
11
- this.code = code;
12
- }
13
- static isError = (error) => {
14
- return (typeof error === 'object' &&
15
- error !== null &&
16
- '_tag' in error &&
17
- error['_tag'] === 'PasslockError');
18
- };
19
- }
20
- const hasMessage = (defect) => {
21
- return (typeof defect === 'object' &&
22
- defect !== null &&
23
- 'message' in defect &&
24
- typeof defect['message'] === 'string');
25
- };
26
- const transformErrors = (effect) => {
27
- const withErrorHandling = E.catchTags(effect, {
28
- NotFound: e => E.succeed(new PasslockError(e.message, ErrorCode.NotFound)),
29
- Unauthorized: e => E.succeed(new PasslockError(e.message, ErrorCode.Unauthorized)),
30
- Forbidden: e => E.succeed(new PasslockError(e.message, ErrorCode.Forbidden)),
31
- InternalServerError: e => E.succeed(new PasslockError(e.message, ErrorCode.InternalServerError)),
32
- });
33
- const sandboxed = E.sandbox(withErrorHandling);
34
- const withSandboxing = E.catchTags(sandboxed, {
35
- Die: ({ defect }) => {
36
- return hasMessage(defect)
37
- ? E.succeed(new PasslockError(defect.message, ErrorCode.InternalServerError))
38
- : E.succeed(new PasslockError('Sorry, something went wrong', ErrorCode.InternalServerError));
39
- },
40
- Interrupt: () => {
41
- return E.succeed(new PasslockError('Operation aborted', ErrorCode.InternalBrowserError));
42
- },
43
- Sequential: errors => {
44
- console.error(errors);
45
- return E.succeed(new PasslockError('Sorry, something went wrong', ErrorCode.InternalServerError));
46
- },
47
- Parallel: errors => {
48
- console.error(errors);
49
- return E.succeed(new PasslockError('Sorry, something went wrong', ErrorCode.InternalServerError));
50
- },
51
- });
52
- return E.unsandbox(withSandboxing);
53
- };
54
- export class PasslockUnsafe {
55
- runtime;
56
- constructor(config) {
57
- const configLive = L.succeed(Config, Config.of(config));
58
- const allLayers = pipe(PrincipalServiceLive, L.provide(configLive), L.provide(StreamResponseLive));
59
- const scope = E.runSync(Scope.make());
60
- this.runtime = E.runSync(L.toRuntime(allLayers).pipe(Scope.extend(scope)));
61
- }
62
- runPromise = (effect) => {
63
- return pipe(transformErrors(effect), E.flatMap(result => (PasslockError.isError(result) ? E.fail(result) : E.succeed(result))), effect => Runtime.runPromise(this.runtime)(effect));
64
- };
65
- fetchPrincipal = (request) => pipe(PrincipalService, E.flatMap(service => service.fetchPrincipal(request)), effect => this.runPromise(effect));
66
- }
67
- export class Passlock {
68
- runtime;
69
- constructor(config) {
70
- const configLive = L.succeed(Config, Config.of(config));
71
- const allLayers = pipe(PrincipalServiceLive, L.provide(configLive), L.provide(StreamResponseLive));
72
- const scope = E.runSync(Scope.make());
73
- this.runtime = E.runSync(L.toRuntime(allLayers).pipe(Scope.extend(scope)));
74
- }
75
- runPromise = (effect) => {
76
- return pipe(transformErrors(effect), effect => Runtime.runPromise(this.runtime)(effect));
77
- };
78
- fetchPrincipal = (request) => pipe(PrincipalService, E.flatMap(service => service.fetchPrincipal(request)), effect => this.runPromise(effect));
79
- }
80
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
- import { Forbidden, InternalServerError, NotFound, Unauthorized } from '@passlock/shared/dist/error/error.js';
4
- import { Principal } from '@passlock/shared/dist/schema/schema.js';
5
- import { Context, Effect as E, Layer, Stream } from 'effect';
6
- import * as https from 'https';
7
- import { Config } from '../config/config.js';
8
- export type StreamResponse = (options: https.RequestOptions) => Stream.Stream<Buffer, PrincipalErrors>;
9
- export declare const StreamResponse: Context.Tag<StreamResponse, StreamResponse>;
10
- export type PrincipalErrors = NotFound | Unauthorized | Forbidden | InternalServerError;
11
- export type PrincipalRequest = {
12
- token: string;
13
- };
14
- export type PrincipalService = {
15
- fetchPrincipal: (request: PrincipalRequest) => E.Effect<Principal, PrincipalErrors>;
16
- };
17
- export declare const PrincipalService: Context.Tag<PrincipalService, PrincipalService>;
18
- export declare const buildError: (res: {
19
- statusCode?: number | undefined;
20
- statusMessage?: string | undefined;
21
- }) => NotFound | Unauthorized | Forbidden | InternalServerError;
22
- export declare const fetchPrincipal: (request: PrincipalRequest) => E.Effect<Principal, PrincipalErrors, StreamResponse | Config>;
23
- export declare const StreamResponseLive: Layer.Layer<StreamResponse, never, never>;
24
- export declare const PrincipalServiceLive: Layer.Layer<PrincipalService, never, Config | StreamResponse>;
25
- //# sourceMappingURL=principal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"principal.d.ts","sourceRoot":"","sources":["../../src/principal/principal.ts"],"names":[],"mappings":";;AAAA,OAAO,EACH,SAAS,EACT,mBAAmB,EACnB,QAAQ,EACR,YAAY,EACf,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAgB,MAAM,wCAAwC,CAAA;AAEhF,OAAO,EAAkB,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,KAAK,EAAU,MAAM,EAAc,MAAM,QAAQ,CAAA;AAChG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAI5C,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,KAAK,CAAC,cAAc,KAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;AAC3C,eAAO,MAAM,cAAc,6CAAiE,CAAA;AAM5F,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,mBAAmB,CAAA;AACvF,MAAM,MAAM,gBAAgB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,cAAc,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;CACpF,CAAA;AAED,eAAO,MAAM,gBAAgB,iDAA8D,CAAA;AAuB3F,eAAO,MAAM,UAAU,QAAS;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC,8DAaA,CAAA;AAaD,eAAO,MAAM,cAAc,YAChB,gBAAgB,KACxB,EAAE,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,cAAc,GAAG,MAAM,CAuC9D,CAAA;AAKD,eAAO,MAAM,kBAAkB,2CAW7B,CAAA;AAEF,eAAO,MAAM,oBAAoB,+DAQhC,CAAA"}
@@ -1,17 +0,0 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- import type { Principal } from '@passlock/shared/dist/schema/schema.js';
3
- import { Context, Effect as E, Layer as L, Ref } from 'effect';
4
- import type { RequestOptions } from 'https';
5
- import { Config } from '../config/config.js';
6
- import { type PrincipalService } from './principal.js';
7
- export declare const principal: Principal;
8
- export declare const tenancyId = "tenancyId";
9
- export declare const apiKey = "apiKey";
10
- export declare const configTest: L.Layer<Config, never, never>;
11
- declare const State_base: Context.TagClass<State, "State", Ref.Ref<RequestOptions | undefined>>;
12
- export declare class State extends State_base {
13
- }
14
- export declare const buildEffect: <A, E>(assertions: E.Effect<A, E, PrincipalService | State>) => E.Effect<void, E>;
15
- export declare const buildErrorEffect: (statusCode: number) => <A>(assertions: E.Effect<void, A, PrincipalService>) => E.Effect<void, A>;
16
- export {};
17
- //# sourceMappingURL=principal.fixture.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"principal.fixture.d.ts","sourceRoot":"","sources":["../../src/principal/principal.fixture.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAoB,GAAG,EAAgB,MAAM,QAAQ,CAAA;AAC9F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAIH,KAAK,gBAAgB,EACxB,MAAM,gBAAgB,CAAA;AAEvB,eAAO,MAAM,SAAS,EAAE,SAevB,CAAA;AAED,eAAO,MAAM,SAAS,cAAc,CAAA;AACpC,eAAO,MAAM,MAAM,WAAW,CAAA;AAE9B,eAAO,MAAM,UAAU,+BAAsD,CAAA;;AAE7E,qBAAa,KAAM,SAAQ,UAAkE;CAAG;AAEhG,eAAO,MAAM,WAAW,qBACV,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC,KACnD,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAsBlB,CAAA;AAED,eAAO,MAAM,gBAAgB,eACd,MAAM,qBACH,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,gBAAgB,CAAC,KAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAgBrE,CAAA"}
@@ -1,43 +0,0 @@
1
- import { Context, Effect as E, Layer as L, LogLevel, Logger, Ref, Stream, pipe } from 'effect';
2
- import { Config } from '../config/config.js';
3
- import { PrincipalServiceLive, StreamResponse, buildError, } from './principal.js';
4
- export const principal = {
5
- token: 'token',
6
- user: {
7
- id: '1',
8
- email: 'john.doe@gmail.com',
9
- givenName: 'john',
10
- familyName: 'doe',
11
- emailVerified: false,
12
- },
13
- authStatement: {
14
- authType: 'email',
15
- userVerified: false,
16
- authTimestamp: new Date(0),
17
- },
18
- expireAt: new Date(0),
19
- };
20
- export const tenancyId = 'tenancyId';
21
- export const apiKey = 'apiKey';
22
- export const configTest = L.succeed(Config, Config.of({ tenancyId, apiKey }));
23
- export class State extends Context.Tag('State')() {
24
- }
25
- export const buildEffect = (assertions) => {
26
- const responseStreamTest = L.effect(StreamResponse, E.gen(function* (_) {
27
- const ref = yield* _(State);
28
- const buff = Buffer.from(JSON.stringify(principal));
29
- return options => pipe(Stream.fromEffect(Ref.set(ref, options)), Stream.zipRight(Stream.make(buff)));
30
- }));
31
- const service = pipe(PrincipalServiceLive, L.provide(responseStreamTest), L.provide(configTest));
32
- const args = L.effect(State, Ref.make(undefined));
33
- const effect = pipe(E.provide(assertions, service), E.provide(args), Logger.withMinimumLogLevel(LogLevel.None));
34
- return effect;
35
- };
36
- export const buildErrorEffect = (statusCode) => (assertions) => {
37
- const responseStreamTest = L.succeed(StreamResponse, () => Stream.fail(buildError({ statusCode })));
38
- const service = pipe(PrincipalServiceLive, L.provide(responseStreamTest), L.provide(configTest));
39
- const args = L.effect(State, Ref.make(undefined));
40
- const effect = pipe(E.provide(assertions, service), E.provide(args), Logger.withMinimumLogLevel(LogLevel.None));
41
- return effect;
42
- };
43
- //# sourceMappingURL=principal.fixture.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"principal.fixture.js","sourceRoot":"","sources":["../../src/principal/principal.fixture.ts"],"names":[],"mappings":"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"}
@@ -1,77 +0,0 @@
1
- import { Forbidden, InternalServerError, NotFound, Unauthorized, } from '@passlock/shared/dist/error/error.js';
2
- import { Principal, createParser } from '@passlock/shared/dist/schema/schema.js';
3
- import { Chunk, Console, Context, Effect as E, Layer, Option, Stream, flow, pipe } from 'effect';
4
- import * as https from 'https';
5
- import { Config } from '../config/config.js';
6
- export const StreamResponse = Context.GenericTag('@services/ResponseStream');
7
- const parsePrincipal = createParser(Principal);
8
- export const PrincipalService = Context.GenericTag('@services/Principal');
9
- const buildHostname = (endpoint) => {
10
- return new URL(endpoint || 'https://api.passlock.dev').hostname;
11
- };
12
- const buildOptions = (token) => pipe(Config, E.map(({ endpoint, tenancyId, apiKey }) => ({
13
- hostname: buildHostname(endpoint),
14
- port: 443,
15
- path: `/${tenancyId}/token/${token}`,
16
- method: 'GET',
17
- headers: {
18
- 'Accept': 'application/json',
19
- 'Authorization': `Bearer ${apiKey}`,
20
- },
21
- })));
22
- export const buildError = (res) => {
23
- if (res.statusCode === 404)
24
- return new NotFound({ message: 'Invalid token' });
25
- if (res.statusCode === 401)
26
- return new Unauthorized({ message: 'Unauthorized' });
27
- if (res.statusCode === 403)
28
- return new Forbidden({ message: 'Forbidden' });
29
- if (res.statusCode && res.statusMessage)
30
- return new InternalServerError({ message: `${String(res.statusCode)} - ${res.statusMessage}` });
31
- if (res.statusCode)
32
- return new InternalServerError({ message: String(res.statusCode) });
33
- if (res.statusMessage)
34
- return new InternalServerError({ message: res.statusMessage });
35
- return new InternalServerError({ message: 'Received non 200 response' });
36
- };
37
- const fail = (error) => E.fail(Option.some(error));
38
- const succeed = (data) => E.succeed(Chunk.of(data));
39
- const close = E.fail(Option.none());
40
- const buildStream = (token) => pipe(Stream.fromEffect(buildOptions(token)), Stream.zip(StreamResponse), Stream.flatMap(([options, streamResponse]) => streamResponse(options)));
41
- export const fetchPrincipal = (request) => {
42
- const stream = buildStream(request.token);
43
- const json = pipe(Stream.runCollect(stream), E.map(Chunk.toReadonlyArray), E.map(buffers => Buffer.concat(buffers)), E.flatMap(buffer => E.try({
44
- try: () => buffer.toString(),
45
- catch: e => new InternalServerError({
46
- message: 'Unable to convert response to string',
47
- detail: String(e),
48
- }),
49
- })), E.flatMap(buffer => E.try({
50
- try: () => JSON.parse(buffer),
51
- catch: e => new InternalServerError({
52
- message: 'Unable to parse response to json',
53
- detail: String(e),
54
- }),
55
- })), E.flatMap(json => pipe(parsePrincipal(json), E.tapError(error => Console.error(error.detail)), E.mapError(() => new InternalServerError({ message: 'Unable to parse response as Principal' })))));
56
- return json;
57
- };
58
- export const StreamResponseLive = Layer.succeed(StreamResponse, options => {
59
- return Stream.async((emit) => {
60
- https
61
- .request(options, res => {
62
- if (200 !== res.statusCode)
63
- void emit(fail(buildError(res)));
64
- res.on('data', (data) => void emit(succeed(data)));
65
- res.on('close', () => void emit(close));
66
- res.on('error', e => void emit(fail(new InternalServerError({ message: e.message }))));
67
- })
68
- .end();
69
- });
70
- });
71
- export const PrincipalServiceLive = Layer.effect(PrincipalService, E.gen(function* (_) {
72
- const context = yield* _(E.context());
73
- return PrincipalService.of({
74
- fetchPrincipal: flow(fetchPrincipal, E.provide(context)),
75
- });
76
- }));
77
- //# sourceMappingURL=principal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"principal.js","sourceRoot":"","sources":["../../src/principal/principal.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=principal.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"principal.test.d.ts","sourceRoot":"","sources":["../../src/principal/principal.test.ts"],"names":[],"mappings":""}
@@ -1,81 +0,0 @@
1
- import { Forbidden, InternalServerError, NotFound, Unauthorized, } from '@passlock/shared/dist/error/error.js';
2
- import { Effect as E, Effect, Ref } from 'effect';
3
- import { describe, expect, test } from 'vitest';
4
- import * as Fixture from './principal.fixture.js';
5
- import { PrincipalService } from './principal.js';
6
- describe('fetchPrincipal should', () => {
7
- test('return a valid principal', () => {
8
- const assertions = E.gen(function* (_) {
9
- const service = yield* _(PrincipalService);
10
- const result = yield* _(service.fetchPrincipal({ token: 'token' }));
11
- expect(result).toEqual(Fixture.principal);
12
- });
13
- const effect = Fixture.buildEffect(assertions);
14
- return E.runPromise(effect);
15
- });
16
- test('call the correct url', () => {
17
- const assertions = E.gen(function* (_) {
18
- const service = yield* _(PrincipalService);
19
- yield* _(service.fetchPrincipal({ token: 'myToken' }));
20
- const state = yield* _(Fixture.State);
21
- const args = yield* _(Ref.get(state));
22
- expect(args?.hostname).toEqual('api.passlock.dev');
23
- expect(args?.method).toEqual('GET');
24
- expect(args?.path).toEqual(`/${Fixture.tenancyId}/token/myToken`);
25
- });
26
- const effect = Fixture.buildEffect(assertions);
27
- return E.runPromise(effect);
28
- });
29
- test('pass the api key as a header', () => {
30
- const assertions = E.gen(function* (_) {
31
- const service = yield* _(PrincipalService);
32
- yield* _(service.fetchPrincipal({ token: 'myToken' }));
33
- const state = yield* _(Fixture.State);
34
- const args = yield* _(Ref.get(state));
35
- expect(args?.headers?.['Authorization']).toEqual(`Bearer ${Fixture.apiKey}`);
36
- });
37
- const effect = Fixture.buildEffect(assertions);
38
- return E.runPromise(effect);
39
- });
40
- test('propagate a 401 error', () => {
41
- const assertions = E.gen(function* (_) {
42
- const service = yield* _(PrincipalService);
43
- const result = service.fetchPrincipal({ token: 'myToken' });
44
- const error = yield* _(Effect.flip(result));
45
- expect(error).toBeInstanceOf(Unauthorized);
46
- });
47
- const effect = Fixture.buildErrorEffect(401)(assertions);
48
- return E.runPromise(effect);
49
- });
50
- test('propagate a 403 error', () => {
51
- const assertions = E.gen(function* (_) {
52
- const service = yield* _(PrincipalService);
53
- const result = service.fetchPrincipal({ token: 'myToken' });
54
- const error = yield* _(Effect.flip(result));
55
- expect(error).toBeInstanceOf(Forbidden);
56
- });
57
- const effect = Fixture.buildErrorEffect(403)(assertions);
58
- return E.runPromise(effect);
59
- });
60
- test('propagate a 404 error', () => {
61
- const assertions = E.gen(function* (_) {
62
- const service = yield* _(PrincipalService);
63
- const result = service.fetchPrincipal({ token: 'myToken' });
64
- const error = yield* _(Effect.flip(result));
65
- expect(error).toBeInstanceOf(NotFound);
66
- });
67
- const effect = Fixture.buildErrorEffect(404)(assertions);
68
- return E.runPromise(effect);
69
- });
70
- test('propagate a 500 error', () => {
71
- const assertions = E.gen(function* (_) {
72
- const service = yield* _(PrincipalService);
73
- const result = service.fetchPrincipal({ token: 'myToken' });
74
- const error = yield* _(Effect.flip(result));
75
- expect(error).toBeInstanceOf(InternalServerError);
76
- });
77
- const effect = Fixture.buildErrorEffect(500)(assertions);
78
- return E.runPromise(effect);
79
- });
80
- });
81
- //# sourceMappingURL=principal.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"principal.test.js","sourceRoot":"","sources":["../../src/principal/principal.test.ts"],"names":[],"mappings":"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"}