@passlock/node 0.9.21 → 0.9.22

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 ADDED
@@ -0,0 +1,51 @@
1
+ <div align="center">
2
+ <a href="https://github.com/passlock-dev/ts-clients">
3
+ <img src="https://github.com/passlock-dev/passkeys-frontend/assets/208345/53ee00d3-8e6c-49ea-b43c-3f901450c73b" alt="Passlock logo" width="80" height="80">
4
+ </a>
5
+ </div>
6
+
7
+ <div>
8
+ <h1 align="center">Passkeys, Social Login & more <br /> for Node.js apps</h1>
9
+ <p align="center">
10
+ Node SDK for Passkey authentication, Social Login using Apple, Google and more...
11
+ <br />
12
+ <a href="https://passlock.dev"><strong>Project website »</strong></a>
13
+ <br />
14
+ <a href="https://github.com/passlock-dev/ts-clients">GitHub</a>
15
+ ·
16
+ <a href="https://passlock.dev/#demo">Demo</a>
17
+ ·
18
+ <a href="https://docs.passlock.dev">Documentation</a>
19
+ ·
20
+ <a href="https://docs.passlock.dev/docs/tutorial/introduction">Tutorial</a>
21
+ </p>
22
+ </div>
23
+
24
+ <br />
25
+
26
+ ## See also
27
+
28
+ For frontend usage please see the accompanying [@passlock/client][client] package
29
+
30
+ ## Requirements
31
+
32
+ Node 16+
33
+
34
+ ## Usage
35
+
36
+ Generate a secure token in your frontend then use this API to obtain the passkey registration or authentication details:
37
+
38
+ ```typescript
39
+ import { Passlock } from '@passlock/node'
40
+
41
+ const passlock = new Passlock({ tenancyId, apiKey })
42
+
43
+ // token comes from your frontend
44
+ const principal = await passlock.fetchPrincipal({ token })
45
+
46
+ // get the user id
47
+ console.log(principal.user.id)
48
+ ```
49
+
50
+ [contact]: https://passlock.dev/contact
51
+ [client]: https://www.npmjs.com/package/@passlock/client
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@passlock/node",
3
3
  "type": "module",
4
- "version": "0.9.21",
5
- "description": "Server side passkey library for node/express",
4
+ "version": "0.9.22",
5
+ "description": "BAckend passkey library for node/express",
6
6
  "keywords": [
7
7
  "passkey",
8
8
  "passkeys",
@@ -15,25 +15,31 @@
15
15
  "email": "toby@passlock.dev"
16
16
  },
17
17
  "license": "MIT",
18
- "homepage": "https://passlock.dev",
19
- "repository": "github.com/passlock-dev/node",
18
+ "homepage": "https://github.com/passlock-dev/ts-clients",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/passlock-dev/ts-clients.git",
22
+ "directory": "packages/node"
23
+ },
20
24
  "bugs": {
21
- "url": "https://github.com/passlock-dev/node/issues",
25
+ "url": "https://github.com/passlock-dev/ts-clients/issues",
22
26
  "email": "team@passlock.dev"
23
27
  },
24
28
  "exports": {
25
29
  ".": {
26
- "import": "./dist/index.js",
27
- "types": "./dist/index.d.ts"
30
+ "types": "./dist/index.d.ts",
31
+ "import": "./dist/index.js"
28
32
  }
29
33
  },
30
34
  "files": [
31
35
  "src",
32
- "dist"
36
+ "dist",
37
+ "!dist/**/*.test.*",
38
+ "!dist/**/*.spec.*"
33
39
  ],
34
40
  "dependencies": {
35
- "effect": "^3.4.8",
36
- "@passlock/shared": "^0.9.21"
41
+ "effect": "3.4.8",
42
+ "@passlock/shared": "0.9.22"
37
43
  },
38
44
  "devDependencies": {
39
45
  "@tsconfig/node18": "^18.2.4",
@@ -47,6 +53,7 @@
47
53
  "eslint-import-resolver-typescript": "^3.6.1",
48
54
  "eslint-plugin-import": "^2.29.1",
49
55
  "prettier": "^3.3.2",
56
+ "publint": "^0.1.9",
50
57
  "rimraf": "^5.0.8",
51
58
  "tsx": "^4.16.2",
52
59
  "typescript": "^5.5.3",
@@ -60,7 +67,7 @@
60
67
  "test:watch": "vitest dev",
61
68
  "test:ui": "vitest --coverage.enabled=true --ui",
62
69
  "test:coverage": "vitest run --coverage",
63
- "build": "tsc --build",
70
+ "build": "tsc --build && publint",
64
71
  "build:clean": "pnpm run clean && pnpm run build",
65
72
  "build:watch": "tsc --build --watch",
66
73
  "format": "prettier --write \"src/**/*.+(js|ts|json)\"",
@@ -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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"}