@eaera-com/cms-sdk 0.1.100 → 0.1.102

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 (44) hide show
  1. package/dist/chunks/{_shared-Dyz_Ya9z.js → _shared-DWYblQqx.js} +6 -1
  2. package/dist/chunks/_txn-DmQZNq48.js +99 -0
  3. package/dist/chunks/{connection--KUpmDbP.js → connection-DprBIh4D.js} +0 -10
  4. package/dist/common/constants/bars.constant.d.ts +2 -0
  5. package/dist/common/constants/bars.constant.d.ts.map +1 -1
  6. package/dist/common/constants/oauth.constant.d.ts +26 -0
  7. package/dist/common/constants/oauth.constant.d.ts.map +1 -0
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +56 -1
  11. package/dist/nuxt.d.ts +5 -0
  12. package/dist/nuxt.d.ts.map +1 -1
  13. package/dist/nuxt.js +4 -0
  14. package/dist/runtime/plugin.js +6 -1
  15. package/dist/server/ai/qwenpaw/chat/stop.post.js +1 -1
  16. package/dist/server/ai/qwenpaw/chat.post.js +1 -1
  17. package/dist/server/ai/qwenpaw/chats-id.delete.js +1 -1
  18. package/dist/server/ai/qwenpaw/chats.get.js +1 -1
  19. package/dist/server/ai/qwenpaw/history.get.js +1 -1
  20. package/dist/server/ai/qwenpaw/session.get.js +1 -1
  21. package/dist/server/ai/qwenpaw/session.post.js +1 -1
  22. package/dist/server/ai/qwenpaw/upload.post.js +1 -1
  23. package/dist/server/auth/cbs-callback.post.js +3 -3
  24. package/dist/server/auth/cbs-start.post.js +1 -1
  25. package/dist/server/auth/idp-callback.get.js +3 -3
  26. package/dist/server/auth/idp-link-callback.get.js +1 -1
  27. package/dist/server/auth/idp-link-start.get.js +1 -1
  28. package/dist/server/auth/idp-link.post.js +1 -1
  29. package/dist/server/auth/idp-login.get.js +1 -1
  30. package/dist/server/auth/idp-me.get.js +1 -1
  31. package/dist/server/auth/idp-unlink.delete.js +1 -1
  32. package/dist/server/auth/login.post.js +3 -3
  33. package/dist/server/auth/logout.post.js +1 -1
  34. package/dist/server/auth/refresh.post.js +18 -3
  35. package/dist/server/authz/portal-access.get.js +1 -1
  36. package/dist/server/oauth/callback.get.js +53 -0
  37. package/dist/server/oauth/start.get.js +46 -0
  38. package/dist/services/bars/bars.type.d.ts +22 -2
  39. package/dist/services/bars/bars.type.d.ts.map +1 -1
  40. package/dist/services/bars/index.d.ts +12 -3
  41. package/dist/services/bars/index.d.ts.map +1 -1
  42. package/dist/services/bars/mock.d.ts +16 -1
  43. package/dist/services/bars/mock.d.ts.map +1 -1
  44. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  import { a as COOKIE_DEFAULTS } from './storage.constant-CVWam5ls.js';
2
+ import { getRequestURL } from 'h3';
2
3
  import { useRuntimeConfig } from '#imports';
3
4
 
4
5
  const TOKEN_COOKIE_OPTIONS = {
@@ -8,6 +9,10 @@ const TOKEN_COOKIE_OPTIONS = {
8
9
  path: COOKIE_DEFAULTS.PATH,
9
10
  maxAge: COOKIE_DEFAULTS.MAX_AGE_SECONDS
10
11
  };
12
+ function tokenCookieOptions(event) {
13
+ const secure = new URL(getRequestURL(event)).protocol === "https:";
14
+ return { ...TOKEN_COOKIE_OPTIONS, secure };
15
+ }
11
16
  function readSdkConfig(event) {
12
17
  const config = useRuntimeConfig(event);
13
18
  const pub = config?.public ?? {};
@@ -22,4 +27,4 @@ function readSdkConfig(event) {
22
27
  };
23
28
  }
24
29
 
25
- export { TOKEN_COOKIE_OPTIONS as T, readSdkConfig as r };
30
+ export { TOKEN_COOKIE_OPTIONS as T, readSdkConfig as r, tokenCookieOptions as t };
@@ -0,0 +1,99 @@
1
+ import { timingSafeEqual, randomBytes, createHash } from 'node:crypto';
2
+ import { parseCookies, setCookie } from 'h3';
3
+
4
+ const OAUTH_PROXY_PATH = {
5
+ /** GET — CMS code callback (state check + code exchange). Must match the
6
+ * route the Nuxt module registers in `nuxt.ts` (SERVER_HANDLERS). */
7
+ CALLBACK: "/api/cms/oauth/callback"
8
+ };
9
+ const OAUTH_TXN_COOKIE = "cms_oauth_txn";
10
+ const OAUTH_TXN_TTL_MS = 10 * 60 * 1e3;
11
+ const OAUTH_TXN_MAX_ENTRIES = 1e3;
12
+ const OAUTH_GRANT_AUTHORIZATION_CODE = "authorization_code";
13
+ const OAUTH_PKCE_METHOD = "S256";
14
+
15
+ const GLOBAL_KEY = "__cms_sdk_oauth_txns__";
16
+ function store() {
17
+ const g = globalThis;
18
+ g[GLOBAL_KEY] ??= { txns: /* @__PURE__ */ new Map(), byState: /* @__PURE__ */ new Map() };
19
+ return g[GLOBAL_KEY];
20
+ }
21
+ function prune() {
22
+ const s = store();
23
+ const now = Date.now();
24
+ for (const [id, txn] of s.txns) {
25
+ if (now - txn.createdAt > OAUTH_TXN_TTL_MS) {
26
+ s.txns.delete(id);
27
+ s.byState.delete(txn.state);
28
+ }
29
+ }
30
+ while (s.txns.size > OAUTH_TXN_MAX_ENTRIES) {
31
+ const oldest = s.txns.keys().next().value;
32
+ if (!oldest) break;
33
+ const txn = s.txns.get(oldest);
34
+ s.txns.delete(oldest);
35
+ if (txn) s.byState.delete(txn.state);
36
+ }
37
+ }
38
+ function base64url(bytes) {
39
+ return bytes.toString("base64url");
40
+ }
41
+ function createPkce() {
42
+ return {
43
+ state: base64url(randomBytes(32)),
44
+ verifier: base64url(randomBytes(64)),
45
+ challenge: ""
46
+ };
47
+ }
48
+ function codeChallenge(verifier) {
49
+ return base64url(createHash("sha256").update(verifier).digest());
50
+ }
51
+ function saveTransaction(txn) {
52
+ prune();
53
+ const id = base64url(randomBytes(24));
54
+ const s = store();
55
+ s.txns.set(id, txn);
56
+ s.byState.set(txn.state, id);
57
+ return id;
58
+ }
59
+ function consumeTransaction(event, state) {
60
+ const s = store();
61
+ const id = s.byState.get(state);
62
+ if (!id) return null;
63
+ const cookie = parseCookies(event)[OAUTH_TXN_COOKIE];
64
+ if (!cookie || !safeEqual(cookie, id)) return null;
65
+ const txn = s.txns.get(id);
66
+ if (!txn) return null;
67
+ s.txns.delete(id);
68
+ s.byState.delete(state);
69
+ if (Date.now() - txn.createdAt > OAUTH_TXN_TTL_MS) return null;
70
+ return txn;
71
+ }
72
+ function clearTransactionCookie(event) {
73
+ setCookie(event, OAUTH_TXN_COOKIE, "", {
74
+ httpOnly: true,
75
+ sameSite: "lax",
76
+ path: "/",
77
+ maxAge: 0
78
+ });
79
+ }
80
+ function setTransactionCookie(event, txnId) {
81
+ setCookie(event, OAUTH_TXN_COOKIE, txnId, {
82
+ httpOnly: true,
83
+ sameSite: "lax",
84
+ path: "/",
85
+ maxAge: Math.floor(OAUTH_TXN_TTL_MS / 1e3)
86
+ });
87
+ }
88
+ const PKCE_METHOD = OAUTH_PKCE_METHOD;
89
+ function safeEqual(a, b) {
90
+ const bufA = Buffer.from(a);
91
+ const bufB = Buffer.from(b);
92
+ if (bufA.length !== bufB.length) return false;
93
+ return timingSafeEqual(bufA, bufB);
94
+ }
95
+ function safeReturnPath(value) {
96
+ return value && value.startsWith("/") && !value.startsWith("//") ? value : "/";
97
+ }
98
+
99
+ export { OAUTH_GRANT_AUTHORIZATION_CODE as O, PKCE_METHOD as P, clearTransactionCookie as a, createPkce as b, consumeTransaction as c, saveTransaction as d, setTransactionCookie as e, OAUTH_PROXY_PATH as f, codeChallenge as g, safeReturnPath as s };
@@ -27,11 +27,6 @@ const setQwenpawSessionCookies = (event, connection) => {
27
27
  path: "/",
28
28
  maxAge: QWENPAW_COOKIE_MAX_AGE
29
29
  };
30
- console.log("[qwenpaw] exchange saved connection →", {
31
- agentId: connection.agentId,
32
- agentIdIsConstant: connection.agentId === QWENPAW_DEFAULT_AGENT_ID,
33
- baseUrl: connection.baseUrl
34
- });
35
30
  setCookie(event, QWENPAW_COOKIE_BASE_URL, connection.baseUrl, common);
36
31
  };
