@oyna360/game-sdk 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,7 +11,7 @@ SDK رسمی اتصال **بازی شما** به **پلتفرم oyna360**.
11
11
 
12
12
  **نسخه:** `0.6.0` · بدون وابستگی runtime · TypeScript داخل پکیج
13
13
 
14
- > این SDK مسئول لابی ۳D نیست. برای لابی از [`@oyna360/lobby-sdk`](https://www.npmjs.com/package/@oyna360/lobby-sdk) استفاده کنید. این دو پکیج را ادغام نکنید.
14
+ > برای لابی ۳D و لود آواتار از [`@oyna360/lobby-babylon`](https://www.npmjs.com/package/@oyna360/lobby-babylon) استفاده کنید؛ `@oyna360/lobby-sdk` فقط Core شبکه و state است. [مرجع استاندارد آواتار و راهنمای AI](https://github.com/mamadjavadrasti/oyna360-lobby-babylon/blob/master/docs/08-avatars.md).
15
15
 
16
16
  ---
17
17
 
@@ -181,7 +181,7 @@ Production از `postMessage` به parent استفاده می‌کند؛ Direct
181
181
 
182
182
  ```ts
183
183
  import { PlatformSDK } from '@oyna360/game-sdk';
184
- import { PlatformLobby } from '@oyna360/lobby-sdk';
184
+ import { PlatformLobby } from '@oyna360/lobby-babylon';
185
185
 
186
186
  const init = await PlatformSDK.init({ /* … */ });
187
187
  const lobby = await PlatformLobby.create({
@@ -194,6 +194,8 @@ const lobby = await PlatformLobby.create({
194
194
 
195
195
  `lobby.wsUrl` را هاردکد نکنید.
196
196
 
197
+ کل `init` را منتقل کنید تا مدل، لباس و اکسسوری کاربر حفظ شود. `PlatformLobby.create` لود GLB، Draco و آواتار دیگران را خودکار انجام می‌دهد. برای رندر در صحنهٔ اختصاصی و محدودیت‌های شخصی‌سازی، [راهنمای آواتار](https://github.com/mamadjavadrasti/oyna360-lobby-babylon/blob/master/docs/08-avatars.md) را بخوانید.
198
+
197
199
  ---
198
200
 
199
201
  ## لایسنس
package/dist/index.d.ts CHANGED
@@ -40,7 +40,7 @@ export declare function getWallet(): Promise<WalletBalanceResponse>;
40
40
  * Convert platform gems into in-game coins.
41
41
  * Platform deducts gems; the game must credit `coinsReceived` to its own economy.
42
42
  */
43
- export declare function convertGems(gems: number): Promise<ConvertGemsResponse>;
43
+ export declare function convertGems(gems: number, requestId?: string): Promise<ConvertGemsResponse>;
44
44
  export declare function endSession(): Promise<void>;
45
45
  export declare const PlatformSDK: {
46
46
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAQjB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,yBAAyB,CAAC,EAAE,mBAAmB,CAAC;QAChD,sFAAsF;QACtF,4BAA4B,CAAC,EAAE,OAAO,CAAC;QACvC,eAAe,CAAC,EAAE;YAChB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH;CACF;AA6eD;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,CA+DpF;AAED,wBAAgB,OAAO,IAAI,OAAO,GAAG,IAAI,CAExC;AAED,wBAAgB,UAAU,IAAI,UAAU,GAAG,IAAI,CAE9C;AAED,wBAAgB,cAAc,IAAI,cAAc,GAAG,IAAI,CAEtD;AAED,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED,2EAA2E;AAC3E,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiB7E;AAED,gFAAgF;AAChF,wBAAsB,cAAc,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAa7E;AAED,gEAAgE;AAChE,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAiBvF;AAED,mEAAmE;AACnE,wBAAsB,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAQrE;AAED,+DAA+D;AAC/D,wBAAsB,SAAS,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAQhE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgB5E;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BhD;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CAcvB,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAQjB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,yBAAyB,CAAC,EAAE,mBAAmB,CAAC;QAChD,sFAAsF;QACtF,4BAA4B,CAAC,EAAE,OAAO,CAAC;QACvC,eAAe,CAAC,EAAE;YAChB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH;CACF;AA+eD;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,CA+DpF;AAED,wBAAgB,OAAO,IAAI,OAAO,GAAG,IAAI,CAExC;AAED,wBAAgB,UAAU,IAAI,UAAU,GAAG,IAAI,CAE9C;AAED,wBAAgB,cAAc,IAAI,cAAc,GAAG,IAAI,CAEtD;AAED,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED,2EAA2E;AAC3E,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiB7E;AAED,gFAAgF;AAChF,wBAAsB,cAAc,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAa7E;AAED,gEAAgE;AAChE,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAiBvF;AAED,mEAAmE;AACnE,wBAAsB,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAQrE;AAED,+DAA+D;AAC/D,wBAAsB,SAAS,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAQhE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAoBhG;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BhD;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CAcvB,CAAC;AAEF,eAAe,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -175,15 +175,15 @@ if (typeof window !== 'undefined') {
175
175
  window.addEventListener('message', onMessage);
176
176
  signalReady();
177
177
  }
178
- function postToPlatform(outboundType, payload, resultType, timeoutMs = DEFAULT_REQUEST_TIMEOUT_MS) {
178
+ function postToPlatform(outboundType, payload, resultType, timeoutMs = DEFAULT_REQUEST_TIMEOUT_MS, stableRequestId) {
179
179
  return new Promise((resolve, reject) => {
180
180
  if (!isEmbeddedInPlatform()) {
181
181
  reject(new Error(`${outboundType} requires the platform iframe parent`));
182
182
  return;
183
183
  }
184
- const requestId = typeof crypto !== 'undefined' && crypto.randomUUID
184
+ const requestId = stableRequestId ?? (typeof crypto !== 'undefined' && crypto.randomUUID
185
185
  ? crypto.randomUUID()
186
- : `${Date.now()}-${Math.random()}`;
186
+ : `${Date.now()}-${Math.random()}`);
187
187
  const timer = setTimeout(() => {
188
188
  window.removeEventListener('message', onResult);
189
189
  reject(new Error('Platform SDK request timeout'));
@@ -250,9 +250,9 @@ async function apiRequest(path, options = {}) {
250
250
  }
251
251
  return data;
252
252
  }
253
- function callPlatformFeature(outboundType, payload, resultType, directCall) {
253
+ function callPlatformFeature(outboundType, payload, resultType, directCall, stableRequestId) {
254
254
  if (isEmbeddedInPlatform()) {
255
- return postToPlatform(outboundType, payload, resultType);
255
+ return postToPlatform(outboundType, payload, resultType, DEFAULT_REQUEST_TIMEOUT_MS, stableRequestId);
256
256
  }
257
257
  return directCall();
258
258
  }
@@ -564,15 +564,18 @@ async function getWallet() {
564
564
  * Convert platform gems into in-game coins.
565
565
  * Platform deducts gems; the game must credit `coinsReceived` to its own economy.
566
566
  */
567
- async function convertGems(gems) {
567
+ async function convertGems(gems, requestId) {
568
568
  const payload = await init();
569
569
  if (!Number.isInteger(gems) || gems < 1) {
570
570
  throw new Error('gems must be a positive integer');
571
571
  }
572
+ if (requestId !== undefined && !/^[A-Za-z0-9_-]{8,128}$/.test(requestId)) {
573
+ throw new Error('requestId must contain 8-128 ASCII letters, digits, underscores or hyphens');
574
+ }
572
575
  return callPlatformFeature('platform:gems:exchange', { sessionToken: payload.session.token, gems }, 'platform:gems:exchange:result', () => apiRequest(`/games/${payload.game.slug}/wallet/exchange`, {
573
576
  method: 'POST',
574
- body: { gems },
575
- }));
577
+ body: { gems, requestId },
578
+ }), requestId);
576
579
  }
577
580
  async function endSession() {
578
581
  const token = initPayload?.session.token;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAyiBA,oBA+DC;AAED,0BAEC;AAED,gCAEC;AAED,wCAEC;AAED,0BAEC;AAGD,kCAiBC;AAGD,wCAaC;AAGD,8CAiBC;AAGD,0CAQC;AAGD,8BAQC;AAMD,kCAgBC;AAED,gCA2BC;AAzvBD,mCAciB;AAER,4FAfP,mBAAW,OAeO;AAmBpB,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAC5C,MAAM,cAAc,GAAG,eAAe,CAAC;AAiBvC,IAAI,WAAW,GAA0B,IAAI,CAAC;AAC9C,4EAA4E;AAC5E,IAAI,qBAAqB,GAAkB,IAAI,CAAC;AAChD,kFAAkF;AAClF,IAAI,iBAAiB,GAAkB,IAAI,CAAC;AAC5C,MAAM,WAAW,GAIZ,EAAE,CAAC;AAER,SAAS,oBAAoB;IAC3B,IAAI,CAAC;QACH,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,GAAW;IAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACvC,IAAI,OAAO;QAAE,iBAAiB,GAAG,OAAO,CAAC;AAC3C,CAAC;AAED,SAAS,aAAa,CAAC,OAA6C;IAClE,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAa;IACnC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,CAAC,GAAG,IAAoC,CAAC;IAC/C,OAAO,CACL,CAAC,CAAC,IAAI,KAAK,eAAe;QAC1B,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK;QAClB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI;QACd,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CACtB,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc;IAC3C,IAAI,CAAC,qBAAqB,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1D,qBAAqB,GAAG,MAAM,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB;IAC7B,IAAI,qBAAqB;QAAE,OAAO,qBAAqB,CAAC;IACxD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC;QACnD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC;gBACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACzD,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,KAAmB;IACnD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,CAAC,oBAAoB,EAAE;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,qBAAqB,IAAI,KAAK,CAAC,MAAM,KAAK,qBAAqB;QAAE,OAAO,KAAK,CAAC;IAClF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mFAAmF;AACnF,SAAS,mBAAmB,CAAC,OAAuB;IAClD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,MAAM,OAAO,GAAwB;QACnC,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,mBAAW;QACpB,GAAG,OAAO;KACX,CAAC;IACF,MAAM,CAAC,yBAAyB,GAAG,OAAO,CAAC;IAC3C,MAAM,CAAC,4BAA4B,GAAG,IAAI,CAAC;IAC3C,MAAM,CAAC,aAAa,CAClB,IAAI,YAAY,CAAC,SAAS,EAAE;QAC1B,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;KAC/B,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,OAAuB;IACzC,0EAA0E;IAC1E,IAAI,WAAW;QAAE,OAAO;IACxB,WAAW,GAAG,OAAO,CAAC;IACtB,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAmB;IACpC,IAAI,WAAW;QAAE,OAAO;IACxB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;QAAE,OAAO;IAE7C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,qFAAqF;QACrF,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAK,IAA0B,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC9F,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,IAA2B,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI;YAAE,OAAO;QAChF,MAAM,MAAM,GAAmB,OAAO,CAAC,MAAM,IAAI;YAC/C,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE,YAAY;YACxB,YAAY,EAAE,EAAE;SACjB,CAAC;QACF,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,UAAU,CACR,aAAa,CAAC;YACZ,GAAG,OAAO;YACV,MAAM;SACP,CAAC,CACH,CAAC;QACF,OAAO;IACT,CAAC;IACD,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,IAAI,CAAC,oBAAoB,EAAE;QAAE,OAAO;IACpC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAClC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC9C,WAAW,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CACrB,YAAoB,EACpB,OAAgC,EAChC,UAAkB,EAClB,SAAS,GAAG,0BAA0B;IAEtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,YAAY,sCAAsC,CAAC,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GACb,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU;YAChD,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE;YACrB,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAEvC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACpD,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,SAAS,QAAQ,CAAC,KAAmB;YACnC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;gBAAE,OAAO;YAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;gBAAE,OAAO;YAC1E,IAAK,IAA+B,CAAC,SAAS,KAAK,SAAS;gBAAE,OAAO;YAErE,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChD,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEpC,MAAM,KAAK,GAAI,IAA2B,CAAC,KAAK,CAAC;YACjD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,OAAO,CAAE,IAAsB,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACrG,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa,EAAE,QAAgB;IACvD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACvD,MAAM,OAAO,GAAI,IAA8B,CAAC,OAAO,CAAC;IACxD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,sFAAsF;AACtF,KAAK,UAAU,UAAU,CACvB,IAAY,EACZ,UAKI,EAAE;IAEN,MAAM,IAAI,GAAG,iBAAiB,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,MAAM,EAAE,kBAAkB;KAC3B,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE;QAC7C,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACvE,OAAO;QACP,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAC5E,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,IAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAC1B,YAAoB,EACpB,OAAgC,EAChC,UAAkB,EAClB,UAA4B;IAE5B,IAAI,oBAAoB,EAAE,EAAE,CAAC;QAC3B,OAAO,cAAc,CAAI,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,sBAAsB;IACnC,IAAI,CAAC,iBAAiB,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK;QAAE,OAAO;IAC/D,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgC;IACxD,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,WAAW,IAAI,UAAU,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/F,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1E,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,IAAI,UAAU,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/E,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,IAAI,UAAU,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrF,IAAI,cAAc,GAAG,CAAC,OAAO,EAAE,cAAc,IAAI,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtG,IAAI,CAAC,cAAc,IAAI,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,gGAAgG;YAChG,uDAAuD;YACvD,cAAc,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,cAAc,GAAG,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AACzE,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC1C,OAAgC;IAEhC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxE,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,8EAA8E;YAC5E,sGAAsG,CACzG,CAAC;IACJ,CAAC;IAED,yBAAyB,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAEtC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,sBAAsB,EAAE;QACjE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;KACvD,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,GAAG,GACP,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAC9B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC3B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzB,CAAC,CAAC,4BAA4B,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,IAAsB,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACxC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,WAAmB,EACnB,IAAY,EACZ,UAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,yBAAyB,EAAE;QACpE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;KAC3C,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,GAAG,GACP,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAC9B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC3B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzB,CAAC,CAAC,2CAA2C,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,IAAsB,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,KAAK,GAAG,GAAG,CAAC;IAClB,MAAM,MAAM,GAAG,GAAG,CAAC;IACnB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC,IAAI,CAChB,OAAO,EACP,kBAAkB,EAClB,mBAAmB,KAAK,WAAW,MAAM,SAAS,IAAI,QAAQ,GAAG,EAAE,CACpE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC1C,OAAgC;IAEhC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5E,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,gFAAgF;YAC9E,4EAA4E,CAC/E,CAAC;IACJ,CAAC;IAED,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAEvC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC1C,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;IACxG,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAC1D,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC/C,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAElF,OAAO,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC;QAC9C,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACvD,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,OAAuB,EAAE,EAAE;YACzC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,IAAI,GAAG,CAAC,GAAU,EAAE,EAAE;YAC1B,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACnC,IAAI,CACF,IAAI,KAAK,CACP,oGAAoG,CACrG,CACF,CAAC;QACJ,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,EAAE;YAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO;YAC9C,IAAK,IAA0B,CAAC,IAAI,KAAK,gBAAgB;gBAAE,OAAO;YAClE,IAAI,cAAc,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,cAAc,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc;gBAAE,OAAO;YAC5C,MAAM,IAAI,GAAI,IAA0B,CAAC,IAAI,CAAC;YAC9C,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,KAAK,eAAe,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzE,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAElD,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,gFAAgF;YAChF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,WAAW,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;YAC9D,IAAI,KAAK,IAAI,CAAC;gBAAE,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC,CAAC;QAC5F,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7C,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,IAAI,CAAC,OAAgC;IACzD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,kEAAkE;IAClE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,yBAAyB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,oEAAoE;IACpE,IAAI,OAAO,EAAE,cAAc,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,qBAAqB,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5F,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC;IAED,mFAAmF;IACnF,IAAI,MAAM,CAAC,4BAA4B,IAAI,MAAM,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5F,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,GAAG;gBACd,QAAQ,EAAE,SAAS;gBACnB,SAAS,EAAE,WAAW;gBACtB,UAAU,EAAE,YAAY;gBACxB,YAAY,EAAE,EAAE;aACjB,CAAC;QACJ,CAAC;QACD,UAAU,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,oBAAoB,EAAE,EAAE,CAAC;QAC3B,OAAO,iBAAiB,CAAC,OAAO,EAAE,OAAO,IAAI,uBAAuB,CAAC,CAAC;IACxE,CAAC;IAED,oFAAoF;IACpF,kFAAkF;IAClF,IAAI,CAAC;QACH,OAAO,MAAM,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;IAChC,CAAC;IAED,iEAAiE;IACjE,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,CAAC;QAC7D,UAAU,CAAC,OAAO,CAAC,CAAC;QACpB,KAAK,sBAAsB,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAC7D,UAAU,CAAC,OAAO,CAAC,CAAC;IACpB,KAAK,sBAAsB,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,OAAO;IACrB,OAAO,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC;AACnC,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,WAAW,EAAE,OAAO,IAAI,IAAI,CAAC;AACtC,CAAC;AAED,SAAgB,cAAc;IAC5B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAgB,OAAO;IACrB,OAAO,WAAW,KAAK,IAAI,CAAC;AAC9B,CAAC;AAED,2EAA2E;AACpE,KAAK,UAAU,WAAW,CAAC,KAAa;IAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,mBAAmB,CACxB,uBAAuB,EACvB,EAAE,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAC1D,uBAAuB,EACvB,GAAG,EAAE,CACH,UAAU,CAAsB,UAAU,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE;QACpE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;KAC5B,CAAC,CACL,CAAC;AACJ,CAAC;AAED,gFAAgF;AACzE,KAAK,UAAU,cAAc,CAAC,KAAK,GAAG,EAAE;IAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,OAAO,mBAAmB,CACxB,0BAA0B,EAC1B,EAAE,KAAK,EAAE,SAAS,EAAE,EACpB,6BAA6B,EAC7B,GAAG,EAAE,CACH,UAAU,CACR,UAAU,OAAO,CAAC,IAAI,CAAC,IAAI,sBAAsB,SAAS,EAAE,EAC5D,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CACJ,CAAC;AACJ,CAAC;AAED,gEAAgE;AACzD,KAAK,UAAU,iBAAiB,CAAC,GAAW;IACjD,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAClC,OAAO,mBAAmB,CACxB,6BAA6B,EAC7B,EAAE,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,EAC5D,oCAAoC,EACpC,GAAG,EAAE,CACH,UAAU,CAA4B,UAAU,OAAO,CAAC,IAAI,CAAC,IAAI,sBAAsB,EAAE;QACvF,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE;KAC9B,CAAC,CACL,CAAC;AACJ,CAAC;AAED,mEAAmE;AAC5D,KAAK,UAAU,eAAe;IACnC,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;IAC7B,OAAO,mBAAmB,CACxB,2BAA2B,EAC3B,EAAE,EACF,8BAA8B,EAC9B,GAAG,EAAE,CAAC,UAAU,CAAuB,UAAU,OAAO,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,CACtF,CAAC;AACJ,CAAC;AAED,+DAA+D;AACxD,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;IAC7B,OAAO,mBAAmB,CACxB,qBAAqB,EACrB,EAAE,EACF,wBAAwB,EACxB,GAAG,EAAE,CAAC,UAAU,CAAwB,UAAU,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAC9E,CAAC;AACJ,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,mBAAmB,CACxB,wBAAwB,EACxB,EAAE,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAC7C,+BAA+B,EAC/B,GAAG,EAAE,CACH,UAAU,CAAsB,UAAU,OAAO,CAAC,IAAI,CAAC,IAAI,kBAAkB,EAAE;QAC7E,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,EAAE,IAAI,EAAE;KACf,CAAC,CACL,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,UAAU;IAC9B,MAAM,KAAK,GAAG,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC;IACzC,IAAI,CAAC,KAAK,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAEpD,IAAI,oBAAoB,EAAE,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,WAAW,CACvB;YACE,IAAI,EAAE,sBAAsB;YAC5B,YAAY,EAAE,KAAK;SACpB,EACD,MAAM,CACP,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,eAAe,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE,KAAK,EAAE;gBACf,IAAI,EAAE,KAAK;aACZ,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;IACH,CAAC;AACH,CAAC;AAEY,QAAA,WAAW,GAAG;IACzB,OAAO,EAAE,mBAAW;IACpB,IAAI;IACJ,OAAO;IACP,UAAU;IACV,cAAc;IACd,OAAO;IACP,WAAW;IACX,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,WAAW;IACX,UAAU;CACX,CAAC;AAEF,kBAAe,mBAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@
20
20
 
21
21
  | کار | کجا |
22
22
  |-----|-----|
23
- | لابی ۳D، آواتار متحرک، چت لابی، WebSocket بازیکنان | `@oyna360/lobby-sdk` |
23
+ | لابی ۳D و آواتار متحرک با شبکه | `@oyna360/lobby-babylon` (بر پایه Core در `@oyna360/lobby-sdk`) |
24
24
  | سرور اختصاصی گیم‌پلی شما | سرور خودتان |
25
25
  | ذخیره پسورد یا توکن دائمی داخل بازی | نباید انجام شود |
26
26
 
@@ -46,7 +46,7 @@
46
46
  │
47
47
  ┌────────────┴────────────┐
48
48
  ▼ ▼
49
- گیم‌پلی / امتیاز @oyna360/lobby-sdk
49
+ گیم‌پلی / امتیاز @oyna360/lobby-babylon
50
50
  (score, wallet, …) (لابی ۳D اختیاری)
51
51
  ```
52
52
 
package/docs/02-init.md CHANGED
@@ -1,136 +1,138 @@
1
- # `init()` و Platform Context
2
-
3
- اولین فراخوانی تقریباً همیشه `PlatformSDK.init()` است.
4
-
5
- ## امضا
6
-
7
- ```ts
8
- function init(options?: PlatformSdkInitOptions): Promise<SdkInitPayload>;
9
-
10
- interface PlatformSdkInitOptions {
11
- /** حداکثر انتظار (ms). در iframe پیش‌فرض ~10s؛ در Direct برای authorize می‌توانید بیشتر بدهید. */
12
- timeout?: number;
13
- /** پایه API با `/api` — الزامی در Direct Development */
14
- platformUrl?: string;
15
- /** origin وب پلتفرم برای صفحه Authorize — در Direct اگر API و Web جدا باشند الزامی */
16
- platformWebUrl?: string;
17
- /** slug بازی published — الزامی در Direct Development */
18
- gameSlug?: string;
19
- }
20
- ```
21
-
22
- جایگزین تنظیمات Direct:
23
-
24
- ```ts
25
- window.__OYNA360_DEV__ = {
26
- platformUrl: 'https://oyna360.ir/api',
27
- platformWebUrl: 'https://oyna360.ir',
28
- gameSlug: 'my-game',
29
- };
30
- ```
31
-
32
- ---
33
-
34
- ## خروجی — `SdkInitPayload`
35
-
36
- همان Context استاندارد Production (`platform:init`):
37
-
38
- ```ts
39
- interface SdkInitPayload {
40
- user: SdkUser;
41
- session: SdkSession;
42
- game: SdkGameInfo;
43
- avatar: SdkLobbyAvatar;
44
- avatarBases?: Array<{ id: string; glbUrl: string }>;
45
- lobby?: {
46
- wsUrl: string; // مثلاً https://oyna360.ir/lobby
47
- roomId: string; // مثلاً game:my-game
48
- strictRoom?: boolean;
49
- };
50
- }
51
- ```
52
-
53
- | فیلد | کاربرد |
54
- |------|--------|
55
- | `user` | نمایش نام، id |
56
- | `session` | `{ id, token }` — سشن بازی ephemeral |
57
- | `game` | `slug` / `name` |
58
- | `avatar` | ظاهر لابی برای lobby-sdk |
59
- | `avatarBases` | کاتالوگ GLB مشترک (اختیاری) |
60
- | `lobby` | آدرس WebSocket و اتاق — **هاردکد نکنید** |
61
-
62
- ---
63
-
64
- ## رفتار بر اساس محیط
65
-
66
- ### 1) داخل iframe پلتفرم (Production)
67
-
68
- 1. SDK در صورت embed بودن، `platform:ready` به parent می‌فرستد.
69
- 2. منتظر `platform:init` می‌ماند.
70
- 3. Context را ذخیره می‌کند و همان را روی `window` هم برای lobby-sdk منتشر می‌کند.
71
-
72
- ```ts
73
- const ctx = await PlatformSDK.init({ timeout: 15_000 });
74
- ```
75
-
76
- ### 2) تب مستقیم / بدون parent (Direct Development)
77
-
78
- 1. اگر `platformUrl` + `gameSlug` نباشد → خطای واضح.
79
- 2. صفحه `/dev/game-auth` (popup یا redirect) باز می‌شود.
80
- 3. با اکانت واقعی لاگین می‌کنید.
81
- 4. code یک‌بارمصرف → `exchange` → همان `SdkInitPayload`.
82
-
83
- ```ts
84
- const ctx = await PlatformSDK.init({
85
- platformUrl: 'https://oyna360.ir/api',
86
- platformWebUrl: 'https://oyna360.ir',
87
- gameSlug: 'my-game',
88
- timeout: 120_000,
89
- });
90
- ```
91
-
92
- ### 3) Idempotent
93
-
94
- اگر قبلاً init شده باشد، فراخوانی بعدی همان Promise/payload را می‌دهد.
95
-
96
- ---
97
-
98
- ## بعد از init
99
-
100
- ```ts
101
- PlatformSDK.isReady(); // true
102
- PlatformSDK.getUser(); // SdkUser | null
103
- PlatformSDK.getSession(); // SdkSession | null
104
- PlatformSDK.getInitPayload(); // SdkInitPayload | null (کامل)
105
- ```
106
-
107
- ---
108
-
109
- ## تحویل به lobby-sdk
110
-
111
- روش توصیه‌شده:
112
-
113
- ```ts
114
- const init = await PlatformSDK.init({ /* … */ });
115
- await PlatformLobby.create({
116
- canvas,
117
- platformInit: init,
118
- roomId: init.lobby!.roomId,
119
- wsUrl: init.lobby!.wsUrl,
120
- });
121
- ```
122
-
123
- یا بعد از `init()` می‌توانید `PlatformLobby.createFromPlatform(canvas)` را بزنید (SDK لابی از Context منتشرشده روی window استفاده می‌کند).
124
-
125
- ---
126
-
127
- ## خطاهای رایج
128
-
129
- | پیام / وضعیت | معنی |
130
- |--------------|------|
131
- | `init timeout — is the game running inside the platform?` | iframe هستید ولی parent `platform:init` نفرستاده (یا دیر) |
132
- | `requires platformUrl + gameSlug` | Direct Mode بدون تنظیم |
133
- | `Development origin not allowed` | origin بازی در allowlist سرور نیست |
134
- | Authorize timeout | لاگین تمام نشد / popup بلاک شد |
135
-
136
- بعدی: [03-user-session.md](./03-user-session.md) · Direct: [09-direct-development.md](./09-direct-development.md)
1
+ # `init()` و Platform Context
2
+
3
+ اولین فراخوانی تقریباً همیشه `PlatformSDK.init()` است.
4
+
5
+ ## امضا
6
+
7
+ ```ts
8
+ function init(options?: PlatformSdkInitOptions): Promise<SdkInitPayload>;
9
+
10
+ interface PlatformSdkInitOptions {
11
+ /** حداکثر انتظار (ms). در iframe پیش‌فرض ~10s؛ در Direct برای authorize می‌توانید بیشتر بدهید. */
12
+ timeout?: number;
13
+ /** پایه API با `/api` — الزامی در Direct Development */
14
+ platformUrl?: string;
15
+ /** origin وب پلتفرم برای صفحه Authorize — در Direct اگر API و Web جدا باشند الزامی */
16
+ platformWebUrl?: string;
17
+ /** slug بازی published — الزامی در Direct Development */
18
+ gameSlug?: string;
19
+ }
20
+ ```
21
+
22
+ جایگزین تنظیمات Direct:
23
+
24
+ ```ts
25
+ window.__OYNA360_DEV__ = {
26
+ platformUrl: 'https://oyna360.ir/api',
27
+ platformWebUrl: 'https://oyna360.ir',
28
+ gameSlug: 'my-game',
29
+ };
30
+ ```
31
+
32
+ ---
33
+
34
+ ## خروجی — `SdkInitPayload`
35
+
36
+ همان Context استاندارد Production (`platform:init`):
37
+
38
+ ```ts
39
+ interface SdkInitPayload {
40
+ user: SdkUser;
41
+ session: SdkSession;
42
+ game: SdkGameInfo;
43
+ avatar: SdkLobbyAvatar;
44
+ avatarBases?: Array<{ id: string; glbUrl: string }>;
45
+ lobby?: {
46
+ wsUrl: string; // مثلاً https://oyna360.ir/lobby
47
+ roomId: string; // مثلاً game:my-game
48
+ strictRoom?: boolean;
49
+ };
50
+ }
51
+ ```
52
+
53
+ | فیلد | کاربرد |
54
+ |------|--------|
55
+ | `user` | نمایش نام، id |
56
+ | `session` | `{ id, token }` — سشن بازی ephemeral |
57
+ | `game` | `slug` / `name` |
58
+ | `avatar` | ظاهر لابی برای lobby-sdk |
59
+ | `avatarBases` | کاتالوگ GLB مشترک (اختیاری) |
60
+ | `lobby` | آدرس WebSocket و اتاق — **هاردکد نکنید** |
61
+
62
+ ---
63
+
64
+ ## رفتار بر اساس محیط
65
+
66
+ ### 1) داخل iframe پلتفرم (Production)
67
+
68
+ 1. SDK در صورت embed بودن، `platform:ready` به parent می‌فرستد.
69
+ 2. منتظر `platform:init` می‌ماند.
70
+ 3. Context را ذخیره می‌کند و همان را روی `window` هم برای lobby-sdk منتشر می‌کند.
71
+
72
+ ```ts
73
+ const ctx = await PlatformSDK.init({ timeout: 15_000 });
74
+ ```
75
+
76
+ ### 2) تب مستقیم / بدون parent (Direct Development)
77
+
78
+ 1. اگر `platformUrl` + `gameSlug` نباشد → خطای واضح.
79
+ 2. صفحه `/dev/game-auth` (popup یا redirect) باز می‌شود.
80
+ 3. با اکانت واقعی لاگین می‌کنید.
81
+ 4. code یک‌بارمصرف → `exchange` → همان `SdkInitPayload`.
82
+
83
+ ```ts
84
+ const ctx = await PlatformSDK.init({
85
+ platformUrl: 'https://oyna360.ir/api',
86
+ platformWebUrl: 'https://oyna360.ir',
87
+ gameSlug: 'my-game',
88
+ timeout: 120_000,
89
+ });
90
+ ```
91
+
92
+ ### 3) Idempotent
93
+
94
+ اگر قبلاً init شده باشد، فراخوانی بعدی همان Promise/payload را می‌دهد.
95
+
96
+ ---
97
+
98
+ ## بعد از init
99
+
100
+ ```ts
101
+ PlatformSDK.isReady(); // true
102
+ PlatformSDK.getUser(); // SdkUser | null
103
+ PlatformSDK.getSession(); // SdkSession | null
104
+ PlatformSDK.getInitPayload(); // SdkInitPayload | null (کامل)
105
+ ```
106
+
107
+ ---
108
+
109
+ ## تحویل به lobby-sdk
110
+
111
+ `PlatformLobby` را از `@oyna360/lobby-babylon` import کنید. کل payload را منتقل کنید؛ لود GLB، Draco، لباس و remoteها خودکار است. [راهنمای کامل آواتار](https://github.com/mamadjavadrasti/oyna360-lobby-babylon/blob/master/docs/08-avatars.md).
112
+
113
+ روش توصیه‌شده:
114
+
115
+ ```ts
116
+ const init = await PlatformSDK.init({ /* … */ });
117
+ await PlatformLobby.create({
118
+ canvas,
119
+ platformInit: init,
120
+ roomId: init.lobby!.roomId,
121
+ wsUrl: init.lobby!.wsUrl,
122
+ });
123
+ ```
124
+
125
+ یا بعد از `init()` می‌توانید `PlatformLobby.createFromPlatform(canvas)` را بزنید (SDK لابی از Context منتشرشده روی window استفاده می‌کند).
126
+
127
+ ---
128
+
129
+ ## خطاهای رایج
130
+
131
+ | پیام / وضعیت | معنی |
132
+ |--------------|------|
133
+ | `init timeout — is the game running inside the platform?` | iframe هستید ولی parent `platform:init` نفرستاده (یا دیر) |
134
+ | `requires platformUrl + gameSlug` | Direct Mode بدون تنظیم |
135
+ | `Development origin not allowed` | origin بازی در allowlist سرور نیست |
136
+ | Authorize timeout | لاگین تمام نشد / popup بلاک شد |
137
+
138
+ بعدی: [03-user-session.md](./03-user-session.md) · Direct: [09-direct-development.md](./09-direct-development.md)
@@ -1,33 +1,33 @@
1
- # User و Session
2
-
3
- بعد از `init()` موفق.
4
-
5
- ## خواندن sync
6
-
7
- ```ts
8
- const user = PlatformSDK.getUser();
9
- // { id, username, displayName, avatarUrl }
10
-
11
- const session = PlatformSDK.getSession();
12
- // { id, token }
13
- ```
14
-
15
- قبل از init هر دو `null` هستند.
16
-
17
- ## نکات session
18
-
19
- - `token` برای هویت سشن بازی است (با JWT لاگین کاربر فرق دارد).
20
- - عمر سشن محدود است و با activity تمدید می‌شود؛ آن را دائمی فرض نکنید.
21
- - در Git / `.env` / localStorage ذخیره نکنید.
22
- - برای lobby-sdk همان `session.token` از Context کافی است؛ خودتان به سوکت وصل نشوید مگر عمداً کلاینت سفارشی بنویسید.
23
-
24
- ## نمایش در UI
25
-
26
- ```ts
27
- const { user, game } = await PlatformSDK.init();
28
- title.textContent = `${user.displayName} — ${game.name}`;
29
- ```
30
-
31
- `avatarUrl` ممکن است `null` باشد؛ آواتار ۳D لابی از فیلد `avatar` در `getInitPayload()` می‌آید نه لزوماً از `avatarUrl`.
32
-
33
- بعدی: [04-end-session.md](./04-end-session.md)
1
+ # User و Session
2
+
3
+ بعد از `init()` موفق.
4
+
5
+ ## خواندن sync
6
+
7
+ ```ts
8
+ const user = PlatformSDK.getUser();
9
+ // { id, username, displayName, avatarUrl }
10
+
11
+ const session = PlatformSDK.getSession();
12
+ // { id, token }
13
+ ```
14
+
15
+ قبل از init هر دو `null` هستند.
16
+
17
+ ## نکات session
18
+
19
+ - `token` برای هویت سشن بازی است (با JWT لاگین کاربر فرق دارد).
20
+ - عمر سشن محدود است و با activity تمدید می‌شود؛ آن را دائمی فرض نکنید.
21
+ - در Git / `.env` / localStorage ذخیره نکنید.
22
+ - برای lobby-sdk همان `session.token` از Context کافی است؛ خودتان به سوکت وصل نشوید مگر عمداً کلاینت سفارشی بنویسید.
23
+
24
+ ## نمایش در UI
25
+
26
+ ```ts
27
+ const { user, game } = await PlatformSDK.init();
28
+ title.textContent = `${user.displayName} — ${game.name}`;
29
+ ```
30
+
31
+ `avatarUrl` ممکن است `null` باشد؛ آواتار ۳D لابی از فیلد `avatar` در `getInitPayload()` می‌آید نه لزوماً از `avatarUrl`.
32
+
33
+ بعدی: [04-end-session.md](./04-end-session.md)
@@ -1,22 +1,22 @@
1
- # `endSession()`
2
-
3
- سشن بازی را می‌بندد تا در آمار/idle پلتفرم باز نماند.
4
-
5
- ```ts
6
- await PlatformSDK.endSession();
7
- ```
8
-
9
- ## رفتار
10
-
11
- - **Production (iframe):** پیام `platform:session:end` به parent فرستاده می‌شود؛ پلتفرم سشن را می‌بندد.
12
- - **Direct Development:** `POST {platformUrl}/sessions/end` با همان session token.
13
-
14
- ## کی صدا بزنید؟
15
-
16
- - وقتی بازیکن از بازی خارج می‌شود
17
- - قبل از unload صفحه (در iframe)
18
- - بعد از اتمام مسابقه اگر سشن دیگری نمی‌سازید
19
-
20
- چندبار صدا زدن نباید بازی را خراب کند؛ اگر سشن از قبل بسته شده باشد parent نادیده می‌گیرد.
21
-
22
- بعدی: [05-scores.md](./05-scores.md)
1
+ # `endSession()`
2
+
3
+ سشن بازی را می‌بندد تا در آمار/idle پلتفرم باز نماند.
4
+
5
+ ```ts
6
+ await PlatformSDK.endSession();
7
+ ```
8
+
9
+ ## رفتار
10
+
11
+ - **Production (iframe):** پیام `platform:session:end` به parent فرستاده می‌شود؛ پلتفرم سشن را می‌بندد.
12
+ - **Direct Development:** `POST {platformUrl}/sessions/end` با همان session token.
13
+
14
+ ## کی صدا بزنید؟
15
+
16
+ - وقتی بازیکن از بازی خارج می‌شود
17
+ - قبل از unload صفحه (در iframe)
18
+ - بعد از اتمام مسابقه اگر سشن دیگری نمی‌سازید
19
+
20
+ چندبار صدا زدن نباید بازی را خراب کند؛ اگر سشن از قبل بسته شده باشد parent نادیده می‌گیرد.
21
+
22
+ بعدی: [05-scores.md](./05-scores.md)
package/docs/05-scores.md CHANGED
@@ -1,30 +1,30 @@
1
- # امتیاز — `submitScore`
2
-
3
- بهترین امتیاز بازیکن برای این بازی را ثبت می‌کند (keep-best).
4
-
5
- ```ts
6
- const result = await PlatformSDK.submitScore(4200);
7
- // { score, previousBest, isNewBest, rank }
8
- ```
9
-
10
- ## پیش‌نیاز
11
-
12
- - `init()` موفق
13
- - سشن فعال
14
- - **Production:** از طریق iframe parent · **Direct Dev:** REST مستقیم به `platformUrl` (همان session token)
15
-
16
- ## قوانین
17
-
18
- - `score` باید عدد نامنفی و finite باشد؛ اعشار truncate می‌شود.
19
- - امتیاز بدتر از بهترین قبلی، best را عوض نمی‌کند (`isNewBest: false`).
20
-
21
- ## مثال
22
-
23
- ```ts
24
- await PlatformSDK.init();
25
- // … پایان مسابقه
26
- const { isNewBest, rank } = await PlatformSDK.submitScore(finalScore);
27
- if (isNewBest) showToast(`رکورد جدید! رتبه ${rank}`);
28
- ```
29
-
30
- بعدی: [06-leaderboard.md](./06-leaderboard.md)
1
+ # امتیاز — `submitScore`
2
+
3
+ بهترین امتیاز بازیکن برای این بازی را ثبت می‌کند (keep-best).
4
+
5
+ ```ts
6
+ const result = await PlatformSDK.submitScore(4200);
7
+ // { score, previousBest, isNewBest, rank }
8
+ ```
9
+
10
+ ## پیش‌نیاز
11
+
12
+ - `init()` موفق
13
+ - سشن فعال
14
+ - **Production:** از طریق iframe parent · **Direct Dev:** REST مستقیم به `platformUrl` (همان session token)
15
+
16
+ ## قوانین
17
+
18
+ - `score` باید عدد نامنفی و finite باشد؛ اعشار truncate می‌شود.
19
+ - امتیاز بدتر از بهترین قبلی، best را عوض نمی‌کند (`isNewBest: false`).
20
+
21
+ ## مثال
22
+
23
+ ```ts
24
+ await PlatformSDK.init();
25
+ // … پایان مسابقه
26
+ const { isNewBest, rank } = await PlatformSDK.submitScore(finalScore);
27
+ if (isNewBest) showToast(`رکورد جدید! رتبه ${rank}`);
28
+ ```
29
+
30
+ بعدی: [06-leaderboard.md](./06-leaderboard.md)
@@ -1,19 +1,19 @@
1
- # لیدربورد — `getLeaderboard`
2
-
3
- ```ts
4
- const board = await PlatformSDK.getLeaderboard(20);
5
- // { gameSlug, entries: [{ rank, score, achievedAt, user: { displayName, username, avatarUrl } }] }
6
- ```
7
-
8
- - `limit` پیش‌فرض ۲۰
9
- - نیاز به `init()` دارد
10
- - **Production** و **Direct Dev** هر دو کار می‌کنند (iframe یا REST)
11
-
12
- ```ts
13
- const { entries } = await PlatformSDK.getLeaderboard(10);
14
- for (const row of entries) {
15
- console.log(row.rank, row.user.displayName, row.score);
16
- }
17
- ```
18
-
19
- بعدی: [07-postmessage-protocol.md](./07-postmessage-protocol.md)
1
+ # لیدربورد — `getLeaderboard`
2
+
3
+ ```ts
4
+ const board = await PlatformSDK.getLeaderboard(20);
5
+ // { gameSlug, entries: [{ rank, score, achievedAt, user: { displayName, username, avatarUrl } }] }
6
+ ```
7
+
8
+ - `limit` پیش‌فرض ۲۰
9
+ - نیاز به `init()` دارد
10
+ - **Production** و **Direct Dev** هر دو کار می‌کنند (iframe یا REST)
11
+
12
+ ```ts
13
+ const { entries } = await PlatformSDK.getLeaderboard(10);
14
+ for (const row of entries) {
15
+ console.log(row.rank, row.user.displayName, row.score);
16
+ }
17
+ ```
18
+
19
+ بعدی: [07-postmessage-protocol.md](./07-postmessage-protocol.md)
@@ -1,45 +1,45 @@
1
- # پروتکل postMessage (Production)
2
-
3
- در Production، بازی داخل iframe است و با **صفحهٔ parent پلتفرم** حرف می‌زند — نه مستقیم با REST برای این عملیات.
4
-
5
- ## از بازی → پلتفرم
6
-
7
- | `type` | نقش |
8
- |--------|-----|
9
- | `platform:ready` | SDK لود شد؛ لطفاً init بفرست |
10
- | `platform:session:end` | بستن سشن |
11
- | `platform:score:submit` | ثبت امتیاز (+ `requestId`, `sessionToken`, `score`) |
12
- | `platform:leaderboard:get` | درخواست لیدربورد |
13
- | `platform:achievement:unlock` / `platform:achievements:get` | دستاورد |
14
- | `platform:wallet:get` / `platform:gems:exchange` | کیف‌پول |
15
- | `platform:lobby:ready` | (از lobby-sdk) درخواست مجدد init |
16
-
17
- ## از پلتفرم → بازی
18
-
19
- | `type` | نقش |
20
- |--------|-----|
21
- | `platform:init` | Context کامل |
22
- | `platform:score:result` و بقیه `*:result` | پاسخ RPC با همان `requestId` |
23
-
24
- ## `platform:init` (شکل)
25
-
26
- ```ts
27
- {
28
- type: 'platform:init',
29
- version: string,
30
- session: { id, token },
31
- user: { id, username, displayName, avatarUrl },
32
- game: { slug, name },
33
- avatar: { presetId, presetKey, presetKind, customConfig },
34
- avatarBases?: [{ id, glbUrl }],
35
- lobby?: { wsUrl, roomId, strictRoom? }
36
- }
37
- ```
38
-
39
- بازی‌ساز معمولاً لازم نیست این پیام‌ها را دستی بسازد؛ `PlatformSDK` و parent پلتفرم این کار را می‌کنند.
40
-
41
- ## Direct Development
42
-
43
- به‌جای parent، Authorize HTTP استفاده می‌شود؛ ولی **شکل نهایی Context همان `SdkInitPayload` است** تا lobby-sdk و کد بازی یکسان بمانند.
44
-
45
- بعدی: [08-wallet.md](./08-wallet.md)
1
+ # پروتکل postMessage (Production)
2
+
3
+ در Production، بازی داخل iframe است و با **صفحهٔ parent پلتفرم** حرف می‌زند — نه مستقیم با REST برای این عملیات.
4
+
5
+ ## از بازی → پلتفرم
6
+
7
+ | `type` | نقش |
8
+ |--------|-----|
9
+ | `platform:ready` | SDK لود شد؛ لطفاً init بفرست |
10
+ | `platform:session:end` | بستن سشن |
11
+ | `platform:score:submit` | ثبت امتیاز (+ `requestId`, `sessionToken`, `score`) |
12
+ | `platform:leaderboard:get` | درخواست لیدربورد |
13
+ | `platform:achievement:unlock` / `platform:achievements:get` | دستاورد |
14
+ | `platform:wallet:get` / `platform:gems:exchange` | کیف‌پول |
15
+ | `platform:lobby:ready` | (از lobby-sdk) درخواست مجدد init |
16
+
17
+ ## از پلتفرم → بازی
18
+
19
+ | `type` | نقش |
20
+ |--------|-----|
21
+ | `platform:init` | Context کامل |
22
+ | `platform:score:result` و بقیه `*:result` | پاسخ RPC با همان `requestId` |
23
+
24
+ ## `platform:init` (شکل)
25
+
26
+ ```ts
27
+ {
28
+ type: 'platform:init',
29
+ version: string,
30
+ session: { id, token },
31
+ user: { id, username, displayName, avatarUrl },
32
+ game: { slug, name },
33
+ avatar: { presetId, presetKey, presetKind, customConfig },
34
+ avatarBases?: [{ id, glbUrl }],
35
+ lobby?: { wsUrl, roomId, strictRoom? }
36
+ }
37
+ ```
38
+
39
+ بازی‌ساز معمولاً لازم نیست این پیام‌ها را دستی بسازد؛ `PlatformSDK` و parent پلتفرم این کار را می‌کنند.
40
+
41
+ ## Direct Development
42
+
43
+ به‌جای parent، Authorize HTTP استفاده می‌شود؛ ولی **شکل نهایی Context همان `SdkInitPayload` است** تا lobby-sdk و کد بازی یکسان بمانند.
44
+
45
+ بعدی: [08-wallet.md](./08-wallet.md)
package/docs/08-wallet.md CHANGED
@@ -1,32 +1,40 @@
1
- # کیف‌پول جِم — `getWallet` / `convertGems`
2
-
3
- جِم ارز پلتفرم است. تبدیل به «سکه داخل بازی» با نرخ `coinsPerGem` همان بازی انجام می‌شود.
4
-
5
- ```ts
6
- const wallet = await PlatformSDK.getWallet();
7
- // { gems, coinsPerGem, gameSlug }
8
-
9
- const result = await PlatformSDK.convertGems(5);
10
- // { gemsSpent, coinsReceived, coinsPerGem, gemsRemaining, gameSlug }
11
- ```
12
-
13
- ## مسئولیت بازی
14
-
15
- پلتفرم جِم را کم می‌کند و `coinsReceived` را برمی‌گرداند.
16
- **اعتبار سکه داخل اقتصاد خودتان** با شماست (در سرور/کلاینت بازی اعمال کنید).
17
-
18
- ## نکات
19
-
20
- - `gems` باید عدد صحیح مثبت باشد.
21
- - در **Production** و **Direct Dev** هر دو کار می‌کند (iframe یا REST با session token).
22
-
23
- ```ts
24
- try {
25
- const { coinsReceived } = await PlatformSDK.convertGems(amount);
26
- await creditLocalCoins(coinsReceived);
27
- } catch (e) {
28
- showError(e);
29
- }
30
- ```
31
-
32
- بعدی: [09-direct-development.md](./09-direct-development.md) · [10-achievements.md](./10-achievements.md)
1
+ # کیف‌پول جِم — `getWallet` / `convertGems`
2
+
3
+ جِم ارز پلتفرم است. تبدیل به «سکه داخل بازی» با نرخ `coinsPerGem` همان بازی انجام می‌شود.
4
+
5
+ ```ts
6
+ const wallet = await PlatformSDK.getWallet();
7
+ // { gems, coinsPerGem, gameSlug }
8
+
9
+ // Generate once, persist with your pending purchase, and reuse on retry.
10
+ const requestId = crypto.randomUUID();
11
+ const result = await PlatformSDK.convertGems(5, requestId);
12
+ // { gemsSpent, coinsReceived, coinsPerGem, gemsRemaining, gameSlug }
13
+ ```
14
+
15
+ ## مسئولیت بازی
16
+
17
+ پلتفرم جِم را کم می‌کند و `coinsReceived` را برمی‌گرداند.
18
+ **اعتبار سکه داخل اقتصاد خودتان** با شماست (در سرور/کلاینت بازی اعمال کنید).
19
+
20
+ ## درخواست پایدار و بازیابی
21
+
22
+ پارامتر دوم `convertGems(gems, requestId?)` شناسهٔ عملیات اقتصادی است. آن را **قبل از ارسال** در ذخیره‌سازی پایدار ثبت کنید و در تلاش مجدد همان عملیات از همان شناسه استفاده کنید. شناسه باید ۸ تا ۱۲۸ کاراکتر از حروف لاتین، عدد، `_` یا `-` باشد (UUID مناسب است).
23
+
24
+ **توجه: این تغییر SDK به‌تنهایی idempotency را تضمین نمی‌کند.** بک‌اند پلتفرم باید `requestId` را همراه هویت کاربر، بازی، مبلغ و نتیجهٔ تبدیل در تراکنش دیتابیس ذخیره کند، تکرار همان درخواست را بدون کسر مجدد پاسخ دهد و برای شناسه‌ای با پارامترهای ناسازگار خطا برگرداند. مسیر postMessage والد نیز باید شناسه را به بک‌اند منتقل کند. بازی باید اعطای سکه را با شناسهٔ همان تبدیل فقط یک بار اعمال کند. برای بازیابی پس از بسته‌شدن بازی، API استعلام وضعیت همان شناسه هم لازم است.
25
+
26
+ ## نکات
27
+
28
+ - `gems` باید عدد صحیح مثبت باشد.
29
+ - در **Production** و **Direct Dev** هر دو کار می‌کند (iframe یا REST با session token).
30
+
31
+ ```ts
32
+ try {
33
+ const { coinsReceived } = await PlatformSDK.convertGems(amount);
34
+ await creditLocalCoins(coinsReceived);
35
+ } catch (e) {
36
+ showError(e);
37
+ }
38
+ ```
39
+
40
+ بعدی: [09-direct-development.md](./09-direct-development.md) · [10-achievements.md](./10-achievements.md)
@@ -88,7 +88,7 @@ DEV_GAME_ORIGINS=http://localhost:5180,http://127.0.0.1:5173,http://192.168.1.20
88
88
 
89
89
  ```ts
90
90
  import { PlatformSDK } from '@oyna360/game-sdk';
91
- import { PlatformLobby } from '@oyna360/lobby-sdk';
91
+ import { PlatformLobby } from '@oyna360/lobby-babylon';
92
92
 
93
93
  const init = await PlatformSDK.init({
94
94
  platformUrl: 'https://oyna360.ir/api',
@@ -72,6 +72,28 @@ Origin صفحه (مثلاً `http://localhost:5173`) فقط وقتی اجبار
72
72
 
73
73
  ---
74
74
 
75
+ ## تسترها — چند بازیکن با یک پروژه
76
+
77
+ `clientId` برای هر Dev Project **ثابت** است. هر Credential که با گزینهٔ «کاربر تست جدید» صادر شود یک **کاربر تست جدا** دارد، پس هر دستگاه `user.id` متفاوتی می‌گیرد. برای تست چندنفره لازم نیست روی چند اکانت Oyna360 پروژه بسازید.
78
+
79
+ ```env
80
+ # دستگاه ۱
81
+ OYNA_DEV_CLIENT_ID=oy_dev_<project>
82
+ OYNA_DEV_CREDENTIAL=oy_sec_<tester-1>
83
+
84
+ # دستگاه ۲ — همان clientId، credential دیگر
85
+ OYNA_DEV_CLIENT_ID=oy_dev_<project>
86
+ OYNA_DEV_CREDENTIAL=oy_sec_<tester-2>
87
+ ```
88
+
89
+ - همهٔ تسترهای یک پروژه **همان `game.slug`** را دارند (shell همان پروژه).
90
+ - گزینهٔ «هویت خودم» یعنی نشست با حساب صاحب پروژه ساخته می‌شود.
91
+ - حداکثر ۱۰ تستر فعال در هر پروژه. Rotate همان تستر را روی secret جدید نگه می‌دارد؛ Revoke تستر را از کار می‌اندازد.
92
+ - کاربر تست در سایت لاگین نمی‌کند و در لیست کاربران و کاتالوگ دیده نمی‌شود.
93
+ - Credentialهایی که قبل از این قابلیت ساخته شده‌اند با همان `clientId` قبلی‌شان مثل قبل کار می‌کنند و هویت صاحب پروژه را دارند.
94
+
95
+ ---
96
+
75
97
  ## چه چیزی ساخته نمی‌شود
76
98
 
77
99
  - Game در Catalog عمومی
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oyna360/game-sdk",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "oyna360 Game SDK — postMessage bridge, Developer Environment credentials, and Direct Development Mode.",
5
5
  "license": "MIT",
6
6
  "author": "oyna360",