@feasibleone/blong-login 1.8.0 → 1.9.0

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.
Files changed (51) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +2 -2
  3. package/dist/browser.d.ts +0 -5
  4. package/dist/browser.d.ts.map +0 -1
  5. package/dist/browser.js +0 -15
  6. package/dist/browser.js.map +0 -1
  7. package/dist/gateway/login/login.oidc.getConfiguration.d.ts +0 -3
  8. package/dist/gateway/login/login.oidc.getConfiguration.d.ts.map +0 -1
  9. package/dist/gateway/login/login.oidc.getConfiguration.js +0 -10
  10. package/dist/gateway/login/login.oidc.getConfiguration.js.map +0 -1
  11. package/dist/gateway/login/login.oidc.getKeys.d.ts +0 -3
  12. package/dist/gateway/login/login.oidc.getKeys.d.ts.map +0 -1
  13. package/dist/gateway/login/login.oidc.getKeys.js +0 -10
  14. package/dist/gateway/login/login.oidc.getKeys.js.map +0 -1
  15. package/dist/gateway/login/login.token.create.d.ts +0 -3
  16. package/dist/gateway/login/login.token.create.d.ts.map +0 -1
  17. package/dist/gateway/login/login.token.create.js +0 -12
  18. package/dist/gateway/login/login.token.create.js.map +0 -1
  19. package/dist/orchestrator/login/loginOidcGetConfiguration.d.ts +0 -3
  20. package/dist/orchestrator/login/loginOidcGetConfiguration.d.ts.map +0 -1
  21. package/dist/orchestrator/login/loginOidcGetConfiguration.js +0 -25
  22. package/dist/orchestrator/login/loginOidcGetConfiguration.js.map +0 -1
  23. package/dist/orchestrator/login/loginOidcGetKeys.d.ts +0 -3
  24. package/dist/orchestrator/login/loginOidcGetKeys.d.ts.map +0 -1
  25. package/dist/orchestrator/login/loginOidcGetKeys.js +0 -5
  26. package/dist/orchestrator/login/loginOidcGetKeys.js.map +0 -1
  27. package/dist/orchestrator/login/loginTokenCreate.d.ts +0 -3
  28. package/dist/orchestrator/login/loginTokenCreate.d.ts.map +0 -1
  29. package/dist/orchestrator/login/loginTokenCreate.js +0 -19
  30. package/dist/orchestrator/login/loginTokenCreate.js.map +0 -1
  31. package/dist/orchestrator/login/refresh.d.ts +0 -9
  32. package/dist/orchestrator/login/refresh.d.ts.map +0 -1
  33. package/dist/orchestrator/login/refresh.js +0 -16
  34. package/dist/orchestrator/login/refresh.js.map +0 -1
  35. package/dist/orchestrator/login/token.d.ts +0 -10
  36. package/dist/orchestrator/login/token.d.ts.map +0 -1
  37. package/dist/orchestrator/login/token.js +0 -59
  38. package/dist/orchestrator/login/token.js.map +0 -1
  39. package/dist/orchestrator/loginDispatch.d.ts +0 -9
  40. package/dist/orchestrator/loginDispatch.d.ts.map +0 -1
  41. package/dist/orchestrator/loginDispatch.js +0 -17
  42. package/dist/orchestrator/loginDispatch.js.map +0 -1
  43. package/dist/package.json +0 -46
  44. package/dist/server.d.ts +0 -34
  45. package/dist/server.d.ts.map +0 -1
  46. package/dist/server.js +0 -74
  47. package/dist/server.js.map +0 -1
  48. package/dist/test/test/testUserAdminLogin.d.ts +0 -3
  49. package/dist/test/test/testUserAdminLogin.d.ts.map +0 -1
  50. package/dist/test/test/testUserAdminLogin.js +0 -12
  51. package/dist/test/test/testUserAdminLogin.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.9.0](https://github.com/feasibleone/blong/compare/blong-login-v1.8.0...blong-login-v1.9.0) (2026-08-19)
4
+
5
+
6
+ ### Features
7
+
8
+ * redis adapter and blong-gateway ([c28a68f](https://github.com/feasibleone/blong/commit/c28a68f5f9cfc2398771cca05c4366efc147eb6e))
9
+ * self registration ([20f3791](https://github.com/feasibleone/blong/commit/20f3791c453d0f6f4cbf28c2e3af1fbb959a8d0d))
10
+
3
11
  ## [1.8.0](https://github.com/feasibleone/blong/compare/blong-login-v1.7.0...blong-login-v1.8.0) (2026-07-14)
4
12
 
5
13
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feasibleone/blong-login",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "Login and authentication utilities for the Blong framework",
5
5
  "keywords": [
6
6
  "blong",
@@ -33,7 +33,7 @@
33
33
  "@rushstack/heft-typescript-plugin": "^1.3.1",
34
34
  "@types/ut-function.cbc": "file:./types/ut-function.cbc",
35
35
  "typescript": "^6.0.3",
36
- "@feasibleone/blong-dev": "1.1.0"
36
+ "@feasibleone/blong-dev": "1.2.0"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@feasibleone/blong": "^1.0.0"
package/dist/browser.d.ts DELETED
@@ -1,5 +0,0 @@
1
- declare const _default: import("@feasibleone/blong").SolutionFactory<import("typebox").TObject<{}>> & {
2
- [x: symbol]: "solution";
3
- };
4
- export default _default;
5
- //# sourceMappingURL=browser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../browser.ts"],"names":[],"mappings":";;;AAEA,wBAYI"}
package/dist/browser.js DELETED
@@ -1,15 +0,0 @@
1
- import { realm } from '@feasibleone/blong';
2
- export default realm(blong => ({
3
- url: import.meta.url,
4
- validation: blong.type.Object({}),
5
- children: ['./test'],
6
- config: {
7
- default: {},
8
- dev: {},
9
- microservice: {},
10
- integration: {
11
- test: true,
12
- },
13
- },
14
- }));
15
- //# sourceMappingURL=browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAC;AAEzC,eAAe,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;IACpB,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACpB,MAAM,EAAE;QACJ,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,EAAE;QACP,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE;YACT,IAAI,EAAE,IAAI;SACb;KACJ;CACJ,CAAC,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- declare const _default: import("@feasibleone/blong").ValidationDefinition<Record<string, unknown>>;
2
- export default _default;
3
- //# sourceMappingURL=login.oidc.getConfiguration.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.oidc.getConfiguration.d.ts","sourceRoot":"","sources":["../../../gateway/login/login.oidc.getConfiguration.ts"],"names":[],"mappings":";AAEA,wBAUE"}
@@ -1,10 +0,0 @@
1
- import { validation } from '@feasibleone/blong';
2
- export default validation(async () => function loginOidcGetConfiguration() {
3
- return {
4
- security: true,
5
- method: 'GET',
6
- path: '/.well-known/openid-configuration',
7
- auth: false,
8
- };
9
- });
10
- //# sourceMappingURL=login.oidc.getConfiguration.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.oidc.getConfiguration.js","sourceRoot":"","sources":["../../../gateway/login/login.oidc.getConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAE9C,eAAe,UAAU,CACrB,KAAK,IAAI,EAAE,CACP,SAAS,yBAAyB;IAC9B,OAAO;QACH,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,mCAAmC;QACzC,IAAI,EAAE,KAAK;KACd,CAAC;AACN,CAAC,CACR,CAAC"}
@@ -1,3 +0,0 @@
1
- declare const _default: import("@feasibleone/blong").ValidationDefinition<Record<string, unknown>>;
2
- export default _default;
3
- //# sourceMappingURL=login.oidc.getKeys.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.oidc.getKeys.d.ts","sourceRoot":"","sources":["../../../gateway/login/login.oidc.getKeys.ts"],"names":[],"mappings":";AAEA,wBAUE"}
@@ -1,10 +0,0 @@
1
- import { validation } from '@feasibleone/blong';
2
- export default validation(async () => function loginOidcGetKeys() {
3
- return {
4
- security: true,
5
- method: 'GET',
6
- path: '/jwks/:kid?',
7
- auth: false,
8
- };
9
- });
10
- //# sourceMappingURL=login.oidc.getKeys.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.oidc.getKeys.js","sourceRoot":"","sources":["../../../gateway/login/login.oidc.getKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAE9C,eAAe,UAAU,CACrB,KAAK,IAAI,EAAE,CACP,SAAS,gBAAgB;IACrB,OAAO;QACH,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,KAAK;KACd,CAAC;AACN,CAAC,CACR,CAAC"}
@@ -1,3 +0,0 @@
1
- declare const _default: import("@feasibleone/blong").ValidationDefinition<Record<string, unknown>>;
2
- export default _default;
3
- //# sourceMappingURL=login.token.create.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.token.create.d.ts","sourceRoot":"","sources":["../../../gateway/login/login.token.create.ts"],"names":[],"mappings":";AAEA,wBAYE"}
@@ -1,12 +0,0 @@
1
- import { validation } from '@feasibleone/blong';
2
- export default validation(async ({ lib: { type } }) => function loginTokenCreate() {
3
- return {
4
- auth: 'login',
5
- params: type.Object({
6
- username: type.String(),
7
- password: type.String(),
8
- }),
9
- result: type.Object({}, { additionalProperties: true }),
10
- };
11
- });
12
- //# sourceMappingURL=login.token.create.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.token.create.js","sourceRoot":"","sources":["../../../gateway/login/login.token.create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAE9C,eAAe,UAAU,CACrB,KAAK,EAAE,EAAC,GAAG,EAAE,EAAC,IAAI,EAAC,EAAC,EAAE,EAAE,CACpB,SAAS,gBAAgB;IACrB,OAAO;QACH,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;YAChB,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;YACvB,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;SAC1B,CAAC;QACF,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAC,oBAAoB,EAAE,IAAI,EAAC,CAAC;KACxD,CAAC;AACN,CAAC,CACR,CAAC"}
@@ -1,3 +0,0 @@
1
- declare const _default: import("@feasibleone/blong").Definition<Record<string, unknown>, import("@feasibleone/blong").AdapterContext>;
2
- export default _default;
3
- //# sourceMappingURL=loginOidcGetConfiguration.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loginOidcGetConfiguration.d.ts","sourceRoot":"","sources":["../../../orchestrator/login/loginOidcGetConfiguration.ts"],"names":[],"mappings":";AAEA,wBA4BE"}
@@ -1,25 +0,0 @@
1
- import { handler } from '@feasibleone/blong';
2
- export default handler(() => function loginOidcGetConfiguration(params, { httpRequest: { url: urlRequest, headers } = { url: '', headers: {} } }) {
3
- const url = new URL(urlRequest);
4
- if (headers['x-forwarded-host']) {
5
- url.port = ''; // WTF WHATWG!
6
- url.host =
7
- typeof headers['x-forwarded-host'] === 'string'
8
- ? headers['x-forwarded-host']
9
- : headers['x-forwarded-host'][0];
10
- if (headers['x-forwarded-proto'])
11
- url.protocol =
12
- typeof headers['x-forwarded-proto'] === 'string'
13
- ? headers['x-forwarded-proto']
14
- : headers['x-forwarded-proto'][0];
15
- }
16
- return {
17
- issuer: 'blong-login',
18
- id_token_signing_alg_values_supported: ['RS256'],
19
- code_challenge_methods_supported: ['S256'],
20
- authorization_endpoint: new URL('../form', url.href).href,
21
- token_endpoint: new URL('../token', url.href).href,
22
- jwks_uri: new URL('../jwks', url.href).href,
23
- };
24
- });
25
- //# sourceMappingURL=loginOidcGetConfiguration.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loginOidcGetConfiguration.js","sourceRoot":"","sources":["../../../orchestrator/login/loginOidcGetConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAEvD,eAAe,OAAO,CAClB,GAAG,EAAE,CACD,SAAS,yBAAyB,CAC9B,MAAe,EACf,EAAC,WAAW,EAAE,EAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAC,GAAG,EAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAC,EAAQ;IAEzE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,cAAc;QAC7B,GAAG,CAAC,IAAI;YACJ,OAAO,OAAO,CAAC,kBAAkB,CAAC,KAAK,QAAQ;gBAC3C,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;gBAC7B,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,mBAAmB,CAAC;YAC5B,GAAG,CAAC,QAAQ;gBACR,OAAO,OAAO,CAAC,mBAAmB,CAAC,KAAK,QAAQ;oBAC5C,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;oBAC9B,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,OAAO;QACH,MAAM,EAAE,aAAa;QACrB,qCAAqC,EAAE,CAAC,OAAO,CAAC;QAChD,gCAAgC,EAAE,CAAC,MAAM,CAAC;QAC1C,sBAAsB,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI;QACzD,cAAc,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI;QAClD,QAAQ,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI;KAC9C,CAAC;AACN,CAAC,CACR,CAAC"}
@@ -1,3 +0,0 @@
1
- declare const _default: import("@feasibleone/blong").Definition<Record<string, unknown>, import("@feasibleone/blong").AdapterContext>;
2
- export default _default;
3
- //# sourceMappingURL=loginOidcGetKeys.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loginOidcGetKeys.d.ts","sourceRoot":"","sources":["../../../orchestrator/login/loginOidcGetKeys.ts"],"names":[],"mappings":";AAEA,wBAMI"}
@@ -1,5 +0,0 @@
1
- import { handler } from '@feasibleone/blong';
2
- export default handler(({ lib: { jwks } }) => ({
3
- loginOidcGetKeys: jwks
4
- }));
5
- //# sourceMappingURL=loginOidcGetKeys.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loginOidcGetKeys.js","sourceRoot":"","sources":["../../../orchestrator/login/loginOidcGetKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,eAAe,OAAO,CAAC,CAAC,EACpB,GAAG,EAAE,EACD,IAAI,EACP,EACJ,EAAE,EAAE,CAAC,CAAC;IACH,gBAAgB,EAAE,IAAI;CACzB,CAAC,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- declare const _default: import("@feasibleone/blong").Definition<Record<string, unknown>, import("@feasibleone/blong").AdapterContext>;
2
- export default _default;
3
- //# sourceMappingURL=loginTokenCreate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loginTokenCreate.d.ts","sourceRoot":"","sources":["../../../orchestrator/login/loginTokenCreate.ts"],"names":[],"mappings":";AAQA,wBAyBE"}
@@ -1,19 +0,0 @@
1
- import { handler } from '@feasibleone/blong';
2
- export default handler(({ lib: { token }, handler: { accessCredentialCheck } }) => async function loginTokenCreate({ username, password }, $meta) {
3
- const { userId, permissionMap, actions } = (await accessCredentialCheck({ username, password },
4
- // Forward $meta for tracing – the handler proxy attaches
5
- // the method name and routing info automatically.
6
- $meta));
7
- return token({
8
- clientId: username,
9
- actorId: userId,
10
- sessionId: 'session',
11
- language: 'en',
12
- refresh: '',
13
- permissionMap,
14
- mlek: $meta?.auth?.mlek,
15
- mlsk: $meta?.auth?.mlsk,
16
- actions,
17
- });
18
- });
19
- //# sourceMappingURL=loginTokenCreate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loginTokenCreate.js","sourceRoot":"","sources":["../../../orchestrator/login/loginTokenCreate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAQvD,eAAe,OAAO,CAClB,CAAC,EAAC,GAAG,EAAE,EAAC,KAAK,EAAC,EAAE,OAAO,EAAE,EAAC,qBAAqB,EAAC,EAAC,EAAE,EAAE,CACjD,KAAK,UAAU,gBAAgB,CAC3B,EAAC,QAAQ,EAAE,QAAQ,EAAuC,EAC1D,KAAY;IAEZ,MAAM,EAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAC,GAAG,CAAC,MAAM,qBAAqB,CACjE,EAAC,QAAQ,EAAE,QAAQ,EAAC;IACpB,yDAAyD;IACzD,kDAAkD;IAClD,KAAK,CACR,CAA0B,CAAC;IAE5B,OAAO,KAAK,CAAC;QACT,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,MAAM;QACf,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,EAAE;QACX,aAAa;QACb,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI;QACvB,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI;QACvB,OAAO;KACV,CAAC,CAAC;AACP,CAAC,CACR,CAAC"}
@@ -1,9 +0,0 @@
1
- import cbc from 'ut-function.cbc';
2
- declare const _default: import("@feasibleone/blong").Lib<{
3
- keys: {
4
- refresh: string;
5
- refreshCbc: ReturnType<typeof cbc>;
6
- };
7
- }>;
8
- export default _default;
9
- //# sourceMappingURL=refresh.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../orchestrator/login/refresh.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,iBAAiB,CAAC;;UAEJ;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAC,OAAO,GAAG,CAAC,CAAA;KAAC;;AAAnF,wBAkBE"}
@@ -1,16 +0,0 @@
1
- import { library } from '@feasibleone/blong';
2
- import cbc from 'ut-function.cbc';
3
- export default library(({ config: { keys: { refresh, refreshCbc = cbc(refresh) }, }, handler: { errorLoginRefreshTokenExpired }, }) => ({
4
- writeRefresh(params) {
5
- return refreshCbc
6
- .encrypt(JSON.stringify({ ...params, expire: Date.now() + params.refresh * 1000 }))
7
- .toString('base64');
8
- },
9
- readRefresh(token) {
10
- const result = JSON.parse(refreshCbc.decrypt(Buffer.from(token, 'base64')));
11
- if (result.expire <= Date.now())
12
- throw errorLoginRefreshTokenExpired();
13
- return result;
14
- },
15
- }));
16
- //# sourceMappingURL=refresh.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../orchestrator/login/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAC3C,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAElC,eAAe,OAAO,CAClB,CAAC,EACG,MAAM,EAAE,EACJ,IAAI,EAAE,EAAC,OAAO,EAAE,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,EAAC,GAC7C,EACD,OAAO,EAAE,EAAC,6BAA6B,EAAC,GAC3C,EAAE,EAAE,CAAC,CAAC;IACH,YAAY,CAAC,MAAyB;QAClC,OAAO,UAAU;aACZ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,EAAC,CAAC,CAAC;aAChF,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,WAAW,CAAC,KAAa;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE;YAAE,MAAM,6BAA6B,EAAE,CAAC;QACvE,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ,CAAC,CACL,CAAC"}
@@ -1,10 +0,0 @@
1
- import { type JWK } from 'jose';
2
- declare const _default: import("@feasibleone/blong").Lib<{
3
- keys: {
4
- access: JWK;
5
- id: JWK;
6
- };
7
- expire: Record<string, number>;
8
- }>;
9
- export default _default;
10
- //# sourceMappingURL=token.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../orchestrator/login/token.ts"],"names":[],"mappings":"AACA,OAAO,EAAgE,KAAK,GAAG,EAAC,MAAM,MAAM,CAAC;;UAGnF;QACF,MAAM,EAAE,GAAG,CAAC;QACZ,EAAE,EAAE,GAAG,CAAC;KACX;YACO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;AALlC,wBAuFE"}
@@ -1,59 +0,0 @@
1
- import { library } from '@feasibleone/blong';
2
- import { SignJWT, calculateJwkThumbprint, createLocalJWKSet, importJWK } from 'jose';
3
- export default library(async ({ config: { keys: { access, id }, expire, }, lib: { writeRefresh }, gateway, }) => {
4
- const alg = access.alg || 'EdDSA';
5
- const kid = access.kid || (await calculateJwkThumbprint(access));
6
- const keyAccessToken = await importJWK(access, alg);
7
- const jwks = {
8
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
- keys: [access, id].filter(Boolean).map(({ d, p, q, dp, dq, qi, ...pub }) => pub),
10
- };
11
- const keyStore = createLocalJWKSet(jwks);
12
- const { public: keys } = gateway.config();
13
- return {
14
- async jwks(header = {}, token) {
15
- return Object.keys(header).length ? keyStore(header, token) : jwks;
16
- },
17
- async token({ clientId, actorId, sessionId, permissionMap, mlek, mlsk, refresh, actions, ...rest }) {
18
- if (!refresh || refresh > expire.refresh)
19
- refresh = expire.refresh;
20
- refresh = expire.never || refresh;
21
- const access = expire.never || (expire.access > refresh ? refresh : expire.access);
22
- return {
23
- encrypt: keys.encrypt,
24
- sign: keys.sign,
25
- token_type: 'Bearer',
26
- scope: 'openid',
27
- access_token: await new SignJWT({
28
- ...rest,
29
- typ: 'Bearer',
30
- ses: sessionId,
31
- per: permissionMap,
32
- ...(mlek && { enc: mlek }),
33
- ...(mlsk && { sig: mlsk }),
34
- })
35
- .setProtectedHeader({ alg, kid })
36
- .setIssuedAt()
37
- .setSubject(String(actorId))
38
- .setIssuer('blong-login')
39
- .setAudience('blong')
40
- .setExpirationTime(access + 's')
41
- .sign(keyAccessToken),
42
- expires_in: access,
43
- refresh_token: writeRefresh({
44
- actorId,
45
- sessionId,
46
- clientId,
47
- mlsk,
48
- mlek,
49
- refresh,
50
- actions,
51
- ...rest,
52
- }),
53
- refresh_token_expires_in: refresh,
54
- permissions: actions ?? true,
55
- };
56
- },
57
- };
58
- });
59
- //# sourceMappingURL=token.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../orchestrator/login/token.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- declare const _default: import("@feasibleone/blong").IAdapterFactory<{
2
- namespace: "login";
3
- imports: string[];
4
- validations: string[];
5
- }, import("@feasibleone/blong").AdapterContext> & {
6
- [x: symbol]: "orchestrator";
7
- };
8
- export default _default;
9
- //# sourceMappingURL=loginDispatch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loginDispatch.d.ts","sourceRoot":"","sources":["../../orchestrator/loginDispatch.ts"],"names":[],"mappings":";;;;;;;AAEA,wBAcI"}
@@ -1,17 +0,0 @@
1
- import { orchestrator } from '@feasibleone/blong';
2
- export default orchestrator(blong => ({
3
- extends: 'orchestrator.dispatch',
4
- validation: blong.type.Object({
5
- namespace: blong.type.String(),
6
- imports: blong.type.Array(blong.type.String()),
7
- validations: blong.type.Array(blong.type.String()),
8
- }),
9
- activation: {
10
- default: {
11
- namespace: 'login',
12
- imports: ['login.login'],
13
- validations: ['login.login.validation'],
14
- },
15
- },
16
- }));
17
- //# sourceMappingURL=loginDispatch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loginDispatch.js","sourceRoot":"","sources":["../../orchestrator/loginDispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAEhD,eAAe,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClC,OAAO,EAAE,uBAAuB;IAChC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QAC1B,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;QAC9B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9C,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;KACrD,CAAC;IACF,UAAU,EAAE;QACR,OAAO,EAAE;YACL,SAAS,EAAE,OAAO;YAClB,OAAO,EAAE,CAAC,aAAa,CAAC;YACxB,WAAW,EAAE,CAAC,wBAAwB,CAAC;SAC1C;KACJ;CACJ,CAAC,CAAC,CAAC"}
package/dist/package.json DELETED
@@ -1,46 +0,0 @@
1
- {
2
- "name": "@feasibleone/blong-login",
3
- "version": "1.8.0",
4
- "description": "Login and authentication utilities for the Blong framework",
5
- "keywords": [
6
- "blong",
7
- "rad",
8
- "framework"
9
- ],
10
- "repository": {
11
- "url": "git+https://github.com/feasibleone/blong.git"
12
- },
13
- "type": "module",
14
- "exports": {
15
- "./server.js": "./dist/server.js",
16
- "./server.d.ts": "./dist/server.d.ts",
17
- "./server.ts": "./server.ts",
18
- "./browser.js": "./dist/browser.js",
19
- "./browser.d.ts": "./dist/browser.d.ts",
20
- "./browser.ts": "./browser.ts",
21
- "./dist/package.json": "./package.json",
22
- "./package.json": "./package.json"
23
- },
24
- "scripts": {
25
- "build": "heft build --clean",
26
- "ci-lint": "blong-dev lint",
27
- "ci-publish": "node ../../common/scripts/install-run-rush-pnpm.js publish --access public --provenance"
28
- },
29
- "dependencies": {
30
- "jose": "^6.2.1",
31
- "typebox": "^1.1.5",
32
- "ut-function.cbc": "^1.1.6"
33
- },
34
- "devDependencies": {
35
- "@feasibleone/blong": "workspace:^1.0.0",
36
- "@feasibleone/blong-dev": "workspace:*",
37
- "@rushstack/heft": "^1.2.6",
38
- "@rushstack/heft-lint-plugin": "^1.2.6",
39
- "@rushstack/heft-typescript-plugin": "^1.3.1",
40
- "@types/ut-function.cbc": "file:./types/ut-function.cbc",
41
- "typescript": "^6.0.3"
42
- },
43
- "peerDependencies": {
44
- "@feasibleone/blong": "^1.0.0"
45
- }
46
- }
package/dist/server.d.ts DELETED
@@ -1,34 +0,0 @@
1
- declare const _default: import("@feasibleone/blong").SolutionFactory<import("typebox").TObject<{
2
- login: import("typebox").TObject<{
3
- expire: import("typebox").TObject<{
4
- code: import("typebox").TNumber;
5
- access: import("typebox").TNumber;
6
- cookie: import("typebox").TNumber;
7
- refresh: import("typebox").TNumber;
8
- nonce: import("typebox").TNumber;
9
- }>;
10
- cookie: import("typebox").TObject<{
11
- encoding: import("typebox").TString;
12
- isSecure: import("typebox").TBoolean;
13
- isHttpOnly: import("typebox").TBoolean;
14
- clearInvalid: import("typebox").TBoolean;
15
- strictHeader: import("typebox").TBoolean;
16
- }>;
17
- keys: import("typebox").TObject<{
18
- refresh: import("typebox").TString;
19
- access: import("typebox").TObject<{
20
- crv: import("typebox").TString;
21
- x: import("typebox").TString;
22
- d: import("typebox").TString;
23
- kty: import("typebox").TString;
24
- kid: import("typebox").TString;
25
- use: import("typebox").TString;
26
- alg: import("typebox").TString;
27
- }>;
28
- }>;
29
- }>;
30
- }>> & {
31
- [x: symbol]: "solution";
32
- };
33
- export default _default;
34
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBAuEI"}
package/dist/server.js DELETED
@@ -1,74 +0,0 @@
1
- import { realm } from '@feasibleone/blong';
2
- export default realm(blong => ({
3
- url: import.meta.url,
4
- validation: blong.type.Object({
5
- login: blong.type.Object({
6
- expire: blong.type.Object({
7
- code: blong.type.Number(),
8
- access: blong.type.Number(),
9
- cookie: blong.type.Number(),
10
- refresh: blong.type.Number(),
11
- nonce: blong.type.Number(),
12
- }),
13
- cookie: blong.type.Object({
14
- encoding: blong.type.String(),
15
- isSecure: blong.type.Boolean(),
16
- isHttpOnly: blong.type.Boolean(),
17
- clearInvalid: blong.type.Boolean(),
18
- strictHeader: blong.type.Boolean(),
19
- }),
20
- keys: blong.type.Object({
21
- refresh: blong.type.String(),
22
- access: blong.type.Object({
23
- crv: blong.type.String(),
24
- x: blong.type.String(),
25
- d: blong.type.String(),
26
- kty: blong.type.String(),
27
- kid: blong.type.String(),
28
- use: blong.type.String(),
29
- alg: blong.type.String(),
30
- }),
31
- }),
32
- }),
33
- }),
34
- children: ['./orchestrator', './gateway'],
35
- config: {
36
- default: {
37
- login: {
38
- expire: {
39
- code: 60, // 1 minute
40
- access: 15 * 60, // 15 minutes
41
- cookie: 8 * 60 * 60, // 8 hours
42
- refresh: 8 * 60 * 60, // 8 hours
43
- nonce: 15 * 60, // 15 minute
44
- },
45
- cookie: {
46
- encoding: 'none',
47
- isSecure: true,
48
- isHttpOnly: true,
49
- clearInvalid: false,
50
- strictHeader: true,
51
- },
52
- keys: {
53
- refresh: 'b1226b7ed6c6e5aded611ffb55a26a18154fb2263c8c2ea0974dd63e8e11919b',
54
- access: {
55
- crv: 'Ed25519',
56
- x: 'hhcGW1iHk_YWlNYDxn7P4PGV1N6mPjghBge4O7zterQ',
57
- d: 'KGpSfEzpbelEdQStQBlYmHPkHrG4cEcRx_yJZkRc_qY',
58
- kty: 'OKP',
59
- kid: 'kMfX1WoDc9dWVRugwGh9sSL956JS7yB8jE1ylo71Z-M',
60
- use: 'sig',
61
- alg: 'EdDSA',
62
- },
63
- },
64
- },
65
- },
66
- dev: {},
67
- microservice: {
68
- orchestrator: true,
69
- gateway: true,
70
- },
71
- integration: {},
72
- },
73
- }));
74
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- declare const _default: import("@feasibleone/blong").Definition<Record<string, unknown>, import("@feasibleone/blong").AdapterContext>;
2
- export default _default;
3
- //# sourceMappingURL=testUserAdminLogin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testUserAdminLogin.d.ts","sourceRoot":"","sources":["../../../test/test/testUserAdminLogin.ts"],"names":[],"mappings":";AAEA,wBAUI"}
@@ -1,12 +0,0 @@
1
- import { handler } from '@feasibleone/blong';
2
- export default handler(({ lib: { group } }) => ({
3
- testUserAdminLogin: ({ name = 'login' }) => group(name)([
4
- function createAdmin() {
5
- return { username: 'sa', password: '123' };
6
- },
7
- function loginAdmin() {
8
- return { accessToken: 'xxx' };
9
- },
10
- ]),
11
- }));
12
- //# sourceMappingURL=testUserAdminLogin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testUserAdminLogin.js","sourceRoot":"","sources":["../../../test/test/testUserAdminLogin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAE3C,eAAe,OAAO,CAAC,CAAC,EAAC,GAAG,EAAE,EAAC,KAAK,EAAC,EAAC,EAAE,EAAE,CAAC,CAAC;IACxC,kBAAkB,EAAE,CAAC,EAAC,IAAI,GAAG,OAAO,EAAiB,EAAE,EAAE,CACrD,KAAK,CAAC,IAAI,CAAC,CAAC;QACR,SAAS,WAAW;YAChB,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC;QAC7C,CAAC;QACD,SAAS,UAAU;YACf,OAAO,EAAC,WAAW,EAAE,KAAK,EAAC,CAAC;QAChC,CAAC;KACJ,CAAC;CACT,CAAC,CAAC,CAAC"}