emilsoftware-utilities 2.0.0-dev.71 → 2.0.0-dev.73

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 (37) hide show
  1. package/README.MD +43 -0
  2. package/dist/accessi/client/admin/index.d.ts +18 -0
  3. package/dist/accessi/client/admin/index.js +58 -0
  4. package/dist/accessi/client/admin/index.js.map +1 -0
  5. package/dist/accessi/client/createAccessiClient.d.ts +21 -0
  6. package/dist/accessi/client/createAccessiClient.js +31 -0
  7. package/dist/accessi/client/createAccessiClient.js.map +1 -0
  8. package/dist/accessi/client/generated/admin.d.ts +601 -0
  9. package/dist/accessi/client/generated/admin.js +557 -0
  10. package/dist/accessi/client/generated/admin.js.map +1 -0
  11. package/dist/accessi/client/generated/public.d.ts +121 -0
  12. package/dist/accessi/client/generated/public.js +119 -0
  13. package/dist/accessi/client/generated/public.js.map +1 -0
  14. package/dist/accessi/client/generated/service.d.ts +53 -0
  15. package/dist/accessi/client/generated/service.js +63 -0
  16. package/dist/accessi/client/generated/service.js.map +1 -0
  17. package/dist/accessi/client/index.d.ts +7 -13
  18. package/dist/accessi/client/index.js +16 -29
  19. package/dist/accessi/client/index.js.map +1 -1
  20. package/dist/accessi/client/public/index.d.ts +18 -0
  21. package/dist/accessi/client/public/index.js +58 -0
  22. package/dist/accessi/client/public/index.js.map +1 -0
  23. package/dist/accessi/client/service/index.d.ts +17 -0
  24. package/dist/accessi/client/service/index.js +57 -0
  25. package/dist/accessi/client/service/index.js.map +1 -0
  26. package/dist/accessi-module/Console/console.js +6 -0
  27. package/dist/accessi-module/Console/wiki.js +6 -0
  28. package/dist/accessi-module/Console/wiki.js.map +1 -1
  29. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js +1 -1
  30. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js.map +1 -1
  31. package/dist/emilsoftware-utilities-2.0.0-dev.73.tgz +0 -0
  32. package/docs/accessi-openapi-baseline.json +4500 -0
  33. package/docs/accessi-openapi-breaking-allowlist.json +1 -0
  34. package/docs/adr/0001-split-package.md +79 -0
  35. package/integration-prompt.md +6 -2
  36. package/package.json +37 -4
  37. package/dist/emilsoftware-utilities-2.0.0-dev.71.tgz +0 -0
@@ -44,20 +44,23 @@ exports.createAccessiClient = createAccessiClient;
44
44
  *
45
45
  * Il client e pensato per essere usato da backend fratelli, frontend e tool
46
46
  * amministrativi. Configurare base URL e token provider prima della prima call.
47
+ *
48
+ * Per limitare le operazioni disponibili usare gli entry point per scope:
49
+ * `accessi/client/public`, `accessi/client/admin` e `accessi/client/service`.
47
50
  */
48
51
  const generated = __importStar(require("../../accessi-module/Console/generated/emilsoftware-utilities"));
49
- const accessiFetch_1 = require("../../accessi-module/Console/accessiFetch");
52
+ const createAccessiClient_1 = require("./createAccessiClient");
50
53
  __exportStar(require("../../accessi-module/Console/generated/emilsoftware-utilities"), exports);
51
54
  __exportStar(require("../../accessi-module/Console/generated/model"), exports);
55
+ var accessiFetch_1 = require("../../accessi-module/Console/accessiFetch");
56
+ Object.defineProperty(exports, "AccessiRequestError", { enumerable: true, get: function () { return accessiFetch_1.AccessiRequestError; } });
52
57
  var accessiFetch_2 = require("../../accessi-module/Console/accessiFetch");
53
- Object.defineProperty(exports, "AccessiRequestError", { enumerable: true, get: function () { return accessiFetch_2.AccessiRequestError; } });
54
- var accessiFetch_3 = require("../../accessi-module/Console/accessiFetch");
55
- Object.defineProperty(exports, "ACCESSI_UNAUTHORIZED_EVENT", { enumerable: true, get: function () { return accessiFetch_3.ACCESSI_UNAUTHORIZED_EVENT; } });
56
- Object.defineProperty(exports, "getAccessiClientConfig", { enumerable: true, get: function () { return accessiFetch_3.getAccessiClientConfig; } });
57
- Object.defineProperty(exports, "runWithAccessiClient", { enumerable: true, get: function () { return accessiFetch_3.runWithAccessiClient; } });
58
- Object.defineProperty(exports, "setAccessiFetchBaseUrl", { enumerable: true, get: function () { return accessiFetch_3.setAccessiFetchBaseUrl; } });
59
- Object.defineProperty(exports, "setAccessiFetchTokenProvider", { enumerable: true, get: function () { return accessiFetch_3.setAccessiFetchTokenProvider; } });
60
- const accessiFetch_4 = require("../../accessi-module/Console/accessiFetch");
58
+ Object.defineProperty(exports, "ACCESSI_UNAUTHORIZED_EVENT", { enumerable: true, get: function () { return accessiFetch_2.ACCESSI_UNAUTHORIZED_EVENT; } });
59
+ Object.defineProperty(exports, "getAccessiClientConfig", { enumerable: true, get: function () { return accessiFetch_2.getAccessiClientConfig; } });
60
+ Object.defineProperty(exports, "runWithAccessiClient", { enumerable: true, get: function () { return accessiFetch_2.runWithAccessiClient; } });
61
+ Object.defineProperty(exports, "setAccessiFetchBaseUrl", { enumerable: true, get: function () { return accessiFetch_2.setAccessiFetchBaseUrl; } });
62
+ Object.defineProperty(exports, "setAccessiFetchTokenProvider", { enumerable: true, get: function () { return accessiFetch_2.setAccessiFetchTokenProvider; } });
63
+ const accessiFetch_3 = require("../../accessi-module/Console/accessiFetch");
61
64
  /**
62
65
  * Configura il trasporto del client generato globale.
63
66
  *
@@ -70,12 +73,12 @@ const accessiFetch_4 = require("../../accessi-module/Console/accessiFetch");
70
73
  */
71
74
  function configureAccessiClient(config = {}) {
72
75
  var _a;
73
- (0, accessiFetch_4.setAccessiFetchBaseUrl)((_a = config.baseUrl) !== null && _a !== void 0 ? _a : null);
76
+ (0, accessiFetch_3.setAccessiFetchBaseUrl)((_a = config.baseUrl) !== null && _a !== void 0 ? _a : null);
74
77
  if (config.getToken) {
75
- (0, accessiFetch_4.setAccessiFetchTokenProvider)(config.getToken);
78
+ (0, accessiFetch_3.setAccessiFetchTokenProvider)(config.getToken);
76
79
  return;
77
80
  }
78
- (0, accessiFetch_4.setAccessiFetchTokenProvider)(() => { var _a; return (_a = config.token) !== null && _a !== void 0 ? _a : null; });
81
+ (0, accessiFetch_3.setAccessiFetchTokenProvider)(() => { var _a; return (_a = config.token) !== null && _a !== void 0 ? _a : null; });
79
82
  }
80
83
  /**
81
84
  * Crea un client isolato con la propria base URL e il proprio token.
@@ -91,22 +94,6 @@ function configureAccessiClient(config = {}) {
91
94
  * ```
92
95
  */
93
96
  function createAccessiClient(config = {}) {
94
- let current = Object.assign({}, config);
95
- return new Proxy(generated, {
96
- get(target, property, receiver) {
97
- if (property === 'configure') {
98
- return (next) => {
99
- current = Object.assign({}, next);
100
- };
101
- }
102
- if (property === 'getConfig') {
103
- return () => (Object.assign({}, current));
104
- }
105
- const value = Reflect.get(target, property, receiver);
106
- if (typeof value !== 'function')
107
- return value;
108
- return (...args) => (0, accessiFetch_1.runWithAccessiClient)(current, () => value(...args));
109
- },
110
- });
97
+ return (0, createAccessiClient_1.createAccessiClientFromModule)(generated, config);
111
98
  }
112
99
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/accessi/client/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,wDAOC;AAeD,kDAqBC;AA/FD;;;;;GAKG;AACH,yGAA2F;AAC3F,4EAGmD;AAEnD,gGAA8E;AAC9E,+EAA6D;AAC7D,0EAAgF;AAAvE,mHAAA,mBAAmB,OAAA;AAC5B,0EAMmD;AALjD,0HAAA,0BAA0B,OAAA;AAC1B,sHAAA,sBAAsB,OAAA;AACtB,oHAAA,oBAAoB,OAAA;AACpB,sHAAA,sBAAsB,OAAA;AACtB,4HAAA,4BAA4B,OAAA;AAI9B,4EAGmD;AAenD;;;;;;;;;GASG;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;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,mBAAmB,CAAC,SAA8B,EAAE;IAClE,IAAI,OAAO,qBAA6B,MAAM,CAAE,CAAC;IAEjD,OAAO,IAAI,KAAK,CAAC,SAAqC,EAAE;QACtD,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;YAC5B,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAyB,EAAE,EAAE;oBACnC,OAAO,qBAAQ,IAAI,CAAE,CAAC;gBACxB,CAAC,CAAC;YACJ,CAAC;YACD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBAC7B,OAAO,GAAG,EAAE,CAAC,mBAAM,OAAO,EAAG,CAAC;YAChC,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAY,CAAC;YACjE,IAAI,OAAO,KAAK,KAAK,UAAU;gBAAE,OAAO,KAAK,CAAC;YAE9C,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE,CAC5B,IAAA,mCAAoB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAE,KAA6C,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjG,CAAC;KACF,CAAC,CAAC;AACL,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 */\nimport * as generated from \"../../accessi-module/Console/generated/emilsoftware-utilities\";\nimport {\n runWithAccessiClient,\n type AccessiClientConfig,\n} from \"../../accessi-module/Console/accessiFetch\";\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 getAccessiClientConfig,\n runWithAccessiClient,\n setAccessiFetchBaseUrl,\n setAccessiFetchTokenProvider,\n} from \"../../accessi-module/Console/accessiFetch\";\nexport type { AccessiClientConfig } from \"../../accessi-module/Console/accessiFetch\";\n\nimport {\n setAccessiFetchBaseUrl,\n setAccessiFetchTokenProvider,\n} from \"../../accessi-module/Console/accessiFetch\";\n\n/**\n * Client completo generato, con la configurazione isolata per istanza.\n *\n * Ogni metodo e lo stesso del client globale, ma base URL e token vengono presi\n * dalla configurazione dell'istanza e non interferiscono con altri client.\n */\nexport type AccessiClient = typeof generated & {\n /** Sostituisce la configurazione dell'istanza senza toccare quella globale. */\n configure(config: AccessiClientConfig): void;\n /** Copia della configurazione corrente dell'istanza. */\n getConfig(): AccessiClientConfig;\n};\n\n/**\n * Configura il trasporto del client generato globale.\n *\n * Uso tipico backend: `configureAccessiClient({ baseUrl, getToken })`.\n * Uso tipico frontend: `configureAccessiClient({ baseUrl, token })` dopo il login.\n *\n * Per usare piu Accessi Service (o tenant) nello stesso processo preferire\n * `createAccessiClient`: la configurazione globale resta il default per le\n * chiamate agli export del package.\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\n/**\n * Crea un client isolato con la propria base URL e il proprio token.\n *\n * Le istanze possono essere usate in concorrenza: la configurazione viene\n * applicata alla singola chiamata, quindi due client con base URL o token\n * diversi non si sovrascrivono.\n *\n * ```ts\n * const milano = createAccessiClient({ baseUrl: 'https://accessi-milano.example.com', getToken });\n * const roma = createAccessiClient({ baseUrl: 'https://accessi-roma.example.com', token });\n * const [utentiMilano, utentiRoma] = await Promise.all([milano.getUsers(), roma.getUsers()]);\n * ```\n */\nexport function createAccessiClient(config: AccessiClientConfig = {}): AccessiClient {\n let current: AccessiClientConfig = { ...config };\n\n return new Proxy(generated as unknown as AccessiClient, {\n get(target, property, receiver) {\n if (property === 'configure') {\n return (next: AccessiClientConfig) => {\n current = { ...next };\n };\n }\n if (property === 'getConfig') {\n return () => ({ ...current });\n }\n\n const value = Reflect.get(target, property, receiver) as unknown;\n if (typeof value !== 'function') return value;\n\n return (...args: unknown[]) =>\n runWithAccessiClient(current, () => (value as (...callArgs: unknown[]) => unknown)(...args));\n },\n });\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/accessi/client/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,wDAOC;AAeD,kDAEC;AAtED;;;;;;;;GAQG;AACH,yGAA2F;AAE3F,+DAG+B;AAE/B,gGAA8E;AAC9E,+EAA6D;AAC7D,0EAAgF;AAAvE,mHAAA,mBAAmB,OAAA;AAC5B,0EAMmD;AALjD,0HAAA,0BAA0B,OAAA;AAC1B,sHAAA,sBAAsB,OAAA;AACtB,oHAAA,oBAAoB,OAAA;AACpB,sHAAA,sBAAsB,OAAA;AACtB,4HAAA,4BAA4B,OAAA;AAI9B,4EAGmD;AAKnD;;;;;;;;;GASG;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;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,mBAAmB,CAAC,SAA8B,EAAE;IAClE,OAAO,IAAA,mDAA6B,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC1D,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 *\n * Per limitare le operazioni disponibili usare gli entry point per scope:\n * `accessi/client/public`, `accessi/client/admin` e `accessi/client/service`.\n */\nimport * as generated from \"../../accessi-module/Console/generated/emilsoftware-utilities\";\nimport type { AccessiClientConfig } from \"../../accessi-module/Console/accessiFetch\";\nimport {\n createAccessiClientFromModule,\n type AccessiScopedClient,\n} from \"./createAccessiClient\";\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 getAccessiClientConfig,\n runWithAccessiClient,\n setAccessiFetchBaseUrl,\n setAccessiFetchTokenProvider,\n} from \"../../accessi-module/Console/accessiFetch\";\nexport type { AccessiClientConfig } from \"../../accessi-module/Console/accessiFetch\";\n\nimport {\n setAccessiFetchBaseUrl,\n setAccessiFetchTokenProvider,\n} from \"../../accessi-module/Console/accessiFetch\";\n\n/** Client completo: tutte le operazioni, con configurazione isolata per istanza. */\nexport type AccessiClient = AccessiScopedClient<typeof generated>;\n\n/**\n * Configura il trasporto del client generato globale.\n *\n * Uso tipico backend: `configureAccessiClient({ baseUrl, getToken })`.\n * Uso tipico frontend: `configureAccessiClient({ baseUrl, token })` dopo il login.\n *\n * Per usare piu Accessi Service (o tenant) nello stesso processo preferire\n * `createAccessiClient`: la configurazione globale resta il default per le\n * chiamate agli export del package.\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\n/**\n * Crea un client isolato con la propria base URL e il proprio token.\n *\n * Le istanze possono essere usate in concorrenza: la configurazione viene\n * applicata alla singola chiamata, quindi due client con base URL o token\n * diversi non si sovrascrivono.\n *\n * ```ts\n * const milano = createAccessiClient({ baseUrl: 'https://accessi-milano.example.com', getToken });\n * const roma = createAccessiClient({ baseUrl: 'https://accessi-roma.example.com', token });\n * const [utentiMilano, utentiRoma] = await Promise.all([milano.getUsers(), roma.getUsers()]);\n * ```\n */\nexport function createAccessiClient(config: AccessiClientConfig = {}): AccessiClient {\n return createAccessiClientFromModule(generated, config);\n}\n"]}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Client per le API pubbliche di Accessi: login, refresh, 2FA, reset password,
3
+ * registrazione pubblica e scambio ticket console.
4
+ *
5
+ * Non include le operazioni amministrative (utenti, ruoli, menu, schema, filtri,
6
+ * service token). Per quelle usare `accessi/client/admin`.
7
+ */
8
+ import * as generated from '../generated/public';
9
+ import type { AccessiClientConfig } from '../../../accessi-module/Console/accessiFetch';
10
+ import { type AccessiScopedClient } from '../createAccessiClient';
11
+ export * from '../generated/public';
12
+ export * from '../../../accessi-module/Console/generated/model';
13
+ export { AccessiRequestError } from '../../../accessi-module/Console/accessiFetch';
14
+ export type { AccessiClientConfig } from '../../../accessi-module/Console/accessiFetch';
15
+ /** Client pubblico con configurazione isolata per istanza. */
16
+ export type AccessiPublicClient = AccessiScopedClient<typeof generated>;
17
+ /** Crea un client delle sole API pubbliche, con base URL e token propri. */
18
+ export declare function createAccessiPublicClient(config?: AccessiClientConfig): AccessiPublicClient;
@@ -0,0 +1,58 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.AccessiRequestError = void 0;
40
+ exports.createAccessiPublicClient = createAccessiPublicClient;
41
+ /**
42
+ * Client per le API pubbliche di Accessi: login, refresh, 2FA, reset password,
43
+ * registrazione pubblica e scambio ticket console.
44
+ *
45
+ * Non include le operazioni amministrative (utenti, ruoli, menu, schema, filtri,
46
+ * service token). Per quelle usare `accessi/client/admin`.
47
+ */
48
+ const generated = __importStar(require("../generated/public"));
49
+ const createAccessiClient_1 = require("../createAccessiClient");
50
+ __exportStar(require("../generated/public"), exports);
51
+ __exportStar(require("../../../accessi-module/Console/generated/model"), exports);
52
+ var accessiFetch_1 = require("../../../accessi-module/Console/accessiFetch");
53
+ Object.defineProperty(exports, "AccessiRequestError", { enumerable: true, get: function () { return accessiFetch_1.AccessiRequestError; } });
54
+ /** Crea un client delle sole API pubbliche, con base URL e token propri. */
55
+ function createAccessiPublicClient(config = {}) {
56
+ return (0, createAccessiClient_1.createAccessiClientFromModule)(generated, config);
57
+ }
58
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/accessi/client/public/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,8DAIC;AA3BD;;;;;;GAMG;AACH,+DAAiD;AAEjD,gEAGgC;AAEhC,sDAAoC;AACpC,kFAAgE;AAChE,6EAAmF;AAA1E,mHAAA,mBAAmB,OAAA;AAM5B,4EAA4E;AAC5E,SAAgB,yBAAyB,CACvC,SAA8B,EAAE;IAEhC,OAAO,IAAA,mDAA6B,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC","sourcesContent":["/**\n * Client per le API pubbliche di Accessi: login, refresh, 2FA, reset password,\n * registrazione pubblica e scambio ticket console.\n *\n * Non include le operazioni amministrative (utenti, ruoli, menu, schema, filtri,\n * service token). Per quelle usare `accessi/client/admin`.\n */\nimport * as generated from '../generated/public';\nimport type { AccessiClientConfig } from '../../../accessi-module/Console/accessiFetch';\nimport {\n createAccessiClientFromModule,\n type AccessiScopedClient,\n} from '../createAccessiClient';\n\nexport * from '../generated/public';\nexport * from '../../../accessi-module/Console/generated/model';\nexport { AccessiRequestError } from '../../../accessi-module/Console/accessiFetch';\nexport type { AccessiClientConfig } from '../../../accessi-module/Console/accessiFetch';\n\n/** Client pubblico con configurazione isolata per istanza. */\nexport type AccessiPublicClient = AccessiScopedClient<typeof generated>;\n\n/** Crea un client delle sole API pubbliche, con base URL e token propri. */\nexport function createAccessiPublicClient(\n config: AccessiClientConfig = {},\n): AccessiPublicClient {\n return createAccessiClientFromModule(generated, config);\n}\n"]}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Client per le API service-to-service di Accessi: gestione dei service token
3
+ * (creazione, rotazione, revoca, elenco) e introspezione degli access token.
4
+ *
5
+ * Pensato per backend fratelli e job: non va distribuito a frontend pubblici.
6
+ */
7
+ import * as generated from '../generated/service';
8
+ import type { AccessiClientConfig } from '../../../accessi-module/Console/accessiFetch';
9
+ import { type AccessiScopedClient } from '../createAccessiClient';
10
+ export * from '../generated/service';
11
+ export * from '../../../accessi-module/Console/generated/model';
12
+ export { AccessiRequestError } from '../../../accessi-module/Console/accessiFetch';
13
+ export type { AccessiClientConfig } from '../../../accessi-module/Console/accessiFetch';
14
+ /** Client service-to-service con configurazione isolata per istanza. */
15
+ export type AccessiServiceClient = AccessiScopedClient<typeof generated>;
16
+ /** Crea un client delle API service-to-service, con base URL e token propri. */
17
+ export declare function createAccessiServiceClient(config?: AccessiClientConfig): AccessiServiceClient;
@@ -0,0 +1,57 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.AccessiRequestError = void 0;
40
+ exports.createAccessiServiceClient = createAccessiServiceClient;
41
+ /**
42
+ * Client per le API service-to-service di Accessi: gestione dei service token
43
+ * (creazione, rotazione, revoca, elenco) e introspezione degli access token.
44
+ *
45
+ * Pensato per backend fratelli e job: non va distribuito a frontend pubblici.
46
+ */
47
+ const generated = __importStar(require("../generated/service"));
48
+ const createAccessiClient_1 = require("../createAccessiClient");
49
+ __exportStar(require("../generated/service"), exports);
50
+ __exportStar(require("../../../accessi-module/Console/generated/model"), exports);
51
+ var accessiFetch_1 = require("../../../accessi-module/Console/accessiFetch");
52
+ Object.defineProperty(exports, "AccessiRequestError", { enumerable: true, get: function () { return accessiFetch_1.AccessiRequestError; } });
53
+ /** Crea un client delle API service-to-service, con base URL e token propri. */
54
+ function createAccessiServiceClient(config = {}) {
55
+ return (0, createAccessiClient_1.createAccessiClientFromModule)(generated, config);
56
+ }
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/accessi/client/service/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,gEAIC;AA1BD;;;;;GAKG;AACH,gEAAkD;AAElD,gEAGgC;AAEhC,uDAAqC;AACrC,kFAAgE;AAChE,6EAAmF;AAA1E,mHAAA,mBAAmB,OAAA;AAM5B,gFAAgF;AAChF,SAAgB,0BAA0B,CACxC,SAA8B,EAAE;IAEhC,OAAO,IAAA,mDAA6B,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC","sourcesContent":["/**\n * Client per le API service-to-service di Accessi: gestione dei service token\n * (creazione, rotazione, revoca, elenco) e introspezione degli access token.\n *\n * Pensato per backend fratelli e job: non va distribuito a frontend pubblici.\n */\nimport * as generated from '../generated/service';\nimport type { AccessiClientConfig } from '../../../accessi-module/Console/accessiFetch';\nimport {\n createAccessiClientFromModule,\n type AccessiScopedClient,\n} from '../createAccessiClient';\n\nexport * from '../generated/service';\nexport * from '../../../accessi-module/Console/generated/model';\nexport { AccessiRequestError } from '../../../accessi-module/Console/accessiFetch';\nexport type { AccessiClientConfig } from '../../../accessi-module/Console/accessiFetch';\n\n/** Client service-to-service con configurazione isolata per istanza. */\nexport type AccessiServiceClient = AccessiScopedClient<typeof generated>;\n\n/** Crea un client delle API service-to-service, con base URL e token propri. */\nexport function createAccessiServiceClient(\n config: AccessiClientConfig = {},\n): AccessiServiceClient {\n return createAccessiClientFromModule(generated, config);\n}\n"]}
@@ -926,6 +926,7 @@ var WIKI_SECTIONS = [
926
926
  blocks: [
927
927
  code("bash", `npm install emilsoftware-utilities`, "Installazione"),
928
928
  p(`La libreria dipende da node-firebird per il database e da Express 5 come peer per il montaggio. \xC8 consigliato Node 18 o superiore.`),
929
+ p(`Il pacchetto \xE8 pubblicato in CommonJS con export map esplicita per ogni entry point (accessi/server, accessi/resource-server/*, accessi/client/*, accessi/contracts*, accessi/openapi, accessi/console, accessi/ui): gli import ESM funzionano tramite interop Node. sideEffects elenca solo root barrel, firebird-compat e bundle console, cos\xEC il resto \xE8 tree-shakable.`),
929
930
  note("warn", `Un solo modulo per processo`, `AccessiModule \xE8 @Global(): inizializzalo una sola volta per processo. In caso di pi\xF9 istanze, usa un processo per istanza.`)
930
931
  ]
931
932
  },
@@ -1002,6 +1003,9 @@ var WIKI_SECTIONS = [
1002
1003
  ["accessi/server", "Bootstrap completo: DB, SMTP, migrazioni, console, API.", "s\xEC"],
1003
1004
  ["accessi/resource-server", "Guard/middleware per backend fratelli: verifica JWT e autorizzazione remota.", "no"],
1004
1005
  ["accessi/client", "Client OpenAPI generato per chiamare Accessi Service.", "no"],
1006
+ ["accessi/client/public", "Solo API pubbliche (login, refresh, 2FA, reset password, registrazione, ticket console).", "no"],
1007
+ ["accessi/client/admin", "Solo API amministrative (utenti, ruoli, menu, filtri, provider federati, schema).", "no"],
1008
+ ["accessi/client/service", "Solo API service-to-service (service token e introspezione), mai nei frontend.", "no"],
1005
1009
  ["accessi/contracts", "Tipi, enum e helper puri browser-safe.", "no"],
1006
1010
  ["accessi/contracts/dtos", "DTO Nest con class-validator e decoratori OpenAPI.", "no"],
1007
1011
  ["accessi/openapi", "setupOpenApi e merge del documento OpenAPI.", "no"],
@@ -1025,6 +1029,8 @@ var WIKI_SECTIONS = [
1025
1029
  "const [utentiMilano, utentiRoma] = await Promise.all([milano.getUsers(), roma.getUsers()]);"
1026
1030
  ].join("\n"), "Import corretti per ruolo"),
1027
1031
  note("warn", `Un solo proprietario`, `Non montare AccessiModule in due backend puntati allo stesso database: migrazioni, bootstrap admin, ticket console e rate limit diventano ambigui.`),
1032
+ note("info", `Client per scope`, `Usare accessi/client/public nei frontend pubblici, accessi/client/admin nella console e nei tool amministrativi, accessi/client/service solo nei backend fratelli. Gli scope partizionano il client completo e condividono gli stessi tipi; il client completo resta disponibile per compatibilita.`),
1033
+ note("info", `Split in pacchetti`, `Il package resta unico con entry point per scope: decisione, soglie per rivalutarla e piano di migrazione sono nell'ADR docs/adr/0001-split-package.md.`),
1028
1034
  note("info", `Prompt di integrazione`, `Il file integration-prompt.md nella root del repository contiene il contesto completo per frontend, backend e agenti AI.`)
1029
1035
  ]
1030
1036
  },
@@ -59,6 +59,7 @@ exports.WIKI_SECTIONS = [
59
59
  blocks: [
60
60
  code('bash', `npm install emilsoftware-utilities`, 'Installazione'),
61
61
  p(`La libreria dipende da node-firebird per il database e da Express 5 come peer per il montaggio. È consigliato Node 18 o superiore.`),
62
+ p(`Il pacchetto è pubblicato in CommonJS con export map esplicita per ogni entry point (accessi/server, accessi/resource-server/*, accessi/client/*, accessi/contracts*, accessi/openapi, accessi/console, accessi/ui): gli import ESM funzionano tramite interop Node. sideEffects elenca solo root barrel, firebird-compat e bundle console, così il resto è tree-shakable.`),
62
63
  note('warn', `Un solo modulo per processo`, `AccessiModule è @Global(): inizializzalo una sola volta per processo. In caso di più istanze, usa un processo per istanza.`),
63
64
  ],
64
65
  },
@@ -133,6 +134,9 @@ exports.WIKI_SECTIONS = [
133
134
  ['accessi/server', 'Bootstrap completo: DB, SMTP, migrazioni, console, API.', 'sì'],
134
135
  ['accessi/resource-server', 'Guard/middleware per backend fratelli: verifica JWT e autorizzazione remota.', 'no'],
135
136
  ['accessi/client', 'Client OpenAPI generato per chiamare Accessi Service.', 'no'],
137
+ ['accessi/client/public', 'Solo API pubbliche (login, refresh, 2FA, reset password, registrazione, ticket console).', 'no'],
138
+ ['accessi/client/admin', 'Solo API amministrative (utenti, ruoli, menu, filtri, provider federati, schema).', 'no'],
139
+ ['accessi/client/service', 'Solo API service-to-service (service token e introspezione), mai nei frontend.', 'no'],
136
140
  ['accessi/contracts', 'Tipi, enum e helper puri browser-safe.', 'no'],
137
141
  ['accessi/contracts/dtos', 'DTO Nest con class-validator e decoratori OpenAPI.', 'no'],
138
142
  ['accessi/openapi', 'setupOpenApi e merge del documento OpenAPI.', 'no'],
@@ -155,6 +159,8 @@ exports.WIKI_SECTIONS = [
155
159
  "const [utentiMilano, utentiRoma] = await Promise.all([milano.getUsers(), roma.getUsers()]);",
156
160
  ].join('\n'), 'Import corretti per ruolo'),
157
161
  note('warn', `Un solo proprietario`, `Non montare AccessiModule in due backend puntati allo stesso database: migrazioni, bootstrap admin, ticket console e rate limit diventano ambigui.`),
162
+ note('info', `Client per scope`, `Usare accessi/client/public nei frontend pubblici, accessi/client/admin nella console e nei tool amministrativi, accessi/client/service solo nei backend fratelli. Gli scope partizionano il client completo e condividono gli stessi tipi; il client completo resta disponibile per compatibilita.`),
163
+ note('info', `Split in pacchetti`, `Il package resta unico con entry point per scope: decisione, soglie per rivalutarla e piano di migrazione sono nell'ADR docs/adr/0001-split-package.md.`),
158
164
  note('info', `Prompt di integrazione`, `Il file integration-prompt.md nella root del repository contiene il contesto completo per frontend, backend e agenti AI.`),
159
165
  ],
160
166
  },