emilsoftware-utilities 2.0.0-dev.66 → 2.0.0-dev.67

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 (134) hide show
  1. package/dist/EmilsoftwareModule.d.ts +11 -3
  2. package/dist/EmilsoftwareModule.js +1 -1
  3. package/dist/EmilsoftwareModule.js.map +1 -1
  4. package/dist/accessi/client/index.d.ts +26 -0
  5. package/dist/accessi/client/index.js +49 -0
  6. package/dist/accessi/client/index.js.map +1 -0
  7. package/dist/accessi/console/index.d.ts +15 -0
  8. package/dist/accessi/console/index.js +25 -0
  9. package/dist/accessi/console/index.js.map +1 -0
  10. package/dist/accessi/contracts/dtos.d.ts +8 -0
  11. package/dist/accessi/contracts/dtos.js +25 -0
  12. package/dist/accessi/contracts/dtos.js.map +1 -0
  13. package/dist/accessi/contracts/index.d.ts +25 -0
  14. package/dist/accessi/contracts/index.js +28 -0
  15. package/dist/accessi/contracts/index.js.map +1 -0
  16. package/dist/accessi/openapi/index.d.ts +2 -0
  17. package/dist/accessi/openapi/index.js +19 -0
  18. package/dist/accessi/openapi/index.js.map +1 -0
  19. package/dist/accessi/resource-server/core.d.ts +6 -0
  20. package/dist/accessi/resource-server/core.js +23 -0
  21. package/dist/accessi/resource-server/core.js.map +1 -0
  22. package/dist/accessi/resource-server/errors.d.ts +10 -0
  23. package/dist/accessi/resource-server/errors.js +19 -0
  24. package/dist/accessi/resource-server/errors.js.map +1 -0
  25. package/dist/accessi/resource-server/express.d.ts +17 -0
  26. package/dist/accessi/resource-server/express.js +66 -0
  27. package/dist/accessi/resource-server/express.js.map +1 -0
  28. package/dist/accessi/resource-server/index.d.ts +3 -0
  29. package/dist/accessi/resource-server/index.js +20 -0
  30. package/dist/accessi/resource-server/index.js.map +1 -0
  31. package/dist/accessi/resource-server/introspection.d.ts +16 -0
  32. package/dist/accessi/resource-server/introspection.js +115 -0
  33. package/dist/accessi/resource-server/introspection.js.map +1 -0
  34. package/dist/accessi/resource-server/keys.d.ts +11 -0
  35. package/dist/accessi/resource-server/keys.js +22 -0
  36. package/dist/accessi/resource-server/keys.js.map +1 -0
  37. package/dist/accessi/resource-server/nest.d.ts +9 -0
  38. package/dist/accessi/resource-server/nest.js +62 -0
  39. package/dist/accessi/resource-server/nest.js.map +1 -0
  40. package/dist/accessi/resource-server/runtime.d.ts +27 -0
  41. package/dist/accessi/resource-server/runtime.js +128 -0
  42. package/dist/accessi/resource-server/runtime.js.map +1 -0
  43. package/dist/accessi/resource-server/token.d.ts +23 -0
  44. package/dist/accessi/resource-server/token.js +230 -0
  45. package/dist/accessi/resource-server/token.js.map +1 -0
  46. package/dist/accessi/resource-server/types.d.ts +78 -0
  47. package/dist/accessi/resource-server/types.js +3 -0
  48. package/dist/accessi/resource-server/types.js.map +1 -0
  49. package/dist/accessi/server/index.d.ts +10 -0
  50. package/dist/accessi/server/index.js +29 -0
  51. package/dist/accessi/server/index.js.map +1 -0
  52. package/dist/accessi/ui/index.d.ts +13 -0
  53. package/dist/accessi/ui/index.js +19 -0
  54. package/dist/accessi/ui/index.js.map +1 -0
  55. package/dist/accessi-module/AccessiModule.d.ts +25 -1
  56. package/dist/accessi-module/AccessiModule.js +2 -0
  57. package/dist/accessi-module/AccessiModule.js.map +1 -1
  58. package/dist/accessi-module/Console/accessiFetch.d.ts +4 -0
  59. package/dist/accessi-module/Console/accessiFetch.js +18 -4
  60. package/dist/accessi-module/Console/accessiFetch.js.map +1 -1
  61. package/dist/accessi-module/Console/console.js +114 -9
  62. package/dist/accessi-module/Console/console.js.map +1 -1
  63. package/dist/accessi-module/Console/generated/{accessiApi.d.ts → emilsoftware-utilities.d.ts} +11 -1
  64. package/dist/accessi-module/Console/generated/{accessiApi.js → emilsoftware-utilities.js} +10 -2
  65. package/dist/accessi-module/Console/generated/emilsoftware-utilities.js.map +1 -0
  66. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.d.ts +16 -0
  67. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.js +3 -0
  68. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.js.map +1 -0
  69. package/dist/accessi-module/Console/generated/model/index.d.ts +3 -0
  70. package/dist/accessi-module/Console/generated/model/index.js +3 -0
  71. package/dist/accessi-module/Console/generated/model/index.js.map +1 -1
  72. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.d.ts +10 -0
  73. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.js +9 -0
  74. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.js.map +1 -0
  75. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.d.ts +14 -0
  76. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.js +3 -0
  77. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.js.map +1 -0
  78. package/dist/accessi-module/Console/wiki.js +98 -3
  79. package/dist/accessi-module/Console/wiki.js.map +1 -1
  80. package/dist/accessi-module/Controllers/AccessiIntrospectionController.d.ts +17 -0
  81. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js +93 -0
  82. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js.map +1 -0
  83. package/dist/accessi-module/Dtos/IntrospectionDtos.d.ts +16 -0
  84. package/dist/accessi-module/Dtos/IntrospectionDtos.js +59 -0
  85. package/dist/accessi-module/Dtos/IntrospectionDtos.js.map +1 -0
  86. package/dist/accessi-module/Dtos/index.d.ts +1 -0
  87. package/dist/accessi-module/Dtos/index.js +1 -0
  88. package/dist/accessi-module/Dtos/index.js.map +1 -1
  89. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +13 -0
  90. package/dist/accessi-module/Services/AuthService/AuthService.js +42 -10
  91. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  92. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js +11 -4
  93. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js.map +1 -1
  94. package/dist/accessi-module/database-updates/menuScopeSeed.d.ts +2 -2
  95. package/dist/accessi-module/database-updates/menuScopeSeed.js +101 -53
  96. package/dist/accessi-module/database-updates/menuScopeSeed.js.map +1 -1
  97. package/dist/accessi-module/database-updates/menuScopeSeeder.js +1 -1
  98. package/dist/accessi-module/database-updates/menuScopeSeeder.js.map +1 -1
  99. package/dist/accessi-module/index.d.ts +16 -3
  100. package/dist/accessi-module/index.js +15 -19
  101. package/dist/accessi-module/index.js.map +1 -1
  102. package/dist/accessi-module/jwt/jwt.strategy.js +5 -5
  103. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  104. package/dist/accessi-module/middleware/authenticateGen.js +5 -5
  105. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  106. package/dist/accessi-module/security/jwtTokenOptions.d.ts +15 -0
  107. package/dist/accessi-module/security/jwtTokenOptions.js +44 -0
  108. package/dist/accessi-module/security/jwtTokenOptions.js.map +1 -0
  109. package/dist/accessi-module/startupLog.d.ts +3 -2
  110. package/dist/accessi-module/startupLog.js +8 -4
  111. package/dist/accessi-module/startupLog.js.map +1 -1
  112. package/dist/allegati-module/index.js +2 -2
  113. package/dist/allegati-module/index.js.map +1 -1
  114. package/dist/angular-components/aree-disponibili/demo.html +4 -4
  115. package/dist/emilsoftware-utilities-2.0.0-dev.67.tgz +0 -0
  116. package/dist/index.d.ts +2 -1
  117. package/dist/index.js +2 -1
  118. package/dist/index.js.map +1 -1
  119. package/dist/initEmilsoftwareModule.d.ts +11 -1
  120. package/dist/initEmilsoftwareModule.js +11 -23
  121. package/dist/initEmilsoftwareModule.js.map +1 -1
  122. package/dist/openapi/OpenApiConfig.d.ts +68 -0
  123. package/dist/openapi/OpenApiConfig.js +157 -0
  124. package/dist/openapi/OpenApiConfig.js.map +1 -0
  125. package/dist/openapi/OpenApiMerge.d.ts +15 -0
  126. package/dist/openapi/OpenApiMerge.js +119 -0
  127. package/dist/openapi/OpenApiMerge.js.map +1 -0
  128. package/integration-prompt.md +481 -0
  129. package/package.json +88 -5
  130. package/dist/accessi-module/Console/generated/accessiApi.js.map +0 -1
  131. package/dist/emilsoftware-utilities-2.0.0-dev.66.tgz +0 -0
  132. package/dist/swagger/SwaggerConfig.d.ts +0 -8
  133. package/dist/swagger/SwaggerConfig.js +0 -41
  134. package/dist/swagger/SwaggerConfig.js.map +0 -1
