@colyseus/sdk 0.17.42 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/build/3rd_party/discord.cjs +1 -1
  2. package/build/3rd_party/discord.mjs +1 -1
  3. package/build/Auth.cjs +16 -2
  4. package/build/Auth.cjs.map +1 -1
  5. package/build/Auth.mjs +16 -2
  6. package/build/Auth.mjs.map +1 -1
  7. package/build/Client.cjs +1 -1
  8. package/build/Client.mjs +1 -1
  9. package/build/Connection.cjs +1 -1
  10. package/build/Connection.mjs +1 -1
  11. package/build/HTTP.cjs +1 -1
  12. package/build/HTTP.mjs +1 -1
  13. package/build/Room.cjs +231 -46
  14. package/build/Room.cjs.map +1 -1
  15. package/build/Room.d.ts +62 -2
  16. package/build/Room.mjs +229 -44
  17. package/build/Room.mjs.map +1 -1
  18. package/build/Storage.cjs +1 -1
  19. package/build/Storage.mjs +1 -1
  20. package/build/core/nanoevents.cjs +1 -1
  21. package/build/core/nanoevents.mjs +1 -1
  22. package/build/core/signal.cjs +1 -1
  23. package/build/core/signal.cjs.map +1 -1
  24. package/build/core/signal.mjs +1 -1
  25. package/build/core/signal.mjs.map +1 -1
  26. package/build/core/utils.cjs +1 -1
  27. package/build/core/utils.mjs +1 -1
  28. package/build/debug.cjs +1 -1
  29. package/build/debug.cjs.map +1 -1
  30. package/build/debug.mjs +1 -1
  31. package/build/debug.mjs.map +1 -1
  32. package/build/errors/Errors.cjs +1 -1
  33. package/build/errors/Errors.mjs +1 -1
  34. package/build/fetchXHR.cjs +1 -1
  35. package/build/fetchXHR.mjs +1 -1
  36. package/build/index.cjs +1 -1
  37. package/build/index.cjs.map +1 -1
  38. package/build/index.d.ts +1 -1
  39. package/build/index.mjs +1 -1
  40. package/build/index.mjs.map +1 -1
  41. package/build/input/InputHandle.cjs +47 -0
  42. package/build/input/InputHandle.cjs.map +1 -0
  43. package/build/input/InputHandle.d.ts +79 -0
  44. package/build/input/InputHandle.mjs +48 -0
  45. package/build/input/InputHandle.mjs.map +1 -0
  46. package/build/legacy.cjs +1 -1
  47. package/build/legacy.mjs +1 -1
  48. package/build/serializer/NoneSerializer.cjs +1 -1
  49. package/build/serializer/NoneSerializer.mjs +1 -1
  50. package/build/serializer/SchemaSerializer.cjs +1 -1
  51. package/build/serializer/SchemaSerializer.mjs +1 -1
  52. package/build/serializer/Serializer.cjs +1 -1
  53. package/build/serializer/Serializer.mjs +1 -1
  54. package/build/transport/H3Transport.cjs +21 -70
  55. package/build/transport/H3Transport.cjs.map +1 -1
  56. package/build/transport/H3Transport.d.ts +0 -16
  57. package/build/transport/H3Transport.mjs +23 -69
  58. package/build/transport/H3Transport.mjs.map +1 -1
  59. package/build/transport/WebSocketTransport.cjs +1 -1
  60. package/build/transport/WebSocketTransport.mjs +1 -1
  61. package/dist/colyseus.js +13172 -1953
  62. package/dist/colyseus.js.map +1 -1
  63. package/dist/debug.js +1 -1
  64. package/dist/debug.js.map +1 -1
  65. package/package.json +11 -8
  66. package/src/Auth.ts +11 -1
  67. package/src/Room.ts +294 -48
  68. package/src/core/signal.ts +1 -1
  69. package/src/debug.ts +8 -8
  70. package/src/index.ts +1 -1
  71. package/src/input/InputHandle.ts +115 -0
  72. package/src/transport/H3Transport.ts +26 -76
  73. package/build/serializer/FossilDeltaSerializer.d.ts +0 -0
  74. package/src/serializer/FossilDeltaSerializer.ts +0 -39
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.42
6
+ // colyseus.js@0.18.0
7
7
  'use strict';
8
8
 
9
9
  /**
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.42
6
+ // colyseus.js@0.18.0
7
7
  /**
8
8
  * Discord Embedded App SDK
9
9
  * https://github.com/colyseus/colyseus/issues/707
package/build/Auth.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.42
6
+ // colyseus.js@0.18.0
7
7
  'use strict';
8
8
 
9
9
  var tslib = require('tslib');
@@ -112,7 +112,21 @@ class Auth {
112
112
  tslib.__classPrivateFieldSet(this, _Auth__signInWindow, null, "f");
113
113
  window.removeEventListener("message", onMessage);
114
114
  if (event.data.error !== undefined) {
115
- reject(event.data.error);
115
+ // Reject with an Error so consumers' `catch (e) {
116
+ // ... e.message }` reads as expected. Attach the
117
+ // structured payload (reason / until / etc.) as
118
+ // properties so callers that want to render a
119
+ // richer message (e.g. "banned until X for Y")
120
+ // can pull them off without re-parsing.
121
+ const err = new Error(String(event.data.error));
122
+ err.code = event.data.error;
123
+ if (event.data.reason !== undefined) {
124
+ err.reason = event.data.reason;
125
+ }
126
+ if (event.data.until !== undefined) {
127
+ err.until = event.data.until;
128
+ }
129
+ reject(err);
116
130
  }
117
131
  else {
118
132
  resolve(event.data);
@@ -1 +1 @@
1
- {"version":3,"file":"Auth.cjs","sources":["../src/Auth.ts"],"sourcesContent":["import { HTTP } from \"./HTTP.ts\";\nimport { getItem, removeItem, setItem } from \"./Storage.ts\";\nimport { createNanoEvents } from './core/nanoevents.ts';\n\nexport interface AuthSettings {\n path: string;\n key: string;\n}\n\nexport interface PopupSettings {\n prefix: string;\n width: number;\n height: number;\n}\n\n/**\n * Response from getUserData()\n */\nexport interface UserDataResponse<UserData = any> {\n user: UserData;\n}\n\n/**\n * Response from authentication methods (login, register, anonymous, OAuth)\n */\nexport interface AuthResponse<UserData = any> {\n user: UserData;\n token: string;\n}\n\n/**\n * Response from sendPasswordResetEmail()\n */\nexport type ForgotPasswordResponse = boolean | unknown;\n\n/**\n * @deprecated Use AuthResponse instead\n */\nexport type AuthData<UserData = any> = AuthResponse<UserData>;\n\nexport class Auth<UserData = any> {\n settings: AuthSettings = {\n path: \"/auth\",\n key: \"colyseus-auth-token\",\n };\n\n #_initialized = false;\n #_signInWindow: WindowProxy | null = null;\n #_events = createNanoEvents<{\n change: (response: AuthResponse) => void;\n }>();\n\n protected http: HTTP<any>;\n\n constructor(http: HTTP<any>) {\n this.http = http;\n getItem(this.settings.key, (token: string) => this.token = token);\n }\n\n public set token(token: string) {\n this.http.authToken = token;\n }\n\n public get token(): string | undefined {\n return this.http.authToken;\n }\n\n public onChange<U = UserData>(callback: (response: AuthResponse<U | null>) => void) {\n const unbindChange = this.#_events.on(\"change\", callback);\n if (!this.#_initialized) {\n this.getUserData().then((userData) => {\n this.emitChange({ ...userData, token: this.token });\n\n }).catch((e) => {\n // user is not logged in, or service is down\n this.emitChange({ user: null, token: undefined });\n });\n }\n this.#_initialized = true;\n return unbindChange;\n }\n\n public async getUserData<U = UserData>(): Promise<UserDataResponse<U>> {\n if (this.token) {\n return (await this.http.get(`${this.settings.path}/userdata`)).data;\n } else {\n throw new Error(\"missing auth.token\");\n }\n }\n\n public async registerWithEmailAndPassword<U = UserData>(\n email: string,\n password: string,\n options?: any\n ): Promise<AuthResponse<U>> {\n const data = (await this.http.post(`${this.settings.path}/register`, {\n body: { email, password, options, },\n })).data;\n\n this.emitChange(data);\n\n return data;\n }\n\n public async signInWithEmailAndPassword<U = UserData>(\n email: string,\n password: string\n ): Promise<AuthResponse<U>> {\n const data = (await this.http.post(`${this.settings.path}/login`, {\n body: { email, password, },\n })).data;\n\n this.emitChange(data);\n\n return data;\n }\n\n public async signInAnonymously<U = UserData>(options?: any): Promise<AuthResponse<U>> {\n const data = (await this.http.post(`${this.settings.path}/anonymous`, {\n body: { options, }\n })).data;\n\n this.emitChange(data);\n\n return data;\n }\n\n public async sendPasswordResetEmail(email: string): Promise<ForgotPasswordResponse> {\n return (await this.http.post(`${this.settings.path}/forgot-password`, {\n body: { email, }\n })).data;\n }\n\n public async signInWithProvider<U = UserData>(\n providerName: string,\n settings: Partial<PopupSettings> = {}\n ): Promise<AuthResponse<U>> {\n return new Promise((resolve, reject) => {\n const w = settings.width || 480;\n const h = settings.height || 768;\n\n // forward existing token for upgrading\n const upgradingToken = this.token ? `?token=${this.token}` : \"\";\n\n // Capitalize first letter of providerName\n const title = `Login with ${(providerName[0].toUpperCase() + providerName.substring(1))}`;\n const url = this.http['sdk']['getHttpEndpoint'](`${(settings.prefix || `${this.settings.path}/provider`)}/${providerName}${upgradingToken}`);\n\n const left = (screen.width / 2) - (w / 2);\n const top = (screen.height / 2) - (h / 2);\n\n this.#_signInWindow = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);\n\n const onMessage = (event: MessageEvent) => {\n // TODO: it is a good idea to check if event.origin can be trusted!\n // if (event.origin.indexOf(window.location.hostname) === -1) { return; }\n\n // require 'user' and 'token' inside received data.\n if (event.data.user === undefined && event.data.token === undefined) { return; }\n\n clearInterval(rejectionChecker);\n this.#_signInWindow?.close();\n this.#_signInWindow = null;\n\n window.removeEventListener(\"message\", onMessage);\n\n if (event.data.error !== undefined) {\n reject(event.data.error);\n\n } else {\n resolve(event.data);\n this.emitChange(event.data);\n }\n }\n\n const rejectionChecker = setInterval(() => {\n if (!this.#_signInWindow || this.#_signInWindow.closed) {\n this.#_signInWindow = null;\n reject(\"cancelled\");\n window.removeEventListener(\"message\", onMessage);\n }\n }, 200);\n\n window.addEventListener(\"message\", onMessage);\n });\n }\n\n public async signOut(): Promise<void> {\n this.emitChange({ user: null, token: null });\n }\n\n private emitChange(authData: AuthResponse<UserData | null>) {\n if (authData.token !== undefined) {\n this.token = authData.token;\n\n if (authData.token === null) {\n removeItem(this.settings.key);\n\n } else {\n // store key in localStorage\n setItem(this.settings.key, authData.token);\n }\n }\n\n this.#_events.emit(\"change\", authData);\n }\n\n}\n"],"names":["createNanoEvents","getItem","__classPrivateFieldGet","__classPrivateFieldSet","removeItem","setItem"],"mappings":"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"}
1
+ {"version":3,"file":"Auth.cjs","sources":["../src/Auth.ts"],"sourcesContent":["import { HTTP } from \"./HTTP.ts\";\nimport { getItem, removeItem, setItem } from \"./Storage.ts\";\nimport { createNanoEvents } from './core/nanoevents.ts';\n\nexport interface AuthSettings {\n path: string;\n key: string;\n}\n\nexport interface PopupSettings {\n prefix: string;\n width: number;\n height: number;\n}\n\n/**\n * Response from getUserData()\n */\nexport interface UserDataResponse<UserData = any> {\n user: UserData;\n}\n\n/**\n * Response from authentication methods (login, register, anonymous, OAuth)\n */\nexport interface AuthResponse<UserData = any> {\n user: UserData;\n token: string;\n}\n\n/**\n * Response from sendPasswordResetEmail()\n */\nexport type ForgotPasswordResponse = boolean | unknown;\n\n/**\n * @deprecated Use AuthResponse instead\n */\nexport type AuthData<UserData = any> = AuthResponse<UserData>;\n\nexport class Auth<UserData = any> {\n settings: AuthSettings = {\n path: \"/auth\",\n key: \"colyseus-auth-token\",\n };\n\n #_initialized = false;\n #_signInWindow: WindowProxy | null = null;\n #_events = createNanoEvents<{\n change: (response: AuthResponse) => void;\n }>();\n\n protected http: HTTP<any>;\n\n constructor(http: HTTP<any>) {\n this.http = http;\n getItem(this.settings.key, (token: string) => this.token = token);\n }\n\n public set token(token: string) {\n this.http.authToken = token;\n }\n\n public get token(): string | undefined {\n return this.http.authToken;\n }\n\n public onChange<U = UserData>(callback: (response: AuthResponse<U | null>) => void) {\n const unbindChange = this.#_events.on(\"change\", callback);\n if (!this.#_initialized) {\n this.getUserData().then((userData) => {\n this.emitChange({ ...userData, token: this.token });\n\n }).catch((e) => {\n // user is not logged in, or service is down\n this.emitChange({ user: null, token: undefined });\n });\n }\n this.#_initialized = true;\n return unbindChange;\n }\n\n public async getUserData<U = UserData>(): Promise<UserDataResponse<U>> {\n if (this.token) {\n return (await this.http.get(`${this.settings.path}/userdata`)).data;\n } else {\n throw new Error(\"missing auth.token\");\n }\n }\n\n public async registerWithEmailAndPassword<U = UserData>(\n email: string,\n password: string,\n options?: any\n ): Promise<AuthResponse<U>> {\n const data = (await this.http.post(`${this.settings.path}/register`, {\n body: { email, password, options, },\n })).data;\n\n this.emitChange(data);\n\n return data;\n }\n\n public async signInWithEmailAndPassword<U = UserData>(\n email: string,\n password: string\n ): Promise<AuthResponse<U>> {\n const data = (await this.http.post(`${this.settings.path}/login`, {\n body: { email, password, },\n })).data;\n\n this.emitChange(data);\n\n return data;\n }\n\n public async signInAnonymously<U = UserData>(options?: any): Promise<AuthResponse<U>> {\n const data = (await this.http.post(`${this.settings.path}/anonymous`, {\n body: { options, }\n })).data;\n\n this.emitChange(data);\n\n return data;\n }\n\n public async sendPasswordResetEmail(email: string): Promise<ForgotPasswordResponse> {\n return (await this.http.post(`${this.settings.path}/forgot-password`, {\n body: { email, }\n })).data;\n }\n\n public async signInWithProvider<U = UserData>(\n providerName: string,\n settings: Partial<PopupSettings> = {}\n ): Promise<AuthResponse<U>> {\n return new Promise((resolve, reject) => {\n const w = settings.width || 480;\n const h = settings.height || 768;\n\n // forward existing token for upgrading\n const upgradingToken = this.token ? `?token=${this.token}` : \"\";\n\n // Capitalize first letter of providerName\n const title = `Login with ${(providerName[0].toUpperCase() + providerName.substring(1))}`;\n const url = this.http['sdk']['getHttpEndpoint'](`${(settings.prefix || `${this.settings.path}/provider`)}/${providerName}${upgradingToken}`);\n\n const left = (screen.width / 2) - (w / 2);\n const top = (screen.height / 2) - (h / 2);\n\n this.#_signInWindow = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);\n\n const onMessage = (event: MessageEvent) => {\n // TODO: it is a good idea to check if event.origin can be trusted!\n // if (event.origin.indexOf(window.location.hostname) === -1) { return; }\n\n // require 'user' and 'token' inside received data.\n if (event.data.user === undefined && event.data.token === undefined) { return; }\n\n clearInterval(rejectionChecker);\n this.#_signInWindow?.close();\n this.#_signInWindow = null;\n\n window.removeEventListener(\"message\", onMessage);\n\n if (event.data.error !== undefined) {\n // Reject with an Error so consumers' `catch (e) {\n // ... e.message }` reads as expected. Attach the\n // structured payload (reason / until / etc.) as\n // properties so callers that want to render a\n // richer message (e.g. \"banned until X for Y\")\n // can pull them off without re-parsing.\n const err: any = new Error(String(event.data.error));\n err.code = event.data.error;\n if (event.data.reason !== undefined) { err.reason = event.data.reason; }\n if (event.data.until !== undefined) { err.until = event.data.until; }\n reject(err);\n\n } else {\n resolve(event.data);\n this.emitChange(event.data);\n }\n }\n\n const rejectionChecker = setInterval(() => {\n if (!this.#_signInWindow || this.#_signInWindow.closed) {\n this.#_signInWindow = null;\n reject(\"cancelled\");\n window.removeEventListener(\"message\", onMessage);\n }\n }, 200);\n\n window.addEventListener(\"message\", onMessage);\n });\n }\n\n public async signOut(): Promise<void> {\n this.emitChange({ user: null, token: null });\n }\n\n private emitChange(authData: AuthResponse<UserData | null>) {\n if (authData.token !== undefined) {\n this.token = authData.token;\n\n if (authData.token === null) {\n removeItem(this.settings.key);\n\n } else {\n // store key in localStorage\n setItem(this.settings.key, authData.token);\n }\n }\n\n this.#_events.emit(\"change\", authData);\n }\n\n}\n"],"names":["createNanoEvents","getItem","__classPrivateFieldGet","__classPrivateFieldSet","removeItem","setItem"],"mappings":"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"}
package/build/Auth.mjs CHANGED
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.42
6
+ // colyseus.js@0.18.0
7
7
  import { getItem, removeItem, setItem } from './Storage.mjs';
8
8
  import { createNanoEvents } from './core/nanoevents.mjs';
9
9
 
@@ -97,7 +97,21 @@ class Auth {
97
97
  this.#_signInWindow = null;
98
98
  window.removeEventListener("message", onMessage);
99
99
  if (event.data.error !== undefined) {
100
- reject(event.data.error);
100
+ // Reject with an Error so consumers' `catch (e) {
101
+ // ... e.message }` reads as expected. Attach the
102
+ // structured payload (reason / until / etc.) as
103
+ // properties so callers that want to render a
104
+ // richer message (e.g. "banned until X for Y")
105
+ // can pull them off without re-parsing.
106
+ const err = new Error(String(event.data.error));
107
+ err.code = event.data.error;
108
+ if (event.data.reason !== undefined) {
109
+ err.reason = event.data.reason;
110
+ }
111
+ if (event.data.until !== undefined) {
112
+ err.until = event.data.until;
113
+ }
114
+ reject(err);
101
115
  }
102
116
  else {
103
117
  resolve(event.data);
@@ -1 +1 @@
1
- {"version":3,"file":"Auth.mjs","sources":["../src/Auth.ts"],"sourcesContent":["import { HTTP } from \"./HTTP.ts\";\nimport { getItem, removeItem, setItem } from \"./Storage.ts\";\nimport { createNanoEvents } from './core/nanoevents.ts';\n\nexport interface AuthSettings {\n path: string;\n key: string;\n}\n\nexport interface PopupSettings {\n prefix: string;\n width: number;\n height: number;\n}\n\n/**\n * Response from getUserData()\n */\nexport interface UserDataResponse<UserData = any> {\n user: UserData;\n}\n\n/**\n * Response from authentication methods (login, register, anonymous, OAuth)\n */\nexport interface AuthResponse<UserData = any> {\n user: UserData;\n token: string;\n}\n\n/**\n * Response from sendPasswordResetEmail()\n */\nexport type ForgotPasswordResponse = boolean | unknown;\n\n/**\n * @deprecated Use AuthResponse instead\n */\nexport type AuthData<UserData = any> = AuthResponse<UserData>;\n\nexport class Auth<UserData = any> {\n settings: AuthSettings = {\n path: \"/auth\",\n key: \"colyseus-auth-token\",\n };\n\n #_initialized = false;\n #_signInWindow: WindowProxy | null = null;\n #_events = createNanoEvents<{\n change: (response: AuthResponse) => void;\n }>();\n\n protected http: HTTP<any>;\n\n constructor(http: HTTP<any>) {\n this.http = http;\n getItem(this.settings.key, (token: string) => this.token = token);\n }\n\n public set token(token: string) {\n this.http.authToken = token;\n }\n\n public get token(): string | undefined {\n return this.http.authToken;\n }\n\n public onChange<U = UserData>(callback: (response: AuthResponse<U | null>) => void) {\n const unbindChange = this.#_events.on(\"change\", callback);\n if (!this.#_initialized) {\n this.getUserData().then((userData) => {\n this.emitChange({ ...userData, token: this.token });\n\n }).catch((e) => {\n // user is not logged in, or service is down\n this.emitChange({ user: null, token: undefined });\n });\n }\n this.#_initialized = true;\n return unbindChange;\n }\n\n public async getUserData<U = UserData>(): Promise<UserDataResponse<U>> {\n if (this.token) {\n return (await this.http.get(`${this.settings.path}/userdata`)).data;\n } else {\n throw new Error(\"missing auth.token\");\n }\n }\n\n public async registerWithEmailAndPassword<U = UserData>(\n email: string,\n password: string,\n options?: any\n ): Promise<AuthResponse<U>> {\n const data = (await this.http.post(`${this.settings.path}/register`, {\n body: { email, password, options, },\n })).data;\n\n this.emitChange(data);\n\n return data;\n }\n\n public async signInWithEmailAndPassword<U = UserData>(\n email: string,\n password: string\n ): Promise<AuthResponse<U>> {\n const data = (await this.http.post(`${this.settings.path}/login`, {\n body: { email, password, },\n })).data;\n\n this.emitChange(data);\n\n return data;\n }\n\n public async signInAnonymously<U = UserData>(options?: any): Promise<AuthResponse<U>> {\n const data = (await this.http.post(`${this.settings.path}/anonymous`, {\n body: { options, }\n })).data;\n\n this.emitChange(data);\n\n return data;\n }\n\n public async sendPasswordResetEmail(email: string): Promise<ForgotPasswordResponse> {\n return (await this.http.post(`${this.settings.path}/forgot-password`, {\n body: { email, }\n })).data;\n }\n\n public async signInWithProvider<U = UserData>(\n providerName: string,\n settings: Partial<PopupSettings> = {}\n ): Promise<AuthResponse<U>> {\n return new Promise((resolve, reject) => {\n const w = settings.width || 480;\n const h = settings.height || 768;\n\n // forward existing token for upgrading\n const upgradingToken = this.token ? `?token=${this.token}` : \"\";\n\n // Capitalize first letter of providerName\n const title = `Login with ${(providerName[0].toUpperCase() + providerName.substring(1))}`;\n const url = this.http['sdk']['getHttpEndpoint'](`${(settings.prefix || `${this.settings.path}/provider`)}/${providerName}${upgradingToken}`);\n\n const left = (screen.width / 2) - (w / 2);\n const top = (screen.height / 2) - (h / 2);\n\n this.#_signInWindow = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);\n\n const onMessage = (event: MessageEvent) => {\n // TODO: it is a good idea to check if event.origin can be trusted!\n // if (event.origin.indexOf(window.location.hostname) === -1) { return; }\n\n // require 'user' and 'token' inside received data.\n if (event.data.user === undefined && event.data.token === undefined) { return; }\n\n clearInterval(rejectionChecker);\n this.#_signInWindow?.close();\n this.#_signInWindow = null;\n\n window.removeEventListener(\"message\", onMessage);\n\n if (event.data.error !== undefined) {\n reject(event.data.error);\n\n } else {\n resolve(event.data);\n this.emitChange(event.data);\n }\n }\n\n const rejectionChecker = setInterval(() => {\n if (!this.#_signInWindow || this.#_signInWindow.closed) {\n this.#_signInWindow = null;\n reject(\"cancelled\");\n window.removeEventListener(\"message\", onMessage);\n }\n }, 200);\n\n window.addEventListener(\"message\", onMessage);\n });\n }\n\n public async signOut(): Promise<void> {\n this.emitChange({ user: null, token: null });\n }\n\n private emitChange(authData: AuthResponse<UserData | null>) {\n if (authData.token !== undefined) {\n this.token = authData.token;\n\n if (authData.token === null) {\n removeItem(this.settings.key);\n\n } else {\n // store key in localStorage\n setItem(this.settings.key, authData.token);\n }\n }\n\n this.#_events.emit(\"change\", authData);\n }\n\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Auth.mjs","sources":["../src/Auth.ts"],"sourcesContent":["import { HTTP } from \"./HTTP.ts\";\nimport { getItem, removeItem, setItem } from \"./Storage.ts\";\nimport { createNanoEvents } from './core/nanoevents.ts';\n\nexport interface AuthSettings {\n path: string;\n key: string;\n}\n\nexport interface PopupSettings {\n prefix: string;\n width: number;\n height: number;\n}\n\n/**\n * Response from getUserData()\n */\nexport interface UserDataResponse<UserData = any> {\n user: UserData;\n}\n\n/**\n * Response from authentication methods (login, register, anonymous, OAuth)\n */\nexport interface AuthResponse<UserData = any> {\n user: UserData;\n token: string;\n}\n\n/**\n * Response from sendPasswordResetEmail()\n */\nexport type ForgotPasswordResponse = boolean | unknown;\n\n/**\n * @deprecated Use AuthResponse instead\n */\nexport type AuthData<UserData = any> = AuthResponse<UserData>;\n\nexport class Auth<UserData = any> {\n settings: AuthSettings = {\n path: \"/auth\",\n key: \"colyseus-auth-token\",\n };\n\n #_initialized = false;\n #_signInWindow: WindowProxy | null = null;\n #_events = createNanoEvents<{\n change: (response: AuthResponse) => void;\n }>();\n\n protected http: HTTP<any>;\n\n constructor(http: HTTP<any>) {\n this.http = http;\n getItem(this.settings.key, (token: string) => this.token = token);\n }\n\n public set token(token: string) {\n this.http.authToken = token;\n }\n\n public get token(): string | undefined {\n return this.http.authToken;\n }\n\n public onChange<U = UserData>(callback: (response: AuthResponse<U | null>) => void) {\n const unbindChange = this.#_events.on(\"change\", callback);\n if (!this.#_initialized) {\n this.getUserData().then((userData) => {\n this.emitChange({ ...userData, token: this.token });\n\n }).catch((e) => {\n // user is not logged in, or service is down\n this.emitChange({ user: null, token: undefined });\n });\n }\n this.#_initialized = true;\n return unbindChange;\n }\n\n public async getUserData<U = UserData>(): Promise<UserDataResponse<U>> {\n if (this.token) {\n return (await this.http.get(`${this.settings.path}/userdata`)).data;\n } else {\n throw new Error(\"missing auth.token\");\n }\n }\n\n public async registerWithEmailAndPassword<U = UserData>(\n email: string,\n password: string,\n options?: any\n ): Promise<AuthResponse<U>> {\n const data = (await this.http.post(`${this.settings.path}/register`, {\n body: { email, password, options, },\n })).data;\n\n this.emitChange(data);\n\n return data;\n }\n\n public async signInWithEmailAndPassword<U = UserData>(\n email: string,\n password: string\n ): Promise<AuthResponse<U>> {\n const data = (await this.http.post(`${this.settings.path}/login`, {\n body: { email, password, },\n })).data;\n\n this.emitChange(data);\n\n return data;\n }\n\n public async signInAnonymously<U = UserData>(options?: any): Promise<AuthResponse<U>> {\n const data = (await this.http.post(`${this.settings.path}/anonymous`, {\n body: { options, }\n })).data;\n\n this.emitChange(data);\n\n return data;\n }\n\n public async sendPasswordResetEmail(email: string): Promise<ForgotPasswordResponse> {\n return (await this.http.post(`${this.settings.path}/forgot-password`, {\n body: { email, }\n })).data;\n }\n\n public async signInWithProvider<U = UserData>(\n providerName: string,\n settings: Partial<PopupSettings> = {}\n ): Promise<AuthResponse<U>> {\n return new Promise((resolve, reject) => {\n const w = settings.width || 480;\n const h = settings.height || 768;\n\n // forward existing token for upgrading\n const upgradingToken = this.token ? `?token=${this.token}` : \"\";\n\n // Capitalize first letter of providerName\n const title = `Login with ${(providerName[0].toUpperCase() + providerName.substring(1))}`;\n const url = this.http['sdk']['getHttpEndpoint'](`${(settings.prefix || `${this.settings.path}/provider`)}/${providerName}${upgradingToken}`);\n\n const left = (screen.width / 2) - (w / 2);\n const top = (screen.height / 2) - (h / 2);\n\n this.#_signInWindow = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);\n\n const onMessage = (event: MessageEvent) => {\n // TODO: it is a good idea to check if event.origin can be trusted!\n // if (event.origin.indexOf(window.location.hostname) === -1) { return; }\n\n // require 'user' and 'token' inside received data.\n if (event.data.user === undefined && event.data.token === undefined) { return; }\n\n clearInterval(rejectionChecker);\n this.#_signInWindow?.close();\n this.#_signInWindow = null;\n\n window.removeEventListener(\"message\", onMessage);\n\n if (event.data.error !== undefined) {\n // Reject with an Error so consumers' `catch (e) {\n // ... e.message }` reads as expected. Attach the\n // structured payload (reason / until / etc.) as\n // properties so callers that want to render a\n // richer message (e.g. \"banned until X for Y\")\n // can pull them off without re-parsing.\n const err: any = new Error(String(event.data.error));\n err.code = event.data.error;\n if (event.data.reason !== undefined) { err.reason = event.data.reason; }\n if (event.data.until !== undefined) { err.until = event.data.until; }\n reject(err);\n\n } else {\n resolve(event.data);\n this.emitChange(event.data);\n }\n }\n\n const rejectionChecker = setInterval(() => {\n if (!this.#_signInWindow || this.#_signInWindow.closed) {\n this.#_signInWindow = null;\n reject(\"cancelled\");\n window.removeEventListener(\"message\", onMessage);\n }\n }, 200);\n\n window.addEventListener(\"message\", onMessage);\n });\n }\n\n public async signOut(): Promise<void> {\n this.emitChange({ user: null, token: null });\n }\n\n private emitChange(authData: AuthResponse<UserData | null>) {\n if (authData.token !== undefined) {\n this.token = authData.token;\n\n if (authData.token === null) {\n removeItem(this.settings.key);\n\n } else {\n // store key in localStorage\n setItem(this.settings.key, authData.token);\n }\n }\n\n this.#_events.emit(\"change\", authData);\n }\n\n}\n"],"names":[],"mappings":"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"}
package/build/Client.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.42
6
+ // colyseus.js@0.18.0
7
7
  'use strict';
8
8
 
9
9
  var tslib = require('tslib');
package/build/Client.mjs CHANGED
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.42
6
+ // colyseus.js@0.18.0
7
7
  import { Protocol, CloseCode } from '@colyseus/shared-types';
8
8
  import { ServerError, MatchMakeError } from './errors/Errors.mjs';
9
9
  import { Room } from './Room.mjs';
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.42
6
+ // colyseus.js@0.18.0
7
7
  'use strict';
8
8
 
9
9
  var tslib = require('tslib');
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.42
6
+ // colyseus.js@0.18.0
7
7
  import { H3TransportTransport } from './transport/H3Transport.mjs';
8
8
  import { WebSocketTransport } from './transport/WebSocketTransport.mjs';
9
9
  import { CloseCode } from '@colyseus/shared-types';
package/build/HTTP.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.42
6
+ // colyseus.js@0.18.0
7
7
  'use strict';
8
8
 
9
9
  var tslib = require('tslib');
package/build/HTTP.mjs CHANGED
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.42
6
+ // colyseus.js@0.18.0
7
7
  import { ServerError } from './errors/Errors.mjs';
8
8
  import { xhrFetch } from './fetchXHR.mjs';
9
9