37
32
  const readCookieValue = (event, name) => {
@@ -44,11 +39,6 @@ const resolveQwenpawConnection = (event, overrides = {}) => {
44
39
  baseUrl: overrides.baseUrl || readCookieValue(event, QWENPAW_COOKIE_BASE_URL) || config.baseUrl,
45
40
  agentId: QWENPAW_DEFAULT_AGENT_ID
46
41
  };
47
- console.log("[qwenpaw] resolveQwenpawConnection →", {
48
- agentId: resolved.agentId,
49
- source: overrides.baseUrl ? "override" : readCookieValue(event, QWENPAW_COOKIE_BASE_URL) ? "cookie" : "runtimeConfig",
50
- baseUrl: resolved.baseUrl
51
- });
52
42
  return resolved;
53
43
  };
54
44
  const hasQwenpawConnection = (event) => Boolean(resolveQwenpawConnection(event).baseUrl);
@@ -4,6 +4,8 @@
4
4
  */
5
5
  export declare const BARS_ENDPOINT: {
6
6
  readonly BASE: "/api/v1/chart/bars";
7
+ /** Latest M1 bar per symbol — POST, body `{ symbols, serverName }`. */
8
+ readonly LATEST: "/api/v1/chart/bars/latest";
7
9
  };
8
10
  /** Chart-bars query defaults (doc §5.5.1). */
9
11
  export declare const BARS_DEFAULTS: {
@@ -1 +1 @@
1
- {"version":3,"file":"bars.constant.d.ts","sourceRoot":"","sources":["../../../src/common/constants/bars.constant.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,aAAa;;CAEhB,CAAC;AAEX,8CAA8C;AAC9C,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC"}
1
+ {"version":3,"file":"bars.constant.d.ts","sourceRoot":"","sources":["../../../src/common/constants/bars.constant.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,aAAa;;IAExB,uEAAuE;;CAE/D,CAAC;AAEX,8CAA8C;AAC9C,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Central-login OAuth constants (FEAT-014 portal integration contract).
3
+ *
4
+ * The portal BFF owns state + PKCE; the browser only ever sees the
5
+ * authorize redirect and the code/state echo on the callback. Secrets and
6
+ * verifiers stay server-side.
7
+ */
8
+ export declare const OAUTH_PROXY_PATH: {
9
+ /** GET — starts the flow (302 to the CMS authorize URL). Must match the
10
+ * route the Nuxt module registers in `nuxt.ts` (SERVER_HANDLERS). */
11
+ readonly START: "/api/cms/oauth/start";
12
+ /** GET — CMS code callback (state check + code exchange). Must match the
13
+ * route the Nuxt module registers in `nuxt.ts` (SERVER_HANDLERS). */
14
+ readonly CALLBACK: "/api/cms/oauth/callback";
15
+ };
16
+ /** Browser-correlation cookie holding the local transaction id. */
17
+ export declare const OAUTH_TXN_COOKIE = "cms_oauth_txn";
18
+ /** Transaction TTL — must cover the whole login round-trip. */
19
+ export declare const OAUTH_TXN_TTL_MS: number;
20
+ /** Prune threshold — keep the in-memory map bounded. */
21
+ export declare const OAUTH_TXN_MAX_ENTRIES = 1000;
22
+ /** Token endpoint grant used for the code exchange. */
23
+ export declare const OAUTH_GRANT_AUTHORIZATION_CODE = "authorization_code";
24
+ /** PKCE method required by the CMS (S256, 43-char challenge, no padding). */
25
+ export declare const OAUTH_PKCE_METHOD = "S256";
26
+ //# sourceMappingURL=oauth.constant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.constant.d.ts","sourceRoot":"","sources":["../../../src/common/constants/oauth.constant.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;IAC3B;0EACsE;;IAEtE;0EACsE;;CAE9D,CAAC;AAEX,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,QAAiB,CAAC;AAE/C,wDAAwD;AACxD,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,uDAAuD;AACvD,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AAEnE,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,SAAS,CAAC"}
package/dist/index.d.ts CHANGED
@@ -59,7 +59,7 @@ export type { ILlmService, ILlmServiceOptions } from './services/llm';
59
59
  export type { PromptCreatePayload, PromptUpdatePayload, PromptTemplate, PromptListResponse, PromptMutationResponse, LlmProvider, LlmProviderCreatePayload, LlmProviderListResponse, LlmProviderModelsResponse, LlmProviderType, LlmProviderUpdatePayload, } from './services/llm/llm.type';
60
60
  export { createBarsService } from './services/bars';
61
61
  export type { IBarsService, IBarsServiceOptions } from './services/bars';
62
- export type { BarItem, BarsItemSource, BarsQuery, BarsResponse, BarsSortDirection, ChartIntervalFe, } from './services/bars/bars.type';
62
+ export type { BarItem, BarsItemSource, BarsLatestItem, BarsLatestQuery, BarsLatestResponse, BarsQuery, BarsResponse, BarsSortDirection, ChartIntervalFe, } from './services/bars/bars.type';
63
63
  export { CHART_INTERVAL, normalizeChartInterval } from './services/bars/bars.type';
64
64
  export { BARS_DEFAULTS, BARS_ENDPOINT } from './common/constants/bars.constant';
65
65
  export { createKalshiService } from './services/kalshi';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -667,7 +667,9 @@ function _normalize(res) {
667
667
  }
668
668
 
669
669
  const BARS_ENDPOINT = {
670
- BASE: "/api/v1/chart/bars"
670
+ BASE: "/api/v1/chart/bars",
671
+ /** Latest M1 bar per symbol — POST, body `{ symbols, serverName }`. */
672
+ LATEST: "/api/v1/chart/bars/latest"
671
673
  };
672
674
  const BARS_DEFAULTS = {
673
675
  LIMIT: 1e3,
@@ -774,6 +776,45 @@ function mockBars(params) {
774
776
  aggregated: !isM1
775
777
  };
776
778
  }
779
+ const MOCK_LATEST_BARS = {
780
+ EURUSD: {
781
+ symbol: "EURUSD",
782
+ interval: MT5_INTERVAL.M1,
783
+ mt5Ts: "2026-10-07T04:14:00",
784
+ open: 1.12356,
785
+ high: 1.12356,
786
+ low: 1.12346,
787
+ close: 1.12347,
788
+ tickVolume: 13,
789
+ volume: 13,
790
+ spread: 14,
791
+ source: "broker_snapshot",
792
+ serverName: "demo"
793
+ },
794
+ BTCUSD: {
795
+ symbol: "BTCUSD",
796
+ interval: MT5_INTERVAL.M1,
797
+ mt5Ts: "2026-10-07T04:14:00",
798
+ open: 84126.79,
799
+ high: 84130.78,
800
+ low: 84107.98,
801
+ close: 84115.13,
802
+ tickVolume: 290,
803
+ volume: 290,
804
+ spread: 500,
805
+ source: "broker_snapshot",
806
+ serverName: "demo"
807
+ }
808
+ };
809
+ function mockBarsLatest(params) {
810
+ const result = {};
811
+ for (const symbol of params.symbols) {
812
+ const row = MOCK_LATEST_BARS[symbol];
813
+ if (!row) continue;
814
+ result[symbol] = { ...row, serverName: params.serverName ?? row.serverName };
815
+ }
816
+ return result;
817
+ }
777
818
 
778
819
  function createBarsService(opts) {
779
820
  const { api, mock } = opts;
@@ -804,6 +845,20 @@ function createBarsService(opts) {
804
845
  apiQuery.sortDirection = query.sortDirection;
805
846
  }
806
847
  return api(BARS_ENDPOINT.BASE, { query: apiQuery });
848
+ },
849
+ async getLatestBars(query) {
850
+ const symbols = [...new Set(query.symbols.map((s) => s.trim()).filter(Boolean))];
851
+ if (symbols.length === 0) {
852
+ throw new TypeError("getLatestBars: `symbols` must contain at least one symbol");
853
+ }
854
+ const serverName = query.serverName ?? MT5_SERVER_NAME;
855
+ if (mock()) {
856
+ return mockBarsLatest({ symbols, serverName });
857
+ }
858
+ return api(BARS_ENDPOINT.LATEST, {
859
+ method: "POST",
860
+ body: { symbols, serverName }
861
+ });
807
862
  }
808
863
  };
809
864
  }
package/dist/nuxt.d.ts CHANGED
@@ -7,6 +7,11 @@ export interface IModuleOptions {
7
7
  */
8
8
  endpoints?: Record<string, string>;
9
9
  clientId?: string;
10
+ /**
11
+ * OAuth scope requested by the central-login flow
12
+ * (`/api/cms/oauth/start`). Default 'read'.
13
+ */
14
+ oauthScope?: string;
10
15
  /** Storage backend name. Default 'cookie'. */
11
16
  storage?: StorageName;
12
17
  /** Use fake data until the backend is ready. Default false. */
@@ -1 +1 @@
1
- {"version":3,"file":"nuxt.d.ts","sourceRoot":"","sources":["../src/nuxt.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAEvE,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,kFAAkF;IAClF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA6BD;;;;;;;;;;;;;GAaG;;AACH,wBAqCG"}
1
+ {"version":3,"file":"nuxt.d.ts","sourceRoot":"","sources":["../src/nuxt.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAEvE,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,kFAAkF;IAClF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA+BD;;;;;;;;;;;;;GAaG;;AACH,wBA4CG"}
package/dist/nuxt.js CHANGED
@@ -6,6 +6,8 @@ const SERVER_HANDLERS = [
6
6
  ["/api/cms/login", "server/auth/login.post.js"],
7
7
  ["/api/cms/logout", "server/auth/logout.post.js"],
8
8
  ["/api/cms/refresh", "server/auth/refresh.post.js"],
9
+ ["/api/cms/oauth/start", "server/oauth/start.get.js"],
10
+ ["/api/cms/oauth/callback", "server/oauth/callback.get.js"],
9
11
  ["/api/cms/cbs-start", "server/auth/cbs-start.post.js"],
10
12
  ["/api/cms/cbs-callback", "server/auth/cbs-callback.post.js"],
11
13
  ["/api/cms/idp-login", "server/auth/idp-login.get.js"],
@@ -35,6 +37,7 @@ const nuxt = defineNuxtModule({
35
37
  defaults: {
36
38
  endpoints: { cms: "cmsUrl", report: "reportUrl", poolTrading: "poolTradingUrl" },
37
39
  clientId: "clientId",
40
+ oauthScope: "read",
38
41
  storage: "cookie",
39
42
  mock: false,
40
43
  wsTopics: [],
@@ -45,6 +48,7 @@ const nuxt = defineNuxtModule({
45
48
  const { resolve } = createResolver(import.meta.url);
46
49
  nuxt.options.runtimeConfig.public ??= {};
47
50
  nuxt.options.runtimeConfig.public.cmsSdkOptions = options;
51
+ nuxt.options.runtimeConfig.cmsClientSecret ??= "";
48
52
  for (const [route, file] of SERVER_HANDLERS) {
49
53
  addServerHandler({ route, handler: resolve(file) });
50
54
  }
@@ -2,6 +2,7 @@ import { createCmsSDK, createPersistPlugin, TOKEN_STORAGE_KEY, useAuthStore, use
2
2
  import { $fetch } from 'ofetch';
3
3
  import { watch } from 'vue';
4
4
  import { defineNuxtPlugin, useRuntimeConfig, useCookie } from '#app';
5
+ import { getRequestURL } from 'h3';
5
6
 
6
7
  function buildOpts(httpOnly) {
7
8
  return httpOnly ? { httpOnly: true, secure: true, sameSite: "lax", path: "/" } : { secure: true, sameSite: "lax", path: "/" };
@@ -27,6 +28,10 @@ const TOKEN_COOKIE_OPTIONS = {
27
28
  path: "/",
28
29
  maxAge: 60 * 60 * 24 * 30
29
30
  };
31
+ function tokenCookieOptions(event) {
32
+ const secure = new URL(getRequestURL(event)).protocol === "https:";
33
+ return { ...TOKEN_COOKIE_OPTIONS, secure };
34
+ }
30
35
 
31
36
  const STORE_ATTACHMENTS = [
32
37
  { name: "auth", get: useAuthStore },
@@ -81,7 +86,7 @@ const plugin = defineNuxtPlugin(async (nuxtApp) => {
81
86
  if (import.meta.server) {
82
87
  const { setCookie, deleteCookie } = await import('h3');
83
88
  const event = nuxtApp.ssrContext?.event;
84
- if (token) setCookie(event, TOKEN_STORAGE_KEY, token, TOKEN_COOKIE_OPTIONS);
89
+ if (token) setCookie(event, TOKEN_STORAGE_KEY, token, tokenCookieOptions(event));
85
90
  else deleteCookie(event, TOKEN_STORAGE_KEY, { path: TOKEN_COOKIE_OPTIONS.path });
86
91
  } else if (token) {
87
92
  await $fetch("/api/cms/set-token", { method: "POST", body: { token } });
@@ -1,7 +1,7 @@
1
1
  import { defineEventHandler, readBody, createError } from 'h3';
2
2
  import { c as qwenpawStop, p as postConsoleChatError } from '../../../../chunks/client-Ac6qgpZ8.js';
3
3
  import { c as QWENPAW_MAX_SESSION_ID_LENGTH } from '../../../../chunks/qwenpaw.constant-DHSj9A-0.js';
4
- import { r as requireCmsSession, a as resolveFreshQwenpawConnection, b as resolveQwenpawServerConfig } from '../../../../chunks/connection--KUpmDbP.js';
4
+ import { r as requireCmsSession, a as resolveFreshQwenpawConnection, b as resolveQwenpawServerConfig } from '../../../../chunks/connection-DprBIh4D.js';
5
5
 
6
6
  const stop_post = defineEventHandler(async (event) => {
7
7
  requireCmsSession(event);
@@ -2,7 +2,7 @@ import { Readable } from 'node:stream';
2
2
  import { defineEventHandler, readBody, createError, setResponseStatus, setResponseHeader, sendStream } from 'h3';
3
3
  import { q as qwenpawChat, p as postConsoleChatError } from '../../../chunks/client-Ac6qgpZ8.js';
4
4
  import { Q as QWENPAW_MAX_MESSAGE_LENGTH, a as QWENPAW_MAX_FILES, b as QWENPAW_MAX_FILE_NAME_LENGTH, c as QWENPAW_MAX_SESSION_ID_LENGTH } from '../../../chunks/qwenpaw.constant-DHSj9A-0.js';
5
- import { r as requireCmsSession, a as resolveFreshQwenpawConnection, b as resolveQwenpawServerConfig } from '../../../chunks/connection--KUpmDbP.js';
5
+ import { r as requireCmsSession, a as resolveFreshQwenpawConnection, b as resolveQwenpawServerConfig } from '../../../chunks/connection-DprBIh4D.js';
6
6
 
7
7
  const chat_post = defineEventHandler(async (event) => {
8
8
  requireCmsSession(event);
@@ -1,6 +1,6 @@
1
1
  import { defineEventHandler, getRouterParam, createError } from 'h3';
2
2
  import { d as deleteQwenpawChat } from '../../../chunks/chats-BjSS83OW.js';
3
- import { r as requireCmsSession, a as resolveFreshQwenpawConnection } from '../../../chunks/connection--KUpmDbP.js';
3
+ import { r as requireCmsSession, a as resolveFreshQwenpawConnection } from '../../../chunks/connection-DprBIh4D.js';
4
4
 
5
5
  const chatsId_delete = defineEventHandler(async (event) => {
6
6
  requireCmsSession(event);
@@ -1,7 +1,7 @@
1
1
  import { defineEventHandler } from 'h3';
2
2
  import { l as listQwenpawChats, a as listQwenpawGroups } from '../../../chunks/chats-BjSS83OW.js';
3
3
  import { d as QWENPAW_DEFAULT_AGENT_ID } from '../../../chunks/qwenpaw.constant-DHSj9A-0.js';
4
- import { r as requireCmsSession, a as resolveFreshQwenpawConnection } from '../../../chunks/connection--KUpmDbP.js';
4
+ import { r as requireCmsSession, a as resolveFreshQwenpawConnection } from '../../../chunks/connection-DprBIh4D.js';
5
5
 
6
6
  const chats_get = defineEventHandler(async (event) => {
7
7
  requireCmsSession(event);
@@ -1,6 +1,6 @@
1
1
  import { defineEventHandler, getQuery, createError } from 'h3';
2
2
  import { f as fetchChatHistory } from '../../../chunks/chats-BjSS83OW.js';
3
- import { r as requireCmsSession, a as resolveFreshQwenpawConnection } from '../../../chunks/connection--KUpmDbP.js';
3
+ import { r as requireCmsSession, a as resolveFreshQwenpawConnection } from '../../../chunks/connection-DprBIh4D.js';
4
4
 
5
5
  const history_get = defineEventHandler(async (event) => {
6
6
  requireCmsSession(event);
@@ -1,5 +1,5 @@
1
1
  import { defineEventHandler } from 'h3';
2
- import { r as requireCmsSession, c as resolveQwenpawConnection, h as hasQwenpawConnection } from '../../../chunks/connection--KUpmDbP.js';
2
+ import { r as requireCmsSession, c as resolveQwenpawConnection, h as hasQwenpawConnection } from '../../../chunks/connection-DprBIh4D.js';
3
3
 
4
4
  const session_get = defineEventHandler((event) => {
5
5
  requireCmsSession(event);
@@ -1,5 +1,5 @@
1
1
  import { defineEventHandler } from 'h3';
2
- import { r as requireCmsSession, e as exchangeQwenpawSession, d as handleExchangeError } from '../../../chunks/connection--KUpmDbP.js';
2
+ import { r as requireCmsSession, e as exchangeQwenpawSession, d as handleExchangeError } from '../../../chunks/connection-DprBIh4D.js';
3
3
 
4
4
  const session_post = defineEventHandler(async (event) => {
5
5
  requireCmsSession(event);
@@ -1,7 +1,7 @@
1
1
  import { defineEventHandler, readMultipartFormData, createError } from 'h3';
2
2
  import { d as qwenpawUpload, p as postConsoleChatError } from '../../../chunks/client-Ac6qgpZ8.js';
3
3
  import { g as QWENPAW_MAX_UPLOAD_BYTES } from '../../../chunks/qwenpaw.constant-DHSj9A-0.js';
4
- import { r as requireCmsSession, a as resolveFreshQwenpawConnection, b as resolveQwenpawServerConfig } from '../../../chunks/connection--KUpmDbP.js';
4
+ import { r as requireCmsSession, a as resolveFreshQwenpawConnection, b as resolveQwenpawServerConfig } from '../../../chunks/connection-DprBIh4D.js';
5
5
 
6
6
  const upload_post = defineEventHandler(async (event) => {
7
7
  requireCmsSession(event);
@@ -2,7 +2,7 @@ import { defineEventHandler, createError, readBody, parseCookies, getRequestHead
2
2
  import { $fetch } from 'ofetch';
3
3
  import { a as AUTH_ENDPOINT } from '../../chunks/auth.constant-CnGo0q42.js';
4
4
  import { b as HTTP_HEADER } from '../../chunks/http.constant-BzH5tJTG.js';
5
- import { r as readSdkConfig, T as TOKEN_COOKIE_OPTIONS } from '../../chunks/_shared-Dyz_Ya9z.js';
5
+ import { r as readSdkConfig, t as tokenCookieOptions } from '../../chunks/_shared-DWYblQqx.js';
6
6
  import { T as TOKEN_STORAGE_KEY, R as REFRESH_TOKEN_STORAGE_KEY } from '../../chunks/storage.constant-CVWam5ls.js';
7
7
 
8
8
  const cbsCallback_post = defineEventHandler(async (event) => {
@@ -26,9 +26,9 @@ const cbsCallback_post = defineEventHandler(async (event) => {
26
26
  const data = response._data ?? {};
27
27
  const token = data.accessToken ?? data.access_token ?? "";
28
28
  const refreshToken = data.refreshToken ?? data.refresh_token ?? "";
29
- if (token) setCookie(event, TOKEN_STORAGE_KEY, token, TOKEN_COOKIE_OPTIONS);
29
+ if (token) setCookie(event, TOKEN_STORAGE_KEY, token, tokenCookieOptions(event));
30
30
  if (refreshToken)
31
- setCookie(event, REFRESH_TOKEN_STORAGE_KEY, refreshToken, TOKEN_COOKIE_OPTIONS);
31
+ setCookie(event, REFRESH_TOKEN_STORAGE_KEY, refreshToken, tokenCookieOptions(event));
32
32
  return { ...data, token };
33
33
  } catch (err) {
34
34
  throw createError({
@@ -2,7 +2,7 @@ import { defineEventHandler, createError, parseCookies, getRequestHeader } from
2
2
  import { $fetch } from 'ofetch';
3
3
  import { a as AUTH_ENDPOINT } from '../../chunks/auth.constant-CnGo0q42.js';
4
4
  import { b as HTTP_HEADER } from '../../chunks/http.constant-BzH5tJTG.js';
5
- import { r as readSdkConfig } from '../../chunks/_shared-Dyz_Ya9z.js';
5
+ import { r as readSdkConfig } from '../../chunks/_shared-DWYblQqx.js';
6
6
 
7
7
  const cbsStart_post = defineEventHandler(async (event) => {
8
8
  const { cmsUrl, clientId } = readSdkConfig(event);
@@ -2,7 +2,7 @@ import { defineEventHandler, createError, getQuery, parseCookies, getRequestHead
2
2
  import { $fetch } from 'ofetch';
3
3
  import { a as AUTH_ENDPOINT } from '../../chunks/auth.constant-CnGo0q42.js';
4
4
  import { b as HTTP_HEADER } from '../../chunks/http.constant-BzH5tJTG.js';
5
- import { r as readSdkConfig, T as TOKEN_COOKIE_OPTIONS } from '../../chunks/_shared-Dyz_Ya9z.js';
5
+ import { r as readSdkConfig, t as tokenCookieOptions } from '../../chunks/_shared-DWYblQqx.js';
6
6
  import { T as TOKEN_STORAGE_KEY, R as REFRESH_TOKEN_STORAGE_KEY } from '../../chunks/storage.constant-CVWam5ls.js';
7
7
 
8
8
  const idpCallback_get = defineEventHandler(async (event) => {
@@ -33,9 +33,9 @@ const idpCallback_get = defineEventHandler(async (event) => {
33
33
  });
34
34
  const token = data.accessToken ?? data.access_token ?? "";
35
35
  const refreshToken = data.refreshToken ?? data.refresh_token ?? "";
36
- if (token) setCookie(event, TOKEN_STORAGE_KEY, token, TOKEN_COOKIE_OPTIONS);
36
+ if (token) setCookie(event, TOKEN_STORAGE_KEY, token, tokenCookieOptions(event));
37
37
  if (refreshToken)
38
- setCookie(event, REFRESH_TOKEN_STORAGE_KEY, refreshToken, TOKEN_COOKIE_OPTIONS);
38
+ setCookie(event, REFRESH_TOKEN_STORAGE_KEY, refreshToken, tokenCookieOptions(event));
39
39
  return { ...data, token };
40
40
  } catch (err) {
41
41
  const beData = err?.data ?? {};
@@ -2,7 +2,7 @@ import { defineEventHandler, createError, getQuery, parseCookies } from 'h3';
2
2
  import { $fetch } from 'ofetch';
3
3
  import { a as AUTH_ENDPOINT } from '../../chunks/auth.constant-CnGo0q42.js';
4
4
  import { b as HTTP_HEADER } from '../../chunks/http.constant-BzH5tJTG.js';
5
- import { r as readSdkConfig } from '../../chunks/_shared-Dyz_Ya9z.js';
5
+ import { r as readSdkConfig } from '../../chunks/_shared-DWYblQqx.js';
6
6
  import { T as TOKEN_STORAGE_KEY } from '../../chunks/storage.constant-CVWam5ls.js';
7
7
 
8
8
  const idpLinkCallback_get = defineEventHandler(async (event) => {
@@ -2,7 +2,7 @@ import { defineEventHandler, createError, getQuery, parseCookies } from 'h3';
2
2
  import { $fetch } from 'ofetch';
3
3
  import { a as AUTH_ENDPOINT } from '../../chunks/auth.constant-CnGo0q42.js';
4
4
  import { b as HTTP_HEADER } from '../../chunks/http.constant-BzH5tJTG.js';
5
- import { r as readSdkConfig } from '../../chunks/_shared-Dyz_Ya9z.js';
5
+ import { r as readSdkConfig } from '../../chunks/_shared-DWYblQqx.js';
6
6
  import { T as TOKEN_STORAGE_KEY } from '../../chunks/storage.constant-CVWam5ls.js';
7
7
 
8
8
  const idpLinkStart_get = defineEventHandler(async (event) => {
@@ -2,7 +2,7 @@ import { defineEventHandler, createError, readBody, parseCookies } from 'h3';
2
2
  import { $fetch } from 'ofetch';
3
3
  import { a as AUTH_ENDPOINT } from '../../chunks/auth.constant-CnGo0q42.js';
4
4
  import { b as HTTP_HEADER } from '../../chunks/http.constant-BzH5tJTG.js';
5
- import { r as readSdkConfig } from '../../chunks/_shared-Dyz_Ya9z.js';
5
+ import { r as readSdkConfig } from '../../chunks/_shared-DWYblQqx.js';
6
6
  import { T as TOKEN_STORAGE_KEY } from '../../chunks/storage.constant-CVWam5ls.js';
7
7
 
8
8
  const idpLink_post = defineEventHandler(async (event) => {
@@ -2,7 +2,7 @@ import { defineEventHandler, createError, getQuery, parseCookies, getRequestHead
2
2
  import { $fetch } from 'ofetch';
3
3
  import { a as AUTH_ENDPOINT } from '../../chunks/auth.constant-CnGo0q42.js';
4
4
  import { b as HTTP_HEADER } from '../../chunks/http.constant-BzH5tJTG.js';
5
- import { r as readSdkConfig } from '../../chunks/_shared-Dyz_Ya9z.js';
5
+ import { r as readSdkConfig } from '../../chunks/_shared-DWYblQqx.js';
6
6
 
7
7
  const idpLogin_get = defineEventHandler(async (event) => {
8
8
  const { cmsUrl, clientId } = readSdkConfig(event);
@@ -2,7 +2,7 @@ import { defineEventHandler, createError, parseCookies } from 'h3';
2
2
  import { $fetch } from 'ofetch';
3
3
  import { a as AUTH_ENDPOINT } from '../../chunks/auth.constant-CnGo0q42.js';
4
4
  import { b as HTTP_HEADER } from '../../chunks/http.constant-BzH5tJTG.js';
5
- import { r as readSdkConfig } from '../../chunks/_shared-Dyz_Ya9z.js';
5
+ import { r as readSdkConfig } from '../../chunks/_shared-DWYblQqx.js';
6
6
  import { T as TOKEN_STORAGE_KEY } from '../../chunks/storage.constant-CVWam5ls.js';
7
7
 
8
8
  const idpMe_get = defineEventHandler(async (event) => {
@@ -2,7 +2,7 @@ import { defineEventHandler, createError, getQuery, parseCookies } from 'h3';
2
2
  import { $fetch } from 'ofetch';
3
3
  import { a as AUTH_ENDPOINT } from '../../chunks/auth.constant-CnGo0q42.js';
4
4
  import { b as HTTP_HEADER } from '../../chunks/http.constant-BzH5tJTG.js';
5
- import { r as readSdkConfig } from '../../chunks/_shared-Dyz_Ya9z.js';
5
+ import { r as readSdkConfig } from '../../chunks/_shared-DWYblQqx.js';
6
6
  import { T as TOKEN_STORAGE_KEY } from '../../chunks/storage.constant-CVWam5ls.js';
7
7
 
8
8
  const idpUnlink_delete = defineEventHandler(async (event) => {
@@ -2,7 +2,7 @@ import { defineEventHandler, createError, readBody, parseCookies, getRequestHead
2
2
  import { $fetch } from 'ofetch';
3
3
  import { a as AUTH_ENDPOINT } from '../../chunks/auth.constant-CnGo0q42.js';
4
4
  import { b as HTTP_HEADER } from '../../chunks/http.constant-BzH5tJTG.js';
5
- import { r as readSdkConfig, T as TOKEN_COOKIE_OPTIONS } from '../../chunks/_shared-Dyz_Ya9z.js';
5
+ import { r as readSdkConfig, t as tokenCookieOptions } from '../../chunks/_shared-DWYblQqx.js';
6
6
  import { T as TOKEN_STORAGE_KEY, R as REFRESH_TOKEN_STORAGE_KEY } from '../../chunks/storage.constant-CVWam5ls.js';
7
7
 
8
8
  const login_post = defineEventHandler(async (event) => {
@@ -29,9 +29,9 @@ const login_post = defineEventHandler(async (event) => {
29
29
  const data = response._data ?? {};
30
30
  const token = data.accessToken ?? data.access_token ?? "";
31
31
  const refreshToken = data.refreshToken ?? data.refresh_token ?? "";
32
- if (token) setCookie(event, TOKEN_STORAGE_KEY, token, TOKEN_COOKIE_OPTIONS);
32
+ if (token) setCookie(event, TOKEN_STORAGE_KEY, token, tokenCookieOptions(event));
33
33
  if (refreshToken)
34
- setCookie(event, REFRESH_TOKEN_STORAGE_KEY, refreshToken, TOKEN_COOKIE_OPTIONS);
34
+ setCookie(event, REFRESH_TOKEN_STORAGE_KEY, refreshToken, tokenCookieOptions(event));
35
35
  return { ...data, token };
36
36
  } catch (err) {
37
37
  throw createError({
@@ -2,7 +2,7 @@ import { defineEventHandler, parseCookies, deleteCookie } from 'h3';
2
2
  import { $fetch } from 'ofetch';
3
3
  import { a as AUTH_ENDPOINT } from '../../chunks/auth.constant-CnGo0q42.js';
4
4
  import { b as HTTP_HEADER } from '../../chunks/http.constant-BzH5tJTG.js';
5
- import { r as readSdkConfig, T as TOKEN_COOKIE_OPTIONS } from '../../chunks/_shared-Dyz_Ya9z.js';
5
+ import { r as readSdkConfig, T as TOKEN_COOKIE_OPTIONS } from '../../chunks/_shared-DWYblQqx.js';
6
6
  import { T as TOKEN_STORAGE_KEY, R as REFRESH_TOKEN_STORAGE_KEY } from '../../chunks/storage.constant-CVWam5ls.js';
7
7
 
8
8
  const logout_post = defineEventHandler(async (event) => {
@@ -1,8 +1,9 @@
1
1
  import { defineEventHandler, createError, parseCookies, setCookie } from 'h3';
2
+ import { useRuntimeConfig } from '#imports';
2
3
  import { $fetch } from 'ofetch';
3
4
  import { a as AUTH_ENDPOINT } from '../../chunks/auth.constant-CnGo0q42.js';
4
5
  import { b as HTTP_HEADER, R as RESPONSE_CASING_VALUE } from '../../chunks/http.constant-BzH5tJTG.js';
5
- import { r as readSdkConfig, T as TOKEN_COOKIE_OPTIONS } from '../../chunks/_shared-Dyz_Ya9z.js';
6
+ import { r as readSdkConfig, t as tokenCookieOptions } from '../../chunks/_shared-DWYblQqx.js';
6
7
  import { R as REFRESH_TOKEN_STORAGE_KEY, T as TOKEN_STORAGE_KEY } from '../../chunks/storage.constant-CVWam5ls.js';
7
8
 
8
9
  const refresh_post = defineEventHandler(async (event) => {
@@ -14,7 +15,20 @@ const refresh_post = defineEventHandler(async (event) => {
14
15
  throw createError({ statusCode: 401, message: "No refresh token" });
15
16
  }
16
17
  const snake = requestCasing === RESPONSE_CASING_VALUE.SNAKE;
18
+ const config = useRuntimeConfig(event);
19
+ const clientSecret = config?.cmsClientSecret ?? "";
17
20
  const body = snake ? { grant_type: "refresh_token", refresh_token: refreshToken } : { grantType: "refresh_token", refreshToken };
21
+ if (clientSecret) {
22
+ body.client_id = clientId;
23
+ body.client_secret = clientSecret;
24
+ if (!snake) {
25
+ body.grant_type = body.grantType;
26
+ body.refresh_token = body.refreshToken;
27
+ } else {
28
+ body.grantType = body.grant_type;
29
+ body.refreshToken = body.refresh_token;
30
+ }
31
+ }
18
32
  const headers = {
19
33
  [HTTP_HEADER.CLIENT_ID]: clientId || ""
20
34
  };
@@ -31,8 +45,9 @@ const refresh_post = defineEventHandler(async (event) => {
31
45
  });
32
46
  const token = data.accessToken ?? data.access_token ?? "";
33
47
  const newRefresh = data.refreshToken ?? data.refresh_token ?? "";
34
- if (token) setCookie(event, TOKEN_STORAGE_KEY, token, TOKEN_COOKIE_OPTIONS);
35
- if (newRefresh) setCookie(event, REFRESH_TOKEN_STORAGE_KEY, newRefresh, TOKEN_COOKIE_OPTIONS);
48
+ if (token) setCookie(event, TOKEN_STORAGE_KEY, token, tokenCookieOptions(event));
49
+ if (newRefresh)
50
+ setCookie(event, REFRESH_TOKEN_STORAGE_KEY, newRefresh, tokenCookieOptions(event));
36
51
  return { ...data, token };
37
52
  } catch (err) {
38
53
  throw createError({
@@ -2,7 +2,7 @@ import { defineEventHandler, createError, parseCookies } from 'h3';
2
2
  import { $fetch } from 'ofetch';
3
3
  import { a as AUTHZ_ENDPOINT } from '../../chunks/authz.constant-BqX8Nzw6.js';
4
4
  import { b as HTTP_HEADER } from '../../chunks/http.constant-BzH5tJTG.js';
5
- import { r as readSdkConfig } from '../../chunks/_shared-Dyz_Ya9z.js';
5
+ import { r as readSdkConfig } from '../../chunks/_shared-DWYblQqx.js';
6
6
  import { T as TOKEN_STORAGE_KEY } from '../../chunks/storage.constant-CVWam5ls.js';
7
7
 
8
8
  const portalAccess_get = defineEventHandler(async (event) => {
@@ -0,0 +1,53 @@
1
+ import { $fetch } from 'ofetch';
2
+ import { defineEventHandler, getQuery, createError, setCookie, sendRedirect } from 'h3';
3
+ import { useRuntimeConfig } from '#imports';
4
+ import { c as consumeTransaction, a as clearTransactionCookie, O as OAUTH_GRANT_AUTHORIZATION_CODE, s as safeReturnPath } from '../../chunks/_txn-DmQZNq48.js';
5
+ import { T as TOKEN_STORAGE_KEY, R as REFRESH_TOKEN_STORAGE_KEY } from '../../chunks/storage.constant-CVWam5ls.js';
6
+ import { r as readSdkConfig, t as tokenCookieOptions } from '../../chunks/_shared-DWYblQqx.js';
7
+
8
+ const callback_get = defineEventHandler(async (event) => {
9
+ const query = getQuery(event);
10
+ const code = typeof query.code === "string" ? query.code : "";
11
+ const state = typeof query.state === "string" ? query.state : "";
12
+ const oauthError = typeof query.error === "string" ? query.error : "";
13
+ const fail = async (reason) => {
14
+ clearTransactionCookie(event);
15
+ await sendRedirect(event, `/login?auth_error=${encodeURIComponent(reason)}`, 302);
16
+ };
17
+ if (oauthError) return await fail(oauthError);
18
+ if (!code || !state) return await fail("missing_code_or_state");
19
+ const txn = consumeTransaction(event, state);
20
+ if (!txn) return await fail("invalid_state");
21
+ clearTransactionCookie(event);
22
+ const { cmsUrl, clientId } = readSdkConfig(event);
23
+ if (!cmsUrl) throw createError({ statusCode: 500, message: "CMS URL not configured" });
24
+ const secret = useRuntimeConfig(event).cmsClientSecret;
25
+ if (!secret) throw createError({ statusCode: 500, message: "cmsClientSecret not configured" });
26
+ let tokenResponse;
27
+ try {
28
+ tokenResponse = await $fetch("/api/oauth/token", {
29
+ baseURL: cmsUrl,
30
+ method: "POST",
31
+ body: {
32
+ grant_type: OAUTH_GRANT_AUTHORIZATION_CODE,
33
+ code,
34
+ client_id: clientId,
35
+ client_secret: secret,
36
+ redirect_uri: txn.redirectUri,
37
+ code_verifier: txn.codeVerifier
38
+ }
39
+ });
40
+ } catch {
41
+ return await fail("token_exchange_failed");
42
+ }
43
+ const accessToken = tokenResponse.accessToken ?? tokenResponse.access_token ?? "";
44
+ const refreshToken = tokenResponse.refreshToken ?? tokenResponse.refresh_token ?? "";
45
+ if (!accessToken) return await fail("token_exchange_failed");
46
+ setCookie(event, TOKEN_STORAGE_KEY, accessToken, tokenCookieOptions(event));
47
+ if (refreshToken) {
48
+ setCookie(event, REFRESH_TOKEN_STORAGE_KEY, refreshToken, tokenCookieOptions(event));
49
+ }
50
+ await sendRedirect(event, safeReturnPath(txn.returnTo), 302);
51
+ });
52
+
53
+ export { callback_get as default };
@@ -0,0 +1,46 @@
1
+ import { defineEventHandler, createError, getQuery, getRequestURL, sendRedirect } from 'h3';
2
+ import { useRuntimeConfig } from '#imports';
3
+ import { s as safeReturnPath, b as createPkce, d as saveTransaction, e as setTransactionCookie, f as OAUTH_PROXY_PATH, g as codeChallenge, P as PKCE_METHOD } from '../../chunks/_txn-DmQZNq48.js';
4
+ import { r as readSdkConfig } from '../../chunks/_shared-DWYblQqx.js';
5
+
6
+ const start_get = defineEventHandler(async (event) => {
7
+ const config = useRuntimeConfig(event);
8
+ const centralAuthUrl = config?.public?.centralAuthUrl ?? "";
9
+ if (!centralAuthUrl) {
10
+ throw createError({ statusCode: 500, message: "centralAuthUrl not configured" });
11
+ }
12
+ const { clientId } = readSdkConfig(event);
13
+ if (!clientId) {
14
+ throw createError({ statusCode: 500, message: "clientId not configured" });
15
+ }
16
+ const query = getQuery(event);
17
+ const returnTo = safeReturnPath(typeof query.redirect === "string" ? query.redirect : void 0);
18
+ const origin = new URL(getRequestURL(event)).origin;
19
+ const redirectUri = `${origin}${OAUTH_PROXY_PATH.CALLBACK}`;
20
+ const pkce = createPkce();
21
+ const txnId = saveTransaction({
22
+ state: pkce.state,
23
+ codeVerifier: pkce.verifier,
24
+ redirectUri,
25
+ returnTo,
26
+ createdAt: Date.now()
27
+ });
28
+ setTransactionCookie(event, txnId);
29
+ const authorize = new URL(centralAuthUrl);
30
+ authorize.searchParams.set("response_type", "code");
31
+ authorize.searchParams.set("client_id", clientId);
32
+ authorize.searchParams.set("redirect_uri", redirectUri);
33
+ authorize.searchParams.set("scope", readOAuthScope(event));
34
+ authorize.searchParams.set("state", pkce.state);
35
+ authorize.searchParams.set("code_challenge", codeChallenge(pkce.verifier));
36
+ authorize.searchParams.set("code_challenge_method", PKCE_METHOD);
37
+ authorize.searchParams.set("prompt", "login");
38
+ return await sendRedirect(event, authorize.toString(), 302);
39
+ });
40
+ function readOAuthScope(event) {
41
+ const config = useRuntimeConfig(event);
42
+ const opts = config?.public?.cmsSdkOptions ?? {};
43
+ return opts.oauthScope || "read";
44
+ }
45
+
46
+ export { start_get as default };
@@ -26,8 +26,9 @@ export interface BarsQuery {
26
26
  }
27
27
  export type BarsSortDirection = 'asc' | 'desc';
28
28
  /** Aggregation-source label for a derived bar (doc §5.5.2). Distinct from
29
- * MT5ChartBarSource (raw Mt5ChartBar.data.source, doc §4.6). */
30
- export type BarsItemSource = 'aggregated' | 'live' | 'backfill';
29
+ * MT5ChartBarSource (raw Mt5ChartBar.data.source, doc §4.6).
30
+ * `broker_snapshot` — seen on `POST /api/v1/chart/bars/latest` (live demo). */
31
+ export type BarsItemSource = 'aggregated' | 'live' | 'backfill' | 'broker_snapshot';
31
32
  export interface BarItem {
32
33
  symbol: string;
33
34
  /** Canonical MT5-style bucket width. */
@@ -74,5 +75,24 @@ export declare const CHART_INTERVAL: {
74
75
  export type ChartIntervalFe = (typeof CHART_INTERVAL)[keyof typeof CHART_INTERVAL];
75
76
  /** Map either dialect to the canonical MT5 label. */
76
77
  export declare function normalizeChartInterval(input: MT5Interval | ChartIntervalFe | string): MT5Interval;
78
+ /**
79
+ * Latest-bar query — mirrors BE `POST /api/v1/chart/bars/latest`.
80
+ * All fields camelCase; the service forwards them verbatim to the backend.
81
+ */
82
+ export interface BarsLatestQuery {
83
+ /** Non-empty symbol list; duplicates are deduped before the call. */
84
+ symbols: string[];
85
+ /** MT5 server filter. Defaults to `MT5_SERVER_NAME` when omitted. */
86
+ serverName?: string;
87
+ }
88
+ /** One latest-bar row: a plain `BarItem` plus the resolved server. */
89
+ export type BarsLatestItem = BarItem & {
90
+ serverName: string;
91
+ };
92
+ /**
93
+ * Latest-bar response — a map keyed by SYMBOL (verified against the live
94
+ * demo endpoint). Symbols with no bar are simply absent from the map.
95
+ */
96
+ export type BarsLatestResponse = Record<string, BarsLatestItem>;
77
97
  export {};
78
98
  //# sourceMappingURL=bars.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bars.type.d.ts","sourceRoot":"","sources":["../../../src/services/bars/bars.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAErF,4DAA4D;AAC5D,KAAK,MAAM,GAAG,OAAO,YAAY,CAAC,EAAE,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,EAAE,WAAW,GAAG,eAAe,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACxD,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,MAAM,CAAC;AAE/C;iEACiE;AACjE,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;AAEhE,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,QAAQ,EAAE,WAAW,CAAC;IACtB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,QAAQ,EAAE,WAAW,CAAC;IACtB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,iFAAiF;AACjF,eAAO,MAAM,cAAc;;;;;;;;;;CAUjB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAenF,qDAAqD;AACrD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,GAAG,WAAW,CAGjG"}
1
+ {"version":3,"file":"bars.type.d.ts","sourceRoot":"","sources":["../../../src/services/bars/bars.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAErF,4DAA4D;AAC5D,KAAK,MAAM,GAAG,OAAO,YAAY,CAAC,EAAE,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,EAAE,WAAW,GAAG,eAAe,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACxD,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,MAAM,CAAC;AAE/C;;gFAEgF;AAChF,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAEpF,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,QAAQ,EAAE,WAAW,CAAC;IACtB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,QAAQ,EAAE,WAAW,CAAC;IACtB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,iFAAiF;AACjF,eAAO,MAAM,cAAc;;;;;;;;;;CAUjB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAenF,qDAAqD;AACrD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,GAAG,WAAW,CAGjG;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,sEAAsE;AACtE,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { $Fetch } from 'ofetch';
2
- import { BarsQuery, BarsResponse } from './bars.type';
2
+ import { BarsLatestQuery, BarsLatestResponse, BarsQuery, BarsResponse } from './bars.type';
3
3
  export interface IBarsServiceOptions {
4
4
  /** The CMS `$Fetch` instance (one of `sdk.apis`). */
5
5
  api: $Fetch;
@@ -8,14 +8,23 @@ export interface IBarsServiceOptions {
8
8
  }
9
9
  export interface IBarsService {
10
10
  getBars(query: BarsQuery): Promise<BarsResponse>;
11
+ /**
12
+ * Latest M1 bar per symbol — `POST /api/v1/chart/bars/latest`.
13
+ * Wire contract (verified against the live demo server): body
14
+ * `{ symbols, serverName }` (camelCase); response is a map keyed by
15
+ * SYMBOL, each value a `BarsLatestItem`. Unknown symbols are omitted.
16
+ */
17
+ getLatestBars(query: BarsLatestQuery): Promise<BarsLatestResponse>;
11
18
  }
12
19
  /**
13
20
  * Chart-bars service (read-only). Wraps `GET /api/v1/chart/bars` — the
14
21
  * canonical OHLC read path for chart rendering of any timeframe. Storage
15
22
  * is always M1; larger timeframes are derived on demand via bucket-and-reduce.
23
+ * Also wraps `POST /api/v1/chart/bars/latest` (latest bar per symbol).
16
24
  *
17
- * Endpoint contract (`eaera_cms/chart/routes.py`, doc §5.5):
18
- * GET /api/v1/chart/bars → BarsResponse
25
+ * Endpoint contracts (`eaera_cms/chart/routes.py`, doc §5.5):
26
+ * GET /api/v1/chart/bars → BarsResponse
27
+ * POST /api/v1/chart/bars/latest → BarsLatestResponse
19
28
  *
20
29
  * While `mock()` returns true, all methods resolve against the local fake
21
30
  * dataset and never touch `api`.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/bars/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,IAAI,EAAE,MAAM,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAClD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAmCzE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/bars/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhG,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,IAAI,EAAE,MAAM,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACjD;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACpE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAsDzE"}
@@ -1,4 +1,4 @@
1
- import { BarItem, BarsResponse } from './bars.type';
1
+ import { BarItem, BarsLatestItem, BarsLatestResponse, BarsResponse } from './bars.type';
2
2
  /**
3
3
  * Fake OHLC bars for EURUSD spanning both M1 and H1 buckets.
4
4
  * Includes rows with null fields to exercise nullability.
@@ -19,5 +19,20 @@ interface MockBarsParams {
19
19
  * sourceInterval='M1', aggregated=(interval!=='M1'), count=items.length.
20
20
  */
21
21
  export declare function mockBars(params: MockBarsParams): BarsResponse;
22
+ /**
23
+ * Fake latest-bar rows mirroring the live `POST /api/v1/chart/bars/latest`
24
+ * response (demo server, `source: 'broker_snapshot'`). Values mirror a real
25
+ * snapshot; `mt5Ts` is a fixed minute bucket.
26
+ */
27
+ export declare const MOCK_LATEST_BARS: Record<string, BarsLatestItem>;
28
+ /**
29
+ * Build a fake BarsLatestResponse — keyed by symbol, echoing the requested
30
+ * `serverName`; symbols with no fake row are omitted (same behaviour as the
31
+ * backend for unknown symbols).
32
+ */
33
+ export declare function mockBarsLatest(params: {
34
+ symbols: string[];
35
+ serverName?: string;
36
+ }): BarsLatestResponse;
22
37
  export {};
23
38
  //# sourceMappingURL=mock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../src/services/bars/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIzD;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,EAqD9B,CAAC;AAEF,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAiB7D"}
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../src/services/bars/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI7F;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,EAqD9B,CAAC;AAEF,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAiB7D;AACD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CA6B3D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,kBAAkB,CAQrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eaera-com/cms-sdk",
3
- "version": "0.1.100",
3
+ "version": "0.1.102",
4
4
  "description": "EAERA CMS SDK — data access layer for Nuxt 3 apps (ofetch + Pinia + typed services)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",