@@ -1,7 +1,8 @@
1
1
  import { DynamicModule } from "@nestjs/common";
2
+ import type { LoggerService } from "@nestjs/common";
2
3
  import { AccessiOptions } from "./accessi-module/AccessiModule";
3
4
  import { AllegatiOptions } from "./allegati-module/AllegatiModule";
4
- import type { SwaggerSetupOptions } from "./swagger/SwaggerConfig";
5
+ import type { OpenApiSetupOptions } from "./openapi/OpenApiConfig";
5
6
  /**
6
7
  * Configuration options for the unified module that combines Accessi and Allegati functionality
7
8
  */
@@ -11,12 +12,19 @@ export interface EmilsoftwareOptions {
11
12
  /**
12
13
  * Documentazione OpenAPI del modulo unificato. Default: `accessi/openapi`
13
14
  * (UI) e `accessi/openapi.json` (spec).
15
+ *
16
+ * Precedenza: questo campo vince su `accessiOptions.openapi`, che a sua
17
+ * volta vince sui default storici.
14
18
  */
15
- swagger?: SwaggerSetupOptions;
19
+ openapi?: OpenApiSetupOptions;
20
+ /** Logger Nest usato dal sotto-app unificato. Se assente Nest usa il proprio logger. */
21
+ logger?: LoggerService;
22
+ /** Buffer dei log di bootstrap del sotto-app. Default `true` (comportamento storico). */
23
+ bufferLogs?: boolean;
16
24
  }
17
25
  /**
18
26
  * Unified module that combines user access management (Accessi) and file attachment management (Allegati)
19
- * into a single NestJS module with shared Swagger documentation
27
+ * into a single NestJS module with shared OpenAPI documentation
20
28
  */
21
29
  export declare class EmilsoftwareModule {
22
30
  static forRoot(options: EmilsoftwareOptions): DynamicModule;
@@ -14,7 +14,7 @@ const AllegatiModule_1 = require("./allegati-module/AllegatiModule");
14
14
  const Logger_1 = require("./Logger");
15
15
  /**
16
16
  * Unified module that combines user access management (Accessi) and file attachment management (Allegati)
17
- * into a single NestJS module with shared Swagger documentation
17
+ * into a single NestJS module with shared OpenAPI documentation
18
18
  */
19
19
  let EmilsoftwareModule = EmilsoftwareModule_1 = class EmilsoftwareModule {
20
20
  static forRoot(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"EmilsoftwareModule.js","sourceRoot":"","sources":["../src/EmilsoftwareModule.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,kEAA+E;AAC/E,qEAAmF;AACnF,qCAAkC;AAgBlC;;;GAGG;AAEI,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAC3B,MAAM,CAAC,OAAO,CAAC,OAA4B;QAEvC,MAAM,MAAM,GAAW,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC5F,CAAC;QAGD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,6BAAa,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,6BAAa,CAAC,CAAC;QAChC,CAAC;aACI,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,0EAA0E,CAAC,CAAC;QAC/F,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,+BAAc,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,+BAAc,CAAC,CAAC;QACjC,CAAC;aACI,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,4EAA4E,CAAC,CAAC;QACjG,CAAC;QAED,OAAO;YACH,MAAM,EAAE,oBAAkB;YAC1B,OAAO;YACP,OAAO;SACV,CAAC;IACN,CAAC;CACJ,CAAA;AApCY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,kBAAkB,CAoC9B","sourcesContent":["import { DynamicModule, Module } from \"@nestjs/common\";\nimport { AccessiModule, AccessiOptions } from \"./accessi-module/AccessiModule\";\nimport { AllegatiModule, AllegatiOptions } from \"./allegati-module/AllegatiModule\";\nimport { Logger } from \"./Logger\";\nimport type { SwaggerSetupOptions } from \"./swagger/SwaggerConfig\";\n\n/**\n * Configuration options for the unified module that combines Accessi and Allegati functionality\n */\nexport interface EmilsoftwareOptions {\n accessiOptions: AccessiOptions;\n allegatiOptions: AllegatiOptions;\n /**\n * Documentazione OpenAPI del modulo unificato. Default: `accessi/openapi`\n * (UI) e `accessi/openapi.json` (spec).\n */\n swagger?: SwaggerSetupOptions;\n}\n\n/**\n * Unified module that combines user access management (Accessi) and file attachment management (Allegati)\n * into a single NestJS module with shared Swagger documentation\n */\n@Module({})\nexport class EmilsoftwareModule {\n static forRoot(options: EmilsoftwareOptions): DynamicModule {\n\n const logger: Logger = new Logger(EmilsoftwareModule.name);\n let imports = [];\n let exports = [];\n\n if (!options) {\n throw new Error(\"EmilsoftwareModule requires valid accessiOptions and allegatiOptions\");\n }\n\n\n if (options.accessiOptions) {\n logger.info(\"Initializing AccessiModule with provided options.\");\n imports.push(AccessiModule.forRoot(options.accessiOptions));\n exports.push(AccessiModule);\n }\n else {\n logger.warning(\"Accessi options are not provided. AccessiModule will not be initialized.\");\n }\n\n if (options.allegatiOptions) {\n logger.info(\"Initializing AllegatiModule with provided options.\");\n imports.push(AllegatiModule.forRoot(options.allegatiOptions));\n exports.push(AllegatiModule);\n }\n else {\n logger.warning(\"Allegati options are not provided. AllegatiModule will not be initialized.\");\n }\n\n return {\n module: EmilsoftwareModule,\n imports,\n exports\n };\n }\n} "]}
1
+ {"version":3,"file":"EmilsoftwareModule.js","sourceRoot":"","sources":["../src/EmilsoftwareModule.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AAEvD,kEAA+E;AAC/E,qEAAmF;AACnF,qCAAkC;AAuBlC;;;GAGG;AAEI,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAC3B,MAAM,CAAC,OAAO,CAAC,OAA4B;QAEvC,MAAM,MAAM,GAAW,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC5F,CAAC;QAGD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,6BAAa,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,6BAAa,CAAC,CAAC;QAChC,CAAC;aACI,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,0EAA0E,CAAC,CAAC;QAC/F,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,+BAAc,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,+BAAc,CAAC,CAAC;QACjC,CAAC;aACI,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,4EAA4E,CAAC,CAAC;QACjG,CAAC;QAED,OAAO;YACH,MAAM,EAAE,oBAAkB;YAC1B,OAAO;YACP,OAAO;SACV,CAAC;IACN,CAAC;CACJ,CAAA;AApCY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,kBAAkB,CAoC9B","sourcesContent":["import { DynamicModule, Module } from \"@nestjs/common\";\nimport type { LoggerService } from \"@nestjs/common\";\nimport { AccessiModule, AccessiOptions } from \"./accessi-module/AccessiModule\";\nimport { AllegatiModule, AllegatiOptions } from \"./allegati-module/AllegatiModule\";\nimport { Logger } from \"./Logger\";\nimport type { OpenApiSetupOptions } from \"./openapi/OpenApiConfig\";\n\n/**\n * Configuration options for the unified module that combines Accessi and Allegati functionality\n */\nexport interface EmilsoftwareOptions {\n accessiOptions: AccessiOptions;\n allegatiOptions: AllegatiOptions;\n /**\n * Documentazione OpenAPI del modulo unificato. Default: `accessi/openapi`\n * (UI) e `accessi/openapi.json` (spec).\n *\n * Precedenza: questo campo vince su `accessiOptions.openapi`, che a sua\n * volta vince sui default storici.\n */\n openapi?: OpenApiSetupOptions;\n /** Logger Nest usato dal sotto-app unificato. Se assente Nest usa il proprio logger. */\n logger?: LoggerService;\n /** Buffer dei log di bootstrap del sotto-app. Default `true` (comportamento storico). */\n bufferLogs?: boolean;\n}\n\n/**\n * Unified module that combines user access management (Accessi) and file attachment management (Allegati)\n * into a single NestJS module with shared OpenAPI documentation\n */\n@Module({})\nexport class EmilsoftwareModule {\n static forRoot(options: EmilsoftwareOptions): DynamicModule {\n\n const logger: Logger = new Logger(EmilsoftwareModule.name);\n let imports = [];\n let exports = [];\n\n if (!options) {\n throw new Error(\"EmilsoftwareModule requires valid accessiOptions and allegatiOptions\");\n }\n\n\n if (options.accessiOptions) {\n logger.info(\"Initializing AccessiModule with provided options.\");\n imports.push(AccessiModule.forRoot(options.accessiOptions));\n exports.push(AccessiModule);\n }\n else {\n logger.warning(\"Accessi options are not provided. AccessiModule will not be initialized.\");\n }\n\n if (options.allegatiOptions) {\n logger.info(\"Initializing AllegatiModule with provided options.\");\n imports.push(AllegatiModule.forRoot(options.allegatiOptions));\n exports.push(AllegatiModule);\n }\n else {\n logger.warning(\"Allegati options are not provided. AllegatiModule will not be initialized.\");\n }\n\n return {\n module: EmilsoftwareModule,\n imports,\n exports\n };\n }\n} "]}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Client HTTP generato dal contratto OpenAPI di Accessi.
3
+ *
4
+ * Il client e pensato per essere usato da backend fratelli, frontend e tool
5
+ * amministrativi. Configurare base URL e token provider prima della prima call.
6
+ */
7
+ export * from "../../accessi-module/Console/generated/emilsoftware-utilities";
8
+ export * from "../../accessi-module/Console/generated/model";
9
+ export { AccessiRequestError } from "../../accessi-module/Console/accessiFetch";
10
+ export { ACCESSI_UNAUTHORIZED_EVENT, setAccessiFetchBaseUrl, setAccessiFetchTokenProvider, } from "../../accessi-module/Console/accessiFetch";
11
+ /** Configurazione globale del client. */
12
+ export interface AccessiClientConfig {
13
+ /** Base URL di Accessi Service, es. `https://accessi.example.com`. */
14
+ baseUrl?: string | null;
15
+ /** Token statico. Preferire `getToken` per token che cambiano nel tempo. */
16
+ token?: string | null;
17
+ /** Provider asincrono/sincrono del token corrente. */
18
+ getToken?: () => string | null | Promise<string | null>;
19
+ }
20
+ /**
21
+ * Configura il trasporto del client generato.
22
+ *
23
+ * Uso tipico backend: `configureAccessiClient({ baseUrl, getToken })`.
24
+ * Uso tipico frontend: `configureAccessiClient({ baseUrl, token })` dopo il login.
25
+ */
26
+ export declare function configureAccessiClient(config?: AccessiClientConfig): void;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.setAccessiFetchTokenProvider = exports.setAccessiFetchBaseUrl = exports.ACCESSI_UNAUTHORIZED_EVENT = exports.AccessiRequestError = void 0;
18
+ exports.configureAccessiClient = configureAccessiClient;
19
+ /**
20
+ * Client HTTP generato dal contratto OpenAPI di Accessi.
21
+ *
22
+ * Il client e pensato per essere usato da backend fratelli, frontend e tool
23
+ * amministrativi. Configurare base URL e token provider prima della prima call.
24
+ */
25
+ __exportStar(require("../../accessi-module/Console/generated/emilsoftware-utilities"), exports);
26
+ __exportStar(require("../../accessi-module/Console/generated/model"), exports);
27
+ var accessiFetch_1 = require("../../accessi-module/Console/accessiFetch");
28
+ Object.defineProperty(exports, "AccessiRequestError", { enumerable: true, get: function () { return accessiFetch_1.AccessiRequestError; } });
29
+ var accessiFetch_2 = require("../../accessi-module/Console/accessiFetch");
30
+ Object.defineProperty(exports, "ACCESSI_UNAUTHORIZED_EVENT", { enumerable: true, get: function () { return accessiFetch_2.ACCESSI_UNAUTHORIZED_EVENT; } });
31
+ Object.defineProperty(exports, "setAccessiFetchBaseUrl", { enumerable: true, get: function () { return accessiFetch_2.setAccessiFetchBaseUrl; } });
32
+ Object.defineProperty(exports, "setAccessiFetchTokenProvider", { enumerable: true, get: function () { return accessiFetch_2.setAccessiFetchTokenProvider; } });
33
+ const accessiFetch_3 = require("../../accessi-module/Console/accessiFetch");
34
+ /**
35
+ * Configura il trasporto del client generato.
36
+ *
37
+ * Uso tipico backend: `configureAccessiClient({ baseUrl, getToken })`.
38
+ * Uso tipico frontend: `configureAccessiClient({ baseUrl, token })` dopo il login.
39
+ */
40
+ function configureAccessiClient(config = {}) {
41
+ var _a;
42
+ (0, accessiFetch_3.setAccessiFetchBaseUrl)((_a = config.baseUrl) !== null && _a !== void 0 ? _a : null);
43
+ if (config.getToken) {
44
+ (0, accessiFetch_3.setAccessiFetchTokenProvider)(config.getToken);
45
+ return;
46
+ }
47
+ (0, accessiFetch_3.setAccessiFetchTokenProvider)(() => { var _a; return (_a = config.token) !== null && _a !== void 0 ? _a : null; });
48
+ }
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/accessi/client/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAoCA,wDAOC;AA3CD;;;;;GAKG;AACH,gGAA8E;AAC9E,+EAA6D;AAC7D,0EAAgF;AAAvE,mHAAA,mBAAmB,OAAA;AAC5B,0EAImD;AAHjD,0HAAA,0BAA0B,OAAA;AAC1B,sHAAA,sBAAsB,OAAA;AACtB,4HAAA,4BAA4B,OAAA;AAG9B,4EAGmD;AAYnD;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,SAA8B,EAAE;;IACrE,IAAA,qCAAsB,EAAC,MAAA,MAAM,CAAC,OAAO,mCAAI,IAAI,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,IAAA,2CAA4B,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IACD,IAAA,2CAA4B,EAAC,GAAG,EAAE,WAAC,OAAA,MAAA,MAAM,CAAC,KAAK,mCAAI,IAAI,CAAA,EAAA,CAAC,CAAC;AAC3D,CAAC","sourcesContent":["/**\n * Client HTTP generato dal contratto OpenAPI di Accessi.\n *\n * Il client e pensato per essere usato da backend fratelli, frontend e tool\n * amministrativi. Configurare base URL e token provider prima della prima call.\n */\nexport * from \"../../accessi-module/Console/generated/emilsoftware-utilities\";\nexport * from \"../../accessi-module/Console/generated/model\";\nexport { AccessiRequestError } from \"../../accessi-module/Console/accessiFetch\";\nexport {\n ACCESSI_UNAUTHORIZED_EVENT,\n setAccessiFetchBaseUrl,\n setAccessiFetchTokenProvider,\n} from \"../../accessi-module/Console/accessiFetch\";\n\nimport {\n setAccessiFetchBaseUrl,\n setAccessiFetchTokenProvider,\n} from \"../../accessi-module/Console/accessiFetch\";\n\n/** Configurazione globale del client. */\nexport interface AccessiClientConfig {\n /** Base URL di Accessi Service, es. `https://accessi.example.com`. */\n baseUrl?: string | null;\n /** Token statico. Preferire `getToken` per token che cambiano nel tempo. */\n token?: string | null;\n /** Provider asincrono/sincrono del token corrente. */\n getToken?: () => string | null | Promise<string | null>;\n}\n\n/**\n * Configura il trasporto del client generato.\n *\n * Uso tipico backend: `configureAccessiClient({ baseUrl, getToken })`.\n * Uso tipico frontend: `configureAccessiClient({ baseUrl, token })` dopo il login.\n */\nexport function configureAccessiClient(config: AccessiClientConfig = {}): void {\n setAccessiFetchBaseUrl(config.baseUrl ?? null);\n if (config.getToken) {\n setAccessiFetchTokenProvider(config.getToken);\n return;\n }\n setAccessiFetchTokenProvider(() => config.token ?? null);\n}\n"]}
@@ -0,0 +1,15 @@
1
+ /** Path standard della console amministrativa Accessi. */
2
+ export declare const ACCESSI_CONSOLE_PATH = "/api/accessi/console";
3
+ export interface AccessiConsoleUrlOptions {
4
+ /** Ticket monouso ottenuto da `POST /api/accessi/console/entry`. */
5
+ entryTicket?: string;
6
+ /** Challenge 2FA da completare sulla console. */
7
+ twoFactorChallengeId?: string;
8
+ }
9
+ /**
10
+ * Costruisce l'URL della console centrale.
11
+ *
12
+ * Il base URL e quello di Accessi Service (es. `https://accessi.example.com`).
13
+ * Il JWT non passa mai nell'URL: usare `entryTicket` o il flusso 2FA.
14
+ */
15
+ export declare function buildAccessiConsoleUrl(baseUrl: string, options?: AccessiConsoleUrlOptions): string;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ACCESSI_CONSOLE_PATH = void 0;
4
+ exports.buildAccessiConsoleUrl = buildAccessiConsoleUrl;
5
+ /** Path standard della console amministrativa Accessi. */
6
+ exports.ACCESSI_CONSOLE_PATH = "/api/accessi/console";
7
+ /**
8
+ * Costruisce l'URL della console centrale.
9
+ *
10
+ * Il base URL e quello di Accessi Service (es. `https://accessi.example.com`).
11
+ * Il JWT non passa mai nell'URL: usare `entryTicket` o il flusso 2FA.
12
+ */
13
+ function buildAccessiConsoleUrl(baseUrl, options = {}) {
14
+ const base = baseUrl.replace(/\/+$/, "");
15
+ const url = new URL(`${base}${exports.ACCESSI_CONSOLE_PATH}`);
16
+ const fragment = options.entryTicket
17
+ ? `entry=${encodeURIComponent(options.entryTicket)}`
18
+ : options.twoFactorChallengeId
19
+ ? `two-factor=${encodeURIComponent(options.twoFactorChallengeId)}`
20
+ : "";
21
+ if (fragment)
22
+ url.hash = fragment;
23
+ return url.toString();
24
+ }
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/accessi/console/index.ts"],"names":[],"mappings":";;;AAgBA,wDAaC;AA7BD,0DAA0D;AAC7C,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAS3D;;;;;GAKG;AACH,SAAgB,sBAAsB,CACpC,OAAe,EACf,UAAoC,EAAE;IAEtC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,4BAAoB,EAAE,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW;QAClC,CAAC,CAAC,SAAS,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QACpD,CAAC,CAAC,OAAO,CAAC,oBAAoB;YAC5B,CAAC,CAAC,cAAc,kBAAkB,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE;YAClE,CAAC,CAAC,EAAE,CAAC;IACT,IAAI,QAAQ;QAAE,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;IAClC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC","sourcesContent":["/** Path standard della console amministrativa Accessi. */\nexport const ACCESSI_CONSOLE_PATH = \"/api/accessi/console\";\n\nexport interface AccessiConsoleUrlOptions {\n /** Ticket monouso ottenuto da `POST /api/accessi/console/entry`. */\n entryTicket?: string;\n /** Challenge 2FA da completare sulla console. */\n twoFactorChallengeId?: string;\n}\n\n/**\n * Costruisce l'URL della console centrale.\n *\n * Il base URL e quello di Accessi Service (es. `https://accessi.example.com`).\n * Il JWT non passa mai nell'URL: usare `entryTicket` o il flusso 2FA.\n */\nexport function buildAccessiConsoleUrl(\n baseUrl: string,\n options: AccessiConsoleUrlOptions = {},\n): string {\n const base = baseUrl.replace(/\\/+$/, \"\");\n const url = new URL(`${base}${ACCESSI_CONSOLE_PATH}`);\n const fragment = options.entryTicket\n ? `entry=${encodeURIComponent(options.entryTicket)}`\n : options.twoFactorChallengeId\n ? `two-factor=${encodeURIComponent(options.twoFactorChallengeId)}`\n : \"\";\n if (fragment) url.hash = fragment;\n return url.toString();\n}\n"]}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * DTO server-side Accessi.
3
+ *
4
+ * Questi modelli usano `class-validator`, `class-transformer` e i decoratori
5
+ * OpenAPI di Nest. Sono adatti a backend e test, non a bundle frontend leggeri:
6
+ * per i frontend usare i tipi generati dal client OpenAPI.
7
+ */
8
+ export * from "../../accessi-module/Dtos";
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ /**
18
+ * DTO server-side Accessi.
19
+ *
20
+ * Questi modelli usano `class-validator`, `class-transformer` e i decoratori
21
+ * OpenAPI di Nest. Sono adatti a backend e test, non a bundle frontend leggeri:
22
+ * per i frontend usare i tipi generati dal client OpenAPI.
23
+ */
24
+ __exportStar(require("../../accessi-module/Dtos"), exports);
25
+ //# sourceMappingURL=dtos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dtos.js","sourceRoot":"","sources":["../../../src/accessi/contracts/dtos.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;GAMG;AACH,4DAA0C","sourcesContent":["/**\n * DTO server-side Accessi.\n *\n * Questi modelli usano `class-validator`, `class-transformer` e i decoratori\n * OpenAPI di Nest. Sono adatti a backend e test, non a bundle frontend leggeri:\n * per i frontend usare i tipi generati dal client OpenAPI.\n */\nexport * from \"../../accessi-module/Dtos\";\n"]}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Contratti Accessi browser-safe.
3
+ *
4
+ * Questo entry point non importa NestJS, il database, SMTP o servizi server.
5
+ * Contiene solo tipi, enum e helper puri condivisibili da backend, frontend e
6
+ * resource server.
7
+ */
8
+ export { StatoRegistrazione, StatoRegistrazioneValues } from "../../accessi-module/Dtos/StatoRegistrazione";
9
+ export { TipoAbilitazione } from "../../accessi-module/Dtos/TipoAbilitazione";
10
+ export { accessiRequirement, buildRequirementTree, evaluateRequirement, RequirementEvaluationError, } from "../../accessi-module/middleware/accessiRequirements";
11
+ export type { AccessiGrant, GrantsResult, AccessiPermissionRequirement, AccessiAllRequirement, AccessiAnyRequirement, AccessiNotRequirement, AccessiCustomRequirement, AccessiRequirementNode, AccessiAuthorizationOptions, AccessiCustomRequirementContext, AccessiCustomRequirementHandler, } from "../../accessi-module/middleware/accessiRequirements";
12
+ export { extractAccessiBearerToken, resolveCodiceUtenteFromTokenPayload, buildAuthenticatedTokenPayload, isLoginAsTokenPayload, isAccessiTokenAllowedForUser, isAuthenticatedUserEnabledForJwt, } from "../../accessi-module/security/authenticatedToken";
13
+ export type { AccessiAuthenticatedUserSnapshot, } from "../../accessi-module/security/authenticatedToken";
14
+ /** Payload di un access token Accessi verificato. Le claim extra restano disponibili. */
15
+ export interface AccessiAccessTokenPayload extends Record<string, unknown> {
16
+ /** Obbligatorio: distingue un access token da reset token e token 2FA. */
17
+ typ: "access";
18
+ /** Metodi di autenticazione usati (es. `password`, `otp`, `login_as`). */
19
+ amr?: string[];
20
+ codiceUtente?: number;
21
+ utente?: Record<string, unknown>;
22
+ userData?: {
23
+ utente?: Record<string, unknown>;
24
+ };
25
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAuthenticatedUserEnabledForJwt = exports.isAccessiTokenAllowedForUser = exports.isLoginAsTokenPayload = exports.buildAuthenticatedTokenPayload = exports.resolveCodiceUtenteFromTokenPayload = exports.extractAccessiBearerToken = exports.RequirementEvaluationError = exports.evaluateRequirement = exports.buildRequirementTree = exports.accessiRequirement = exports.TipoAbilitazione = exports.StatoRegistrazioneValues = exports.StatoRegistrazione = void 0;
4
+ /**
5
+ * Contratti Accessi browser-safe.
6
+ *
7
+ * Questo entry point non importa NestJS, il database, SMTP o servizi server.
8
+ * Contiene solo tipi, enum e helper puri condivisibili da backend, frontend e
9
+ * resource server.
10
+ */
11
+ var StatoRegistrazione_1 = require("../../accessi-module/Dtos/StatoRegistrazione");
12
+ Object.defineProperty(exports, "StatoRegistrazione", { enumerable: true, get: function () { return StatoRegistrazione_1.StatoRegistrazione; } });
13
+ Object.defineProperty(exports, "StatoRegistrazioneValues", { enumerable: true, get: function () { return StatoRegistrazione_1.StatoRegistrazioneValues; } });
14
+ var TipoAbilitazione_1 = require("../../accessi-module/Dtos/TipoAbilitazione");
15
+ Object.defineProperty(exports, "TipoAbilitazione", { enumerable: true, get: function () { return TipoAbilitazione_1.TipoAbilitazione; } });
16
+ var accessiRequirements_1 = require("../../accessi-module/middleware/accessiRequirements");
17
+ Object.defineProperty(exports, "accessiRequirement", { enumerable: true, get: function () { return accessiRequirements_1.accessiRequirement; } });
18
+ Object.defineProperty(exports, "buildRequirementTree", { enumerable: true, get: function () { return accessiRequirements_1.buildRequirementTree; } });
19
+ Object.defineProperty(exports, "evaluateRequirement", { enumerable: true, get: function () { return accessiRequirements_1.evaluateRequirement; } });
20
+ Object.defineProperty(exports, "RequirementEvaluationError", { enumerable: true, get: function () { return accessiRequirements_1.RequirementEvaluationError; } });
21
+ var authenticatedToken_1 = require("../../accessi-module/security/authenticatedToken");
22
+ Object.defineProperty(exports, "extractAccessiBearerToken", { enumerable: true, get: function () { return authenticatedToken_1.extractAccessiBearerToken; } });
23
+ Object.defineProperty(exports, "resolveCodiceUtenteFromTokenPayload", { enumerable: true, get: function () { return authenticatedToken_1.resolveCodiceUtenteFromTokenPayload; } });
24
+ Object.defineProperty(exports, "buildAuthenticatedTokenPayload", { enumerable: true, get: function () { return authenticatedToken_1.buildAuthenticatedTokenPayload; } });
25
+ Object.defineProperty(exports, "isLoginAsTokenPayload", { enumerable: true, get: function () { return authenticatedToken_1.isLoginAsTokenPayload; } });
26
+ Object.defineProperty(exports, "isAccessiTokenAllowedForUser", { enumerable: true, get: function () { return authenticatedToken_1.isAccessiTokenAllowedForUser; } });
27
+ Object.defineProperty(exports, "isAuthenticatedUserEnabledForJwt", { enumerable: true, get: function () { return authenticatedToken_1.isAuthenticatedUserEnabledForJwt; } });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/accessi/contracts/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,mFAA4G;AAAnG,wHAAA,kBAAkB,OAAA;AAAE,8HAAA,wBAAwB,OAAA;AACrD,+EAA8E;AAArE,oHAAA,gBAAgB,OAAA;AAEzB,2FAK6D;AAJ3D,yHAAA,kBAAkB,OAAA;AAClB,2HAAA,oBAAoB,OAAA;AACpB,0HAAA,mBAAmB,OAAA;AACnB,iIAAA,0BAA0B,OAAA;AAiB5B,uFAO0D;AANxD,+HAAA,yBAAyB,OAAA;AACzB,yIAAA,mCAAmC,OAAA;AACnC,oIAAA,8BAA8B,OAAA;AAC9B,2HAAA,qBAAqB,OAAA;AACrB,kIAAA,4BAA4B,OAAA;AAC5B,sIAAA,gCAAgC,OAAA","sourcesContent":["/**\n * Contratti Accessi browser-safe.\n *\n * Questo entry point non importa NestJS, il database, SMTP o servizi server.\n * Contiene solo tipi, enum e helper puri condivisibili da backend, frontend e\n * resource server.\n */\nexport { StatoRegistrazione, StatoRegistrazioneValues } from \"../../accessi-module/Dtos/StatoRegistrazione\";\nexport { TipoAbilitazione } from \"../../accessi-module/Dtos/TipoAbilitazione\";\n\nexport {\n accessiRequirement,\n buildRequirementTree,\n evaluateRequirement,\n RequirementEvaluationError,\n} from \"../../accessi-module/middleware/accessiRequirements\";\n\nexport type {\n AccessiGrant,\n GrantsResult,\n AccessiPermissionRequirement,\n AccessiAllRequirement,\n AccessiAnyRequirement,\n AccessiNotRequirement,\n AccessiCustomRequirement,\n AccessiRequirementNode,\n AccessiAuthorizationOptions,\n AccessiCustomRequirementContext,\n AccessiCustomRequirementHandler,\n} from \"../../accessi-module/middleware/accessiRequirements\";\n\nexport {\n extractAccessiBearerToken,\n resolveCodiceUtenteFromTokenPayload,\n buildAuthenticatedTokenPayload,\n isLoginAsTokenPayload,\n isAccessiTokenAllowedForUser,\n isAuthenticatedUserEnabledForJwt,\n} from \"../../accessi-module/security/authenticatedToken\";\n\nexport type {\n AccessiAuthenticatedUserSnapshot,\n} from \"../../accessi-module/security/authenticatedToken\";\n\n/** Payload di un access token Accessi verificato. Le claim extra restano disponibili. */\nexport interface AccessiAccessTokenPayload extends Record<string, unknown> {\n /** Obbligatorio: distingue un access token da reset token e token 2FA. */\n typ: \"access\";\n /** Metodi di autenticazione usati (es. `password`, `otp`, `login_as`). */\n amr?: string[];\n codiceUtente?: number;\n utente?: Record<string, unknown>;\n userData?: { utente?: Record<string, unknown> };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export * from "../../openapi/OpenApiConfig";
2
+ export * from "../../openapi/OpenApiMerge";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("../../openapi/OpenApiConfig"), exports);
18
+ __exportStar(require("../../openapi/OpenApiMerge"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/accessi/openapi/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,6DAA2C","sourcesContent":["export * from \"../../openapi/OpenApiConfig\";\nexport * from \"../../openapi/OpenApiMerge\";\n"]}
@@ -0,0 +1,6 @@
1
+ export * from "./types";
2
+ export * from "./keys";
3
+ export * from "./errors";
4
+ export * from "./token";
5
+ export * from "./introspection";
6
+ export * from "./runtime";
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./keys"), exports);
19
+ __exportStar(require("./errors"), exports);
20
+ __exportStar(require("./token"), exports);
21
+ __exportStar(require("./introspection"), exports);
22
+ __exportStar(require("./runtime"), exports);
23
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/accessi/resource-server/core.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yCAAuB;AACvB,2CAAyB;AACzB,0CAAwB;AACxB,kDAAgC;AAChC,4CAA0B","sourcesContent":["export * from \"./types\";\nexport * from \"./keys\";\nexport * from \"./errors\";\nexport * from \"./token\";\nexport * from \"./introspection\";\nexport * from \"./runtime\";\n"]}
@@ -0,0 +1,10 @@
1
+ /** Codici stabili del resource server, allineati al contratto HTTP Accessi. */
2
+ export type AccessiResourceServerErrorCode = "AUTH_HEADER_MISSING" | "AUTH_TOKEN_MISSING" | "AUTH_TOKEN_INVALID" | "AUTH_USER_CODE_MISSING" | "AUTH_USER_DISABLED" | "AUTH_INSUFFICIENT_PERMISSIONS" | "AUTH_CONFIG_INVALID" | "AUTH_GRANTS_SOURCE_MISSING" | "AUTH_INTROSPECTION_UNAVAILABLE" | "AUTH_INTROSPECTION_UNAUTHORIZED" | "AUTH_JWKS_UNAVAILABLE" | "AUTH_INTERNAL_ERROR";
3
+ /** Errore tipizzato del resource server, convertibile in risposta HTTP o eccezione Nest. */
4
+ export declare class AccessiResourceServerError extends Error {
5
+ readonly status: number;
6
+ readonly code: AccessiResourceServerErrorCode;
7
+ readonly details?: Record<string, unknown> | undefined;
8
+ constructor(status: number, code: AccessiResourceServerErrorCode, message: string, details?: Record<string, unknown> | undefined);
9
+ }
10
+ export declare function accessiAuthError(status: number, code: AccessiResourceServerErrorCode, message: string, details?: Record<string, unknown>): AccessiResourceServerError;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccessiResourceServerError = void 0;
4
+ exports.accessiAuthError = accessiAuthError;
5
+ /** Errore tipizzato del resource server, convertibile in risposta HTTP o eccezione Nest. */
6
+ class AccessiResourceServerError extends Error {
7
+ constructor(status, code, message, details) {
8
+ super(message);
9
+ this.status = status;
10
+ this.code = code;
11
+ this.details = details;
12
+ this.name = "AccessiResourceServerError";
13
+ }
14
+ }
15
+ exports.AccessiResourceServerError = AccessiResourceServerError;
16
+ function accessiAuthError(status, code, message, details) {
17
+ return new AccessiResourceServerError(status, code, message, details);
18
+ }
19
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/accessi/resource-server/errors.ts"],"names":[],"mappings":";;;AA4BA,4CAOC;AApBD,4FAA4F;AAC5F,MAAa,0BAA2B,SAAQ,KAAK;IACnD,YACkB,MAAc,EACd,IAAoC,EACpD,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAgC;QAEpC,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAVD,gEAUC;AAED,SAAgB,gBAAgB,CAC9B,MAAc,EACd,IAAoC,EACpC,OAAe,EACf,OAAiC;IAEjC,OAAO,IAAI,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC","sourcesContent":["/** Codici stabili del resource server, allineati al contratto HTTP Accessi. */\nexport type AccessiResourceServerErrorCode =\n | \"AUTH_HEADER_MISSING\"\n | \"AUTH_TOKEN_MISSING\"\n | \"AUTH_TOKEN_INVALID\"\n | \"AUTH_USER_CODE_MISSING\"\n | \"AUTH_USER_DISABLED\"\n | \"AUTH_INSUFFICIENT_PERMISSIONS\"\n | \"AUTH_CONFIG_INVALID\"\n | \"AUTH_GRANTS_SOURCE_MISSING\"\n | \"AUTH_INTROSPECTION_UNAVAILABLE\"\n | \"AUTH_INTROSPECTION_UNAUTHORIZED\"\n | \"AUTH_JWKS_UNAVAILABLE\"\n | \"AUTH_INTERNAL_ERROR\";\n\n/** Errore tipizzato del resource server, convertibile in risposta HTTP o eccezione Nest. */\nexport class AccessiResourceServerError extends Error {\n constructor(\n public readonly status: number,\n public readonly code: AccessiResourceServerErrorCode,\n message: string,\n public readonly details?: Record<string, unknown>,\n ) {\n super(message);\n this.name = \"AccessiResourceServerError\";\n }\n}\n\nexport function accessiAuthError(\n status: number,\n code: AccessiResourceServerErrorCode,\n message: string,\n details?: Record<string, unknown>,\n): AccessiResourceServerError {\n return new AccessiResourceServerError(status, code, message, details);\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import type { NextFunction, Request, Response } from "express";
2
+ import { AccessiResourceServerError } from "./errors";
3
+ import type { AccessiResourceServerRuntime } from "./runtime";
4
+ import type { AccessiResourceServerOptions } from "./types";
5
+ /** Normalizza un errore sconosciuto nel contratto di errore Accessi. */
6
+ export declare function toAccessiResourceServerError(error: unknown): AccessiResourceServerError;
7
+ /** Invia la risposta di errore Accessi senza esporre stack trace o dettagli interni. */
8
+ export declare function sendAccessiResourceServerError(res: Response, error: unknown): Response;
9
+ /**
10
+ * Middleware Express per backend che non possiedono il database Accessi.
11
+ *
12
+ * Popola `req.user`, `req.data` e `req.accessi`; con una policy di autorizzazione
13
+ * popola anche `req.userGrants`.
14
+ */
15
+ export declare function createAccessiAuthMiddleware(options: AccessiResourceServerOptions): (req: Request, res: Response, next: NextFunction) => Promise<void>;
16
+ /** Variante con runtime gia creato, utile per test o bootstrap manuale. */
17
+ export declare function createAccessiAuthMiddlewareFromRuntime(runtime: AccessiResourceServerRuntime): (req: Request, res: Response, next: NextFunction) => Promise<void>;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.toAccessiResourceServerError = toAccessiResourceServerError;
13
+ exports.sendAccessiResourceServerError = sendAccessiResourceServerError;
14
+ exports.createAccessiAuthMiddleware = createAccessiAuthMiddleware;
15
+ exports.createAccessiAuthMiddlewareFromRuntime = createAccessiAuthMiddlewareFromRuntime;
16
+ const errors_1 = require("./errors");
17
+ const runtime_1 = require("./runtime");
18
+ /** Normalizza un errore sconosciuto nel contratto di errore Accessi. */
19
+ function toAccessiResourceServerError(error) {
20
+ if (error instanceof errors_1.AccessiResourceServerError)
21
+ return error;
22
+ return (0, errors_1.accessiAuthError)(500, "AUTH_INTERNAL_ERROR", "Errore interno durante l'autenticazione.");
23
+ }
24
+ /** Invia la risposta di errore Accessi senza esporre stack trace o dettagli interni. */
25
+ function sendAccessiResourceServerError(res, error) {
26
+ const normalized = toAccessiResourceServerError(error);
27
+ return res.status(normalized.status).json({
28
+ severity: "error",
29
+ status: normalized.status,
30
+ statusCode: 2,
31
+ code: normalized.code,
32
+ error: normalized.code,
33
+ message: normalized.message,
34
+ });
35
+ }
36
+ /**
37
+ * Middleware Express per backend che non possiedono il database Accessi.
38
+ *
39
+ * Popola `req.user`, `req.data` e `req.accessi`; con una policy di autorizzazione
40
+ * popola anche `req.userGrants`.
41
+ */
42
+ function createAccessiAuthMiddleware(options) {
43
+ const runtime = (0, runtime_1.createAccessiResourceServer)(options);
44
+ return (req, res, next) => __awaiter(this, void 0, void 0, function* () {
45
+ try {
46
+ yield (0, runtime_1.authenticateAccessiRequest)(req, runtime);
47
+ next();
48
+ }
49
+ catch (error) {
50
+ sendAccessiResourceServerError(res, error);
51
+ }
52
+ });
53
+ }
54
+ /** Variante con runtime gia creato, utile per test o bootstrap manuale. */
55
+ function createAccessiAuthMiddlewareFromRuntime(runtime) {
56
+ return (req, res, next) => __awaiter(this, void 0, void 0, function* () {
57
+ try {
58
+ yield (0, runtime_1.authenticateAccessiRequest)(req, runtime);
59
+ next();
60
+ }
61
+ catch (error) {
62
+ sendAccessiResourceServerError(res, error);
63
+ }
64
+ });
65
+ }
66
+ //# sourceMappingURL=express.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.js","sourceRoot":"","sources":["../../../src/accessi/resource-server/express.ts"],"names":[],"mappings":";;;;;;;;;;;AAOA,oEAGC;AAGD,wEAUC;AAQD,kEAaC;AAGD,wFAWC;AAzDD,qCAAwE;AACxE,uCAAoF;AAIpF,wEAAwE;AACxE,SAAgB,4BAA4B,CAAC,KAAc;IACzD,IAAI,KAAK,YAAY,mCAA0B;QAAE,OAAO,KAAK,CAAC;IAC9D,OAAO,IAAA,yBAAgB,EAAC,GAAG,EAAE,qBAAqB,EAAE,0CAA0C,CAAC,CAAC;AAClG,CAAC;AAED,wFAAwF;AACxF,SAAgB,8BAA8B,CAAC,GAAa,EAAE,KAAc;IAC1E,MAAM,UAAU,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QACxC,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,UAAU,EAAE,CAAC;QACb,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,UAAU,CAAC,IAAI;QACtB,OAAO,EAAE,UAAU,CAAC,OAAO;KAC5B,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAgB,2BAA2B,CACzC,OAAqC;IAErC,MAAM,OAAO,GAAG,IAAA,qCAA2B,EAAC,OAAO,CAAC,CAAC;IAErD,OAAO,CAAO,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAiB,EAAE;QAC9E,IAAI,CAAC;YACH,MAAM,IAAA,oCAA0B,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC/C,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8BAA8B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,SAAgB,sCAAsC,CACpD,OAAqC;IAErC,OAAO,CAAO,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAiB,EAAE;QAC9E,IAAI,CAAC;YACH,MAAM,IAAA,oCAA0B,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC/C,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8BAA8B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC","sourcesContent":["import type { NextFunction, Request, Response } from \"express\";\nimport { AccessiResourceServerError, accessiAuthError } from \"./errors\";\nimport { authenticateAccessiRequest, createAccessiResourceServer } from \"./runtime\";\nimport type { AccessiResourceServerRuntime } from \"./runtime\";\nimport type { AccessiResourceServerOptions } from \"./types\";\n\n/** Normalizza un errore sconosciuto nel contratto di errore Accessi. */\nexport function toAccessiResourceServerError(error: unknown): AccessiResourceServerError {\n if (error instanceof AccessiResourceServerError) return error;\n return accessiAuthError(500, \"AUTH_INTERNAL_ERROR\", \"Errore interno durante l'autenticazione.\");\n}\n\n/** Invia la risposta di errore Accessi senza esporre stack trace o dettagli interni. */\nexport function sendAccessiResourceServerError(res: Response, error: unknown): Response {\n const normalized = toAccessiResourceServerError(error);\n return res.status(normalized.status).json({\n severity: \"error\",\n status: normalized.status,\n statusCode: 2,\n code: normalized.code,\n error: normalized.code,\n message: normalized.message,\n });\n}\n\n/**\n * Middleware Express per backend che non possiedono il database Accessi.\n *\n * Popola `req.user`, `req.data` e `req.accessi`; con una policy di autorizzazione\n * popola anche `req.userGrants`.\n */\nexport function createAccessiAuthMiddleware(\n options: AccessiResourceServerOptions,\n): (req: Request, res: Response, next: NextFunction) => Promise<void> {\n const runtime = createAccessiResourceServer(options);\n\n return async (req: Request, res: Response, next: NextFunction): Promise<void> => {\n try {\n await authenticateAccessiRequest(req, runtime);\n next();\n } catch (error) {\n sendAccessiResourceServerError(res, error);\n }\n };\n}\n\n/** Variante con runtime gia creato, utile per test o bootstrap manuale. */\nexport function createAccessiAuthMiddlewareFromRuntime(\n runtime: AccessiResourceServerRuntime,\n): (req: Request, res: Response, next: NextFunction) => Promise<void> {\n return async (req: Request, res: Response, next: NextFunction): Promise<void> => {\n try {\n await authenticateAccessiRequest(req, runtime);\n next();\n } catch (error) {\n sendAccessiResourceServerError(res, error);\n }\n };\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export * from "./core";
2
+ export * from "./express";
3
+ export * from "./nest";
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./core"), exports);
18
+ __exportStar(require("./express"), exports);
19
+ __exportStar(require("./nest"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/accessi/resource-server/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,4CAA0B;AAC1B,yCAAuB","sourcesContent":["export * from \"./core\";\nexport * from \"./express\";\nexport * from \"./nest\";\n"]}
@@ -0,0 +1,16 @@
1
+ import type { AccessiIntrospectionOptions, AccessiIntrospectionResult } from "./types";
2
+ /** Client di introspection verso Accessi Service, con cache locale dei risultati attivi. */
3
+ export interface AccessiIntrospectionClient {
4
+ introspect(token: string, options?: {
5
+ forceRefresh?: boolean;
6
+ }): Promise<AccessiIntrospectionResult>;
7
+ clearCache(): void;
8
+ }
9
+ /**
10
+ * Crea il client di introspection.
11
+ *
12
+ * Il service token deve avere scope `accessi:introspect`. I risultati attivi
13
+ * sono memorizzati per `cacheTtlMs` (default 30s); i risultati inattivi non
14
+ * vengono cachati per permettere un retry immediato dopo un login.
15
+ */
16
+ export declare function createAccessiIntrospectionClient(options: AccessiIntrospectionOptions): AccessiIntrospectionClient;