UNPKG

@nec-baas/jssdk

Version:

NEC Mobile Backend Platform JavaScript SDK

1,795 lines 233 kB
/// <reference types="node" /> export declare const root: typeof globalThis; export declare type AnyJson = boolean | number | string | null | JsonObject | JsonArray; export interface JsonObject { [key: string]: AnyJson; } export interface JsonArray extends Array<AnyJson> { } /** * @typedef {Object} Callbacks * @description コールバック。非同期 API 呼び出し時に使用する。 * コールバックを省略(=undefined)した場合は、非同期 API は Promise を返却する。 * Promise 完了時の引数は success コールバックの引数と同じ。 * @property {function} success 成功時に呼び出されるコールバック。<br> * success コールバックの引数は1個。引数の内容は、各非同期 API により異なる。 * @property {function} error エラー発生時に呼び出されるコールバック。<br> * error コールバックには Object が渡される。各 API に指定がない限り、以下の形式となる。 * <pre> * { * "status" : ステータスコード, * "statusText" : エラーメッセージ, * "responseText" : レスポンスメッセージ * } * </pre> */ export interface Callbacks { success?(data: any): void; error?(error: Error): void; } /** * @description エラーログを出力する * @private */ export declare const nbError: (message: string) => void; /** * @description ログを出力する * @private */ export declare const nbLogger: (message: string) => void; /** * @description 引数エラー処理。 * callback があれば callback.error を呼び、なければ reject された Promise を返す。 * @param {Callbacks} callbacks コールバック * @param {String} name API名 * @private */ export declare const _doBadRequestCallback: (callbacks: Callbacks, name: string) => Promise<any>; /** * @description callbacks を promise にバインドする * @private */ export declare const _promisify: (promise: Promise<any>, callbacks?: Callbacks) => Promise<any>; /** * エラーオブジェクト */ export interface NbError extends Error { /** * ステータスコード */ status: number; /** * ステータステキスト */ statusText: string; /** * レスポンステキスト */ responseText: string; /** * データ(あれば) */ data?: any; } /** * @description エラーオブジェクトを返す * @param status ステータスコード * @param statusText ステータステキスト * @param responseText レスポンステキスト * @param data データ(あれば) * @returns {any} エラーオブジェクト * @private */ export declare const _createError: (status: number, statusText: string, responseText: string, data?: any) => NbError; /** * @private */ export declare const _errorText: (error: any) => string; /** * @description オブジェクトか判定する * @private */ export declare const _isObject: (value: any) => boolean; /** * @description オブジェクトを比較する * @private */ export declare const _compareObject: (src: any, target: any) => boolean; /** * アサーション * @param assert * @param message * @private */ export declare const nbAssert: (assert: boolean, message?: string) => void; import * as _tls from "tls"; /** * Node.js 環境かどうか調べる * @returns {boolean} Node.js 環境なら true * @private */ export declare const isNodeJs: () => boolean; /** * Node.js の require。 * Node.js でのみ動作する。ブラウザ環境では何もしない。 * browserify/webpack などの展開対象外。 * @param {string} module * @return {any} * @private */ export declare const _node_require: (module: string) => any; export declare const URL: any; export declare const https: any; export declare const http: any; export declare const tls: any; export declare const fs: any; export declare const util: any; export declare const http2: any; /** * APIリクエストインタフェース。 * HttpRequest, _SdeRequest が implement する * @private */ export interface ApiRequest { execute(): Promise<any>; setData(data: any): void; setMethod?(method: string): void; setContentType?(type: string): void; setQueryParam?(key: string, value: any): void; setQueryParams?(params: any): void; setSessionToken?(token: string): void; } export interface Headers { [index: string]: string; } export interface QueryParams { [index: string]: string; } /** * XHRが定義されているか調べる * @returns {boolean} * @private */ export declare const _hasXhr: () => boolean; export declare abstract class HttpRequestExecutor { _req: HttpRequest; _resolve: any; _reject: any; static _xhrFactory: (req: HttpRequest) => HttpRequestExecutor; static _nodeFactory: (req: HttpRequest) => HttpRequestExecutor; constructor(req: HttpRequest); /** * リクエスト実行 * @param {string} method * @param {string} url * @param {Headers} headers * @param {any} body * @param {number} timeout * @param {string} responseType * @param {boolean} receiveResponseHeaders * @param {boolean} useHttp2 */ abstract execute(method: string, url: string, headers: Headers, body: any, timeout: number, responseType: string, receiveResponseHeaders: boolean, useHttp2: boolean): void; abstract setReturnRawMessage(rawMessage: boolean): void; /** * セッションをcloseする (Node.js 使用時、HTTP/2使用時のみ有効) * @param {string} authority 対象のauthority (例: 'http://example.com:1234' パスやパラメータは含めない) * <p>未指定の場合は、保持する全てのHTTP/2セッションをcloseする。 */ static closeHttp2Session(authority?: string): void; /** * HttpRequestExecutor のファクトリメソッド * @param {HttpRequest} req * @return {HttpRequestExecutor} */ static create(req: HttpRequest): HttpRequestExecutor; static setXhrFactory(factory: (req: HttpRequest) => HttpRequestExecutor): void; static setNodeFactory(factory: (req: HttpRequest) => HttpRequestExecutor): void; } export declare class HttpRequest implements ApiRequest { private _service; private _method; private _url; private _headers; private _contentType; private _responseType; private _queryParams; private _data; private _sessionToken; private _timeout; private _rawMessage; private _useHttp2; _resolve: any; _reject: any; private _receiveResponseHeaders; private _responseHeaders; private static _defaultTimeout; static _httpAgent: any; static _httpsAgent: any; static _httpsAgentOptions: _tls.SecureContextOptions; static _proxy: ProxyServer; static getProxy(): ProxyServer; static setProxy(proxy: ProxyServer): void; static setHttpAgent(agent: any): void; static setHttpsAgent(agent: any, options?: any): void; readonly service: any; /** * @description レスポンスヘッダ(Node.js のみ) * @name HttpRequest#responseHeaders * @type {Object} */ responseHeaders: object; /** * @memberOf HttpRequest * @description デフォルト通信タイムアウト値を設定する * @param {number} timeout タイムアウト値(ミリ秒) */ static setDefaultTimeout(timeout: number): void; /** * @memberOf HttpRequest * @description デフォルト通信タイムアウト値を取得する * @return {number} タイムアウト値(ミリ秒) */ static getDefaultTimeout(): number; /** * @description raw response message を返す場合に true をセットする (Node.js専用)。 * <p>true を指定すると、execute 成功時の応答は http.IncomingMessage となる。 * <p>HTTP/2を使用する場合、http2.ClientHttp2Streamとなる。 * @name HttpRequest#rawMessage * @type {boolean} */ rawMessage: boolean; /** * @memberOf HttpRequest * @description HTTP/2 を使用する場合にtrueをセットする。(Node.js専用)。 * @name HttpRequest#useHttp2 * @type {boolean} */ useHttp2: boolean; /** * @class HttpRequest * @classdesc HTTPリクエストクラス * @description コンストラクタ。 * <p> * ユーザがログイン中の場合、自動的に SessionToken が設定される。 * @param {NebulaService} service NebulaService * @param {string} path パス * @param {Object} option オプション。noprefix プロパティに true を設定すると、パスプレフィクス("/1/{tenantId}")を付与しない。 */ constructor(service: NebulaService, path: string, option?: JsonObject); /** * @memberOf HttpRequest * @description レスポンスヘッダ受信設定を行う。 * <p> * true に設定すると、execute 成功時の応答は * {body: ..., headers: {...}, status: statusCode} * 形式となる。 * <p> * ブラウザ(XHR)の場合は、headers は文字列(全ヘッダ連結したもの)、 * Node.js の場合は headers はヘッダ名をキーとした Object となる。 * @param {boolean} receive true の場合はレスポンスヘッダを受信する * @return {HttpRequest} this */ setReceiveResponseHeaders(receive: boolean): HttpRequest; /** * @memberOf HttpRequest * @description HTTP リクエストを実行する。 * X-Application-Id, X-Application-Key, X-Session-Token ヘッダは自動的に付与される。 * @return {Promise} Promise */ execute(): Promise<any>; /** * @memberOf HttpRequest * @dscription セッションをcloseする (Node.js 使用時、HTTP/2使用時のみ有効) * @param {string} authority 対象のauthority 未指定の場合は全てのセッションをcloseする */ static closeHttp2Session(authority?: string): void; /** * @memberOf HttpRequest * @description HTTP メソッドを設定する * @param {string} method メソッド * @return {HttpRequest} this */ setMethod(method: string): HttpRequest; /** * @memberOf HttpRequest * @description Content-Type 設定する * @param {string} contentType Content-Type * @return {HttpRequest} this */ setContentType(contentType: string): HttpRequest; /** * @memberOf HttpRequest * @description クエリパラメータを設定する。以前設定されていた値は消去される。 * @param {Object} params パラメータ(Object形式) * @return {HttpRequest} this */ setQueryParams(params: QueryParams): HttpRequest; /** * @memberOf HttpRequest * @description クエリパラメータを追加する。以前設定されていた値に追加される。 * @param {Object} params パラメータ(Object形式) * @return {HttpRequest} this */ addQueryParams(params: QueryParams): HttpRequest; /** * @memberOf HttpRequest * @description クエリパラメータ(1件)を設定する * @param {string} key パラメータ名 * @param {Object} value 値 * @return {HttpRequest} this */ setQueryParam(key: string, value: any): HttpRequest; /** * @memberOf HttpRequest * @description 送信データを設定する。 * <p> * 文字列を指定した場合は文字列がそのまま設定される。 * Objectを指定した場合は JSON 文字列に変換される。 * Blob および Buffer を指定した場合は、バイナリデータが設定される。 * @param {Object} data データ * @return {HttpRequest} this */ setData(data: any): HttpRequest; /** * @memberOf HttpRequest * @description SessionToken を設定する。 * <p> * 通常は本クラスのインスタンス生成時点で自動的に SessionToken は設定されている(ユーザログイン済みの場合) * @param {string} sessionToken セッショントークン文字列 * @return {HttpRequest} this */ setSessionToken(sessionToken: string): HttpRequest; /** * @memberOf HttpRequest * @description ResponseType を設定する。 * 指定できるタイプは以下のいずれかで、返却されるレスポンスの型が変化する。 * デフォルトは "text"。 * <ul> * <li>text : 文字列</li> * <li>json : JSON。レスポンスは JSON.parse されたもの。</li> * <li>blob : blob (ブラウザのみ)</li> * <li>buffer : Buffer (Node.jsのみ)</li> * </ul> * @param {string} responseType レスポンスタイプ * @return {HttpRequest} this */ setResponseType(responseType: string): HttpRequest; /** * @memberOf HttpRequest * @description リクエストヘッダを設定する。 * <p>注: 1つのヘッダに対して設定できる値は1つのみである。 * @param {string} header ヘッダ名 * @param {string} value 値 * @return {HttpRequest} this */ addRequestHeader(header: string, value: string): HttpRequest; } export declare const initHttpXhr: () => void; /** * XHR 実行クラス * @private */ export declare class HttpXhr extends HttpRequestExecutor { private _xhr; private _receiveResponseHeaders; constructor(req: HttpRequest); setReturnRawMessage(rawMessage: boolean): void; execute(method: string, url: string, headers: Headers, body: any, timeout: number, responseType: string, receiveResponseHeaders: boolean, useHttp2: boolean): void; static closeHttp2Session(authority: string): void; /** * XHRを生成する * @returns {XMLHttpRequest} * @private */ _createXhr(): XMLHttpRequest; /** * XHR状態変更ハンドラ * @returns {any} * @private */ _onReadyStateChange(): any; /** * XHRタイムアウトハンドラ * @private */ _onXhrTimeout(e: any): void; } import { ClientHttp2Session } from "http2"; export declare const initHttpNode: () => void; /** * Node.js 実行クラス * @private */ export declare class HttpNode extends HttpRequestExecutor { private static _http2Sessions; private _responseType; private _receiveResponseHeaders; private _rawMessage; constructor(req: HttpRequest); setReturnRawMessage(returnRawMessage: boolean): void; execute(method: string, urlString: string, headers: Headers, body: any, timeout: number, responseType: string, receiveResponseHeaders: boolean, useHttp2: boolean): void; /** * HTTP/2リクエストを送信する * @param {module:url.Url} url URL * @param {HttpRequestOptions} options ヘッダ等のオプション情報 * @param body リクエストボディ * @private */ private _sendHttp2Request; /** * HTTP/1.1リクエストを送信する * @param {module:url.Url} url URL * @param {HttpRequestOptions} options ヘッダ等のオプション情報 * @param body リクエストボディ * @private */ private _sendHttpRequest; /** * スキームが'https'であるか判定する * @param {module:url.Url} url 判定対象のURL * @returns {boolean} 'https'ならばtrue * @private */ private static _isHttps; /** * HTTPレスポンス受信用のハンドラを設定する (Node.js用) * @param {number} status ステータスコード * @param res Stream(http.IncomingMessageなど) * @private */ private _setResponseHandlers; /** * HTTP/2レスポンス受信用のハンドラを設定する (Node.js用) * @param stream (http2.ClientHttp2Stream) * @private */ private _setHttp2ResponseHandlers; private _parseNodeResponse; /** * HTTP/2のsessionをcloseする(Node.js用) * @param session http2.ClientHttp2Sessionだが、互換性維持のためanyを使用 * @param {function(): void} callback close完了後のコールバック * @private */ private static _closeSession; /** * HTTP/2のstreamをcloseする(Node.js用) * node versionによりcloseに使用するAPIが異なるため * @param stream http2.ClientHttp2Streamだが、互換性維持のためanyを使用 * @private */ private static _closeStream; /** * HTTP/2セッションを全て返却する * @returns {{index: string, module:http2.ClientHttp2Session}} */ static getHttp2Sessions(): { [index: string]: ClientHttp2Session; }; /** * 指定したHTTP/2セッションを取得する * @param {string} authority * @returns {module:http2.ClientHttp2Session} session */ static getHttp2Session(authority: string): ClientHttp2Session; /** * HTTP/2セッションをキャッシュする * @param {string} authority * @param {module:http2.ClientHttp2Session} session */ static setHttp2Session(authority: string, session: ClientHttp2Session): void; /** * 指定したHTTP/2セッションをcloseする。 * @param {string} authority 未指定の場合は、保持するセッションを全てクローズする */ static closeHttp2Session(authority?: string): void; } /** * @class SDEブリッジリクエストクラス * @private */ export declare class _SdeRequest implements ApiRequest { static _callbacks: { [index: string]: Callbacks; }; static _requestId: number; _className: string; _methodName: string; _data: any; constructor(className: string, methodName: string); setData(data: any): any; execute(): Promise<any>; static _createRequestId(): string; static sdeCallback(params: any): void; } export interface NetworkEventListener { onNetworkStateChanged(isOnline: boolean): void; } /** * @class SdeNetworkEventListener * @private */ export declare class _SdeNetworkEventListener { static _callback: NetworkEventListener; constructor(); static setCallback(callback: NetworkEventListener): any; static onNetworkStateChanged(params: JsonObject): void; } /** * 同期イベントリスナ * @private */ export interface SyncEventListener { onSyncStart(targetBucket: string): void; onSyncCompleted(targetBucket: string, objectIds: string): void; onSyncConflicted(bucket: any, client: any, server: any): void; onResolveConflict(resolveObject: any, resolve: any): void; onSyncError(errorCode: number, errorObject: any): void; } export interface ResolveConflictParams { bucketName: string; bucketMode: number; objectId: string; resolveId: string; resolve: number; } /** * @class SdeSyncEventListener * @private */ export declare class _SdeSyncEventListener { static _listeners: { [index: string]: SyncEventListener; }; static _bucketMode: { [index: string]: number; }; constructor(); static setListener(bucket: any, listener: SyncEventListener): any; static resolveConflict(data: ResolveConflictParams): any; static onSyncStart(params: any): void; static onSyncCompleted(params: any): void; static onSyncConflicted(params: any): void; static onResolveConflict(params: any): void; static onSyncError(params: any): void; } /** @private */ export interface AccountLinkJson { _id: string; iss: string; sub: string; op: string; } /** * @class AccountLink * @classdesc AccountLink クラス * @description AccountLink クラスインスタンスを生成する * @example * var link = new Nebula.AccountLink(); * @since v6.5.0 */ export declare class AccountLink { __id: string; _iss: string; _sub: string; _op: string; constructor(); /** * リンクユーザID * @name AccountLink#_id * @type string */ _id: string; /** * Issuer Identifier * @name AccountLink#iss * @type string */ iss: string; /** * Subject Identifier * @name AccountLink#sub * @type string */ sub: string; /** * OP種別 * @name AccountLink#op * @type string */ op: string; /** * @memberOf AccountLink * @description JSONからAccountLinkインスタンスにデータをセットする * @private */ _setAccountLink(obj: AccountLinkJson): AccountLinkJson; } /** * @namespace AclPermission * @description AclPermissionの定義。 * Deprecatedである。代わりに {@link Acl}のメンバを使用すること。・ * @deprecated */ export declare const AclPermission: { /** * 読み込み権限(r) * @const */ READ: string; /** * 書き込み権限(w) * @const */ WRITE: string; /** * 作成権限(c) * @const */ CREATE: string; /** * 更新権限(u) * @const */ UPDATE: string; /** * 削除権限(d) * @const */ DELETE: string; /** * 管理権限(admin) * @const */ ADMIN: string; /** * オーナ(owner) * @const */ OWNER: string; }; /** * @namespace AclGroup * @description AclGroupの定義。 * Deprecatedである。代わりに {@link Acl}のメンバを使用すること。・ * @deprecated */ export declare const AclGroup: { /** * 認証ユーザ (g:authenticated) */ AUTHENTICATED: string; /** * 全ユーザ (g:anonymous) */ ANONYMOUS: string; }; export interface AclJson { owner?: string; r?: string[]; w?: string[]; c?: string[]; u?: string[]; d?: string[]; admin?: string[]; [index: string]: string | string[]; } /** * @class Acl * @classdesc ACLクラス * @example * var acl1 = new Nebula.Acl(); * var acl2 = new Nebula.Acl({"r": [Nebula.Acl.AUTHENTICATED]}); * @param {Object} json JSON表記のACL。省略時は全エントリが空の状態で生成される。 */ export declare class Acl { /** * 読み込み権限(r) * @memberOf Acl * @const */ static READ: string; /** * 書き込み権限(w) * @memberOf Acl * @const */ static WRITE: string; /** * 作成権限(c) * @memberOf Acl * @const */ static CREATE: string; /** * 更新権限(u) * @memberOf Acl * @const */ static UPDATE: string; /** * 削除権限(d) * @memberOf Acl * @const */ static DELETE: string; /** * 管理権限(admin) * @memberOf Acl * @const */ static ADMIN: string; /** * オーナ(owner) * @memberOf Acl * @const */ static OWNER: string; /** * ログイン認識した全ユーザ (g:authenticated) * @memberOf Acl * @const */ static AUTHENTICATED: string; /** * ログインしていないユーザを含む全ユーザ (g:anonymous) * @memberOf Acl * @const */ static ANONYMOUS: string; private _acl; [index: string]: any; /** * @private */ constructor(json?: AclJson | Acl); /** * @method * @memberOf Acl * @description * 対象権限にユーザIDまたはグループ名を追加する * @example * var acl = new Nebula.Acl(); * var user = new Nebula.User(); * var group = new Group("MyGroup"); * .... * acl.addEntry(Nebula.Acl.READ, user); * acl.addEntry(Nebula.Acl.WRITE, "USER_01"); * acl.addEntry(Nebula.Acl.CREATE, group); * acl.addEntry(Nebula.Acl.UPDATE, "g:GROUP_A"); * acl.addEntry(Nebula.Acl.DELETE, Nebula.Acl.AUTHENTICATED); * @param {String} permission エントリを追加する対象権限 * <br />以下のいずれかの値を指定する。 * <ul> * <li>{@link Acl.READ} * <li>{@link Acl.WRITE} * <li>{@link Acl.CREATE} * <li>{@link Acl.UPDATE} * <li>{@link Acl.DELETE} * <li>{@link Acl.ADMIN} * </ul> * @param {Object} entry ユーザまたはグループ情報 * 以下のいずれかを指定する。 * <p> * ・ユーザを指定する場合 * <ul> * <li>{@link User} インスタンス * <li>ユーザIDの文字列 * </ul> * * ・グループを指定する場合 * <ul> * <li>{@link Group} インスタンス * <li>グループ名に g: を付けた文字列。<br>(例) グループ名が GROUP_A の場合、 g:GROUP_A * <li>{@link Acl.AUTHENTICATED} : ログイン認証された全ユーザ * <li>{@link Acl.ANONYMOUS} : ログインしていないユーザを含む全ユーザ * </ul> * @return {Boolean} 正常追加した場合 true、 パラメータが不正の場合 false を返す */ addEntry(permission: string, entry: string | User | Group): boolean; /** * @method * @memberOf Acl * @description * 対象権限からにユーザIDまたはグループ名を削除する * @example * var acl = new Nebula.Acl(); * var user = new Nebula.User(); * var group = new Group("MyGroup"); * .... * acl.removeEntry(Nebula.Acl.READ, user); * acl.removeEntry(Nebula.Acl.WRITE, "USER_01"); * acl.removeEntry(Nebula.Acl.CREATE, group); * acl.removeEntry(Nebula.Acl.UPDATE, "g:GROUP_A"); * acl.removeEntry(Nebula.Acl.DELETE, Nebula.Acl.AUTHENTICATED); * @param {String} permission エントリを削除する対象権限 * <br />以下のいずれかの値を指定する。 * <ul> * <li>{@link Acl.READ} * <li>{@link Acl.WRITE} * <li>{@link Acl.CREATE} * <li>{@link Acl.UPDATE} * <li>{@link Acl.DELETE} * <li>{@link Acl.ADMIN} * </ul> * @param {Object} entry ユーザまたはグループ情報。 * 以下のいずれかを指定する。 * <p> * ・ユーザを指定する場合 * <ul> * <li>{@link User} インスタンス * <li>ユーザIDの文字列 * </ul> * * ・グループを指定する場合 * <ul> * <li>{@link Group} インスタンス * <li>グループ名に g: を付けた文字列。<br>(例) グループ名が GROUP_A の場合、 g:GROUP_A * <li>{@link Acl.AUTHENTICATED} : ログイン認証された全ユーザ * <li>{@link Acl.ANONYMOUS} : ログインしていないユーザを含む全ユーザ * </ul> */ removeEntry(permission: string, entry: string | User | Group): boolean; /** * @method * @memberOf Acl * @description 所有者のユーザIDを設定する * @private */ _setOwner(owner: string): void; /** * @method * @memberOf Acl * @description * 所有者のユーザIDを取得する * @example * var acl = ....; * .... * var userId = acl.getOwner(); * @return * {String} ユーザIDの文字列を返す。所有者がない場合は、null を返す。 */ getOwner(): string; /** * @method * @memberOf Acl * @description * 対象権限のユーザIDおよびグループ名のエントリ一覧を取得する * @example * var acl = ....; * * var entries = acl.getEntries(permission); * for (var i = 0; i < entries.length; i++) { * entry = entries[i]; * ....; * } * @param {String} permission 取得するエントリ一覧の対象権限 * <br />以下のいずれかの値を指定する。 * <ul> * <li>{@link Acl.READ} * <li>{@link Acl.WRITE} * <li>{@link Acl.CREATE} * <li>{@link Acl.UPDATE} * <li>{@link Acl.DELETE} * <li>{@link Acl.ADMIN} * </ul> * @return {Object} ユーザIDまたはグループ名の文字列の配列を返す。 * エントリがない場合は、空配列を返す。 * <br />グループ名には、g: が先頭に付加されている。 */ getEntries(permission: string): string[]; /** * @method * @memberOf Acl * @description ACLのJSONオブジェクトを直接設定する * @private */ _set(acl: AclJson): void; /** * @method * @memberOf Acl * @description 指定のエントリが含まれているかどうか * @private */ _hasEntry(permission: string, target: string): boolean; /** * @method * @memberOf Acl * @description ACLのJSONオブジェクトを文字列に変換する * @private */ _toString(keyName?: string): string; /** * @method * @memberOf Acl * @description ACLのJSONオブジェクトを返す * @param keyName "ACL", "contentACL" のいずれかを指定すると、そのキーに ACL が格納される * @private */ _toJsonObject(keyName?: string): JsonObject; } export declare const RegexOption: { CASE_INSENSITIVITY: string; }; export interface ClauseJson extends JsonObject { [index: string]: AnyJson; } /** * @class Clause * @classdesc オブジェクト検索条件 クラス * @description Clause インスタンスを生成する * @example * var clause = new Nebula.Clause(); */ export declare class Clause { _clause: ClauseJson; /** @private */ constructor(clause?: ClauseJson); /** * @memberOf Clause * @description 条件のパラメータをセットする * @private */ _setParams(key: string, operator: string, value: AnyJson, options?: AnyJson): Clause; /** * @memberOf Clause * @description JSONで表現された条件式を取得する * @return {Object} JSON条件式 */ json(): ClauseJson; /** * @method * @name Clause.equals * @description * (key == value) の条件を示す Nebula.Clause インスタンスを生成する * @example * var clause = Nebula.Clause.equals("score", 80); * @param {String} key 比較するキー名 * @param {Object} value 比較する値 * @return {Clause} Nebula.Clause インスタンスを返す。 */ static equals(key: string, value: AnyJson): Clause; /** * @method * @name Clause#equals * @description * (key == value) の条件を追加する * @example * var clause = new Nebula.Clause().equals("score", 80); * @param {String} key 比較するキー名 * @param {Object} value 比較する値 * @return {Clause} this */ equals(key: string, value: AnyJson): Clause; /** * @memberOf Clause * @description * (key != value) の条件を示す Nebula.Clause インスタンスを生成する * @example * var clause = Nebula.Clause.notEquals("name", "apple"); * @param {String} key 比較するキー名 * @param {Object} value 比較する値 * @return {Clause} Nebula.Clause インスタンスを返す。 */ static notEquals(key: string, value: AnyJson): Clause; /** * @memberOf Clause * @description * (key != value) の条件を追加する * @example * var clause = new Nebula.Clause().notEquals("name", "apple"); * @param {String} key 比較するキー名 * @param {Object} value 比較する値 * @return {Clause} this */ notEquals(key: string, value: AnyJson): Clause; /** * @memberOf Clause * @description * (key < value) の条件を示す Nebula.Clause インスタンスを生成する * @example * var clause = Nebula.Clause.lessThan("score", 30); * @param {String} key 比較するキー名 * @param {Object} value 比較する値 * @return {Clause} Nebula.Clause インスタンスを返す。 */ static lessThan(key: string, value: number): Clause; /** * @memberOf Clause * @description * (key < value) の条件を追加する * @example * var clause = new Nebula.Clause().lessThan("score", 30); * @param {String} key 比較するキー名 * @param {Object} value 比較する値 * @return {Clause} this */ lessThan(key: string, value: number): Clause; /** * @memberOf Clause * @description * (key <= value) の条件を示す Nebula.Clause インスタンスを生成する * @example * var clause = Nebula.Clause.lessThanOrEqual("score", 30); * @param {String} key 比較するキー名 * @param {Object} value 比較する値 * @return {Clause} Nebula.Clause インスタンスを返す。 */ static lessThanOrEqual(key: string, value: number): Clause; /** * @memberOf Clause * @description * (key <= value) の条件を追加する * @example * var clause = new Nebula.Clause().lessThanOrEqual("score", 30); * @param {String} key 比較するキー名 * @param {Object} value 比較する値 * @return {Clause} this */ lessThanOrEqual(key: string, value: number): Clause; /** * @memberOf Clause * @description * (key > value) の条件を示す Nebula.Clause インスタンスを生成する * @example * var clause = Nebula.Clause.greaterThan("number", 1000); * @param {String} key 比較するキー名 * @param {Object} value 比較する値 * @return {Clause} Nebula.Clause インスタンスを返す。 */ static greaterThan(key: string, value: number): Clause; /** * @memberOf Clause * @description * (key > value) の条件を追加する * @example * var clause = new Nebula.Clause().greaterThan("number", 1000); * @param {String} key 比較するキー名 * @param {Object} value 比較する値 * @return {Clause} this */ greaterThan(key: string, value: number): Clause; /** * @memberOf Clause * @description * (key >= value) の条件を示す Nebula.Clause インスタンスを生成する * @example * var clause = Nebula.Clause.greaterThanOrEqual("number", 1000); * @param {String} key 比較するキー名 * @param {Object} value 比較する値 * @return {Clause} Nebula.Clause インスタンスを返す。 */ static greaterThanOrEqual(key: string, value: number): Clause; /** * @memberOf Clause * @description * (key >= value) の条件を追加すうr * @example * var clause = Nebula.Clause.greaterThanOrEqual("number", 1000); * @param {String} key 比較するキー名 * @param {Object} value 比較する値 * @return {Clause} this */ greaterThanOrEqual(key: string, value: number): Clause; /** * @memberOf Clause * @description * key の値が values で指定された中に存在するかの条件を示す Nebula.Clause インスタンスを生成する * @name Clause.in * @function * @example * var targets = [1000, 1003, 1005]; * var clause = Nebula.Clause.in("number", targets); * @param {String} key 比較するキー名 * @param {Object} values 比較する値の配列 * @return {Clause} Nebula.Clause インスタンスを返す。 */ static in(key: string, values: AnyJson[]): Clause; /** * @memberOf Clause * @description * key の値が values で指定された中に存在するかの条件を追加する * @name Clause#in * @function * @example * var targets = [1000, 1003, 1005]; * var clause = new Nebula.Clause().in("number", targets); * @param {String} key 比較するキー名 * @param {Object} values 比較する値の配列 * @return {Clause} this */ in(key: string, values: AnyJson[]): Clause; /** * @memberOf Clause * @description * key の値が values で指定されたすべてを含んでいるかの条件を示す Nebula.Clause インスタンスを生成する * @example * var targets = ["ssl", "security"]; * var clause = Nebula.Clause.all("tags", targets); * @param {String} key 比較するキー名 * @param {Object} values 比較する値の配列 * @return {Clause} Nebula.Clause インスタンスを返す。 */ static all(key: string, values: AnyJson[]): Clause; /** * @memberOf Clause * @description * key の値が values で指定されたすべてを含んでいるかの条件を追加する * @example * var targets = ["ssl", "security"]; * var clause = new Nebula.Clause().all("tags", targets); * @param {String} key 比較するキー名 * @param {Object} values 比較する値の配列 * @return {Clause} this */ all(key: string, values: AnyJson[]): Clause; /** * @memberOf Clause * @description * key で示したフィールドが存在するかどうかを示す Nebula.Clause インスタンスを生成する * @example * var clause = Nebula.Clause.exist("tags", targets); * @param {String} key 比較するキー名 * @param {Boolean} value 存在を確認する場合は true、 存在しないことを確認する場合は false を指定する。 * @return {Clause} Nebula.Clause インスタンスを返す。 */ static exist(key: string, value: boolean): Clause; /** * @memberOf Clause * @description * key で示したフィールドが存在するかどうかの条件を追加する * @example * var clause = new Nebula.Clause().exist("tags", targets); * @param {String} key 比較するキー名 * @param {Boolean} value 存在を確認する場合は true、 存在しないことを確認する場合は false を指定する。 * @return {Clause} this */ exist(key: string, value: boolean): Clause; /** * @memberOf Clause * @description * 正規表現による検索条件を示す Nebula.Clause インスタンスを生成する * @example * var clause = Nebula.Clause.regex("name", "abc*"); * @param {String} key 比較するキー名 * @param {String} expression Perl互換の正規表現の条件文字列 * @param {Object} option オプション * <p>option には必要に応じて以下の値を指定してもよい。(省略可能) * <ul> * <li>Nebula.RegexOption.CASE_INSENSITIVITY 大文字小文字を区別しない</li> * </ul> * @return {Clause} Nebula.Clause インスタンスを返す。 */ static regex(key: string, expression: string, option?: string): Clause; /** * @memberOf Clause * @description * 正規表現による検索条件を追加する * @example * var clause = new Nebula.Clause().regex("name", "abc*"); * @param {String} key 比較するキー名 * @param {String} expression Perl互換の正規表現の条件文字列 * @param {Object} option オプション * <p> * <ul>option には必要に応じて以下の値を指定してもよい。(省略可能) * <li>Nebula.RegexOption.CASE_INSENSITIVITY 大文字小文字を区別しない</li> * </ul> * @return {Clause} this */ regex(key: string, expression: string, option?: string): Clause; /** * @memberOf Clause * @description * Nebula.Clause インスタンスの key の条件を反転させる * @example * var clause = Nebula.Clause.exist("tags", targets); * clause.not("tags"); * @param {String} key 比較するキー名 * @return {Clause} Nebula.Clause インスタンス(this)を返す。 */ not(key: string): Clause; /** * @memberOf Clause * @description * 複数の条件を AND条件で結合する * @example * var clause1 = Nebula.Clause.equals("name", "AAA"); * var clause2 = Nebula.Clause.lessThan("score", 50); * var clause3 = Nebula.Clause.greaterThan("score", 30); * var clause = Nebula.Clause.and(clause1, clause2, clause3); * @param {Clause} clauses AND条件をとるNebula.Clauseインスタンス * <p>複数のインスタンスを指定できる * @return {Clause} Nebula.Clause インスタンスを返す。 */ static and(...clauses: Clause[]): Clause; /** * @memberOf Clause * @description * 複数の条件を OR条件で結合する * @example * var clause1 = Nebula.Clause.equals("name", "AAA"); * var clause2 = Nebula.Clause.lessThan("score", 50); * var clause3 = Nebula.Clause.greaterThan("score", 30); * var clause = Nebula.Clause.or(clause1, clause2, clause3); * @param {Clause} clauses OR条件をとるNebula.Clauseインスタンス * <p>複数のインスタンスを指定できる * @return {Clause} Nebula.Clause インスタンスを返す。 */ static or(...clauses: Clause[]): Clause; /** * @memberOf Clause * @description Nebula.Clause インスタンスの配列からJSON値の配列を生成する * @private */ static _convertClauseArray(clauseArray: Clause[]): AnyJson[]; } export declare class ObjectQuery { _clause: Clause; _limit: number; _skip: number; _sort: string[]; _deleteMark: boolean; _countQuery: boolean; _projection: JsonObject; /** * @class ObjectQuery * @classdesc オブジェクトクエリ * @description オブジェクトクエリを生成する * @example * var query = new Nebula.ObjectQuery(); */ constructor(); /** * @function * @memberOf ObjectQuery * @description 設定されているClauseインスタンスを取得する * @return {Clause} clause */ getClause(): Clause; /** * @function * @memberOf ObjectQuery * @description 設定されている検索上限数を取得する * @return {number} 検索上限数 */ getLimit(): number; /** * @function * @memberOf ObjectQuery * @description 設定されているスキップカウントを取得する * @return {number} スキップカウント */ getSkipCount(): number; /** * @function * @memberOf ObjectQuery * @description 設定されているソート順序を取得する。 * ソート順序は以下のようなキー文字列の配列。降順の場合はキーの先頭が "-" となる。 * <pre> * ["key1", "-key2"] * </pre> * @return {string[]} * @since 6.5.0 */ getSort(): string[]; /** * @function * @memberOf ObjectQuery * @description 設定されているソート順序を取得する。 * <p> * Deprecated である。{@link ObjectQuery#getSort} を使用すること。 * <p> * ソート順序は以下のように {キー名: 昇順フラグ} の配列。 * <pre> * [{"key1": true}, {"key2": false}] * </pre> * @return {array} ソート順序 * @deprecated since 6.5.0 */ getSortOrder(): Array<{ [index: string]: boolean; }>; /** * @function * @memberOf ObjectQuery * @description deleteフラグを取得する * @private */ _getDeleteMark(): boolean; /** * @function * @memberOf ObjectQuery * @description 設定されているプロジェクションを取得する * @return {Object} プロジェクション */ getProjection(): JsonObject; /** * @function * @memberOf ObjectQuery * @description deleteフラグをセットする * @private */ _setDeleteMark(mark: boolean): void; /** * @function * @memberOf ObjectQuery * @description 内部データをクエリパラメータ Object に変換する * @private */ _toParam(): any; /** * @function * @memberOf ObjectQuery * @description 内部データを JSON Object に変換する * @private */ _toParamJson(): any; /** * @function * @memberOf ObjectQuery * @description QUERY情報(JSON)をNebula.ObjectQueryインスタンスに変換する * @private */ static _toObjectQuery(queryJson: any): ObjectQuery; /** * @function * @memberOf ObjectQuery * @description NebulaObjectQueryインスタンスを比較する * @private */ _equals(that: ObjectQuery): boolean; /** * @memberOf ObjectQuery * @description * 検索条件を設定する * @example * var clause = Nebula.Clause.lessThan("score", 50); * var query = new Nebula.ObjectQuery(); * query.setClause(clause); * @param {Clause} clause Nebula.Clauseインスタンス * <p>null を指定した場合は、すでに設定済みの検索条件をクリアする。 * <p>検索条件がすでに設定されていた場合、検索条件は上書きされる。 * デフォルトでは、null が設定されている。 * @return {ObjectQuery} this */ setClause(clause: Clause): ObjectQuery; /** * @memberOf ObjectQuery * @description * 検索上限数を設定する * @example * var clause = Nebula.Clause.lessThan("score", 50); * var query = new Nebula.ObjectQuery() * .setClause(clause) * .setLimit(10); * @param {number} limit 検索上限数。 * <ul> * <li>-1 以上の値を指定できる。 * <li>-1を設定した場合は「制限なし」となる。 * ただし、サーバ側のコンフィグレーションによっては、上限値が制限されている場合がある。この場合、クエリを実行するとサーバからエラーが返る。 * <li>デフォルトでは、-1 が設定されている。 * <li>範囲外の値が設定された場合は、例外をスローする。 * </ul> * @return {ObjectQuery} this */ setLimit(limit: number): ObjectQuery; /** * @function * @memberOf ObjectQuery * @description スキップカウントを設定する。 * <p> * スキップカウントは検索結果の先頭からのスキップ数を表す。 * @example * // この例では検索結果の5件目から10件を取得する。 * var clause = Nebula.Clause.lessThan("score", 50); * var query = new Nebula.ObjectQuery() * .setClause(clause) * .setLimit(10) * .setSkipCount(5); * @param {number} skip スキップカウント * <p> * skip は、0以上の値が設定可能である。 * 範囲外の値が設定された場合は、例外をスローする。 * デフォルトでは、0 が設定されている。 * @return {ObjectQuery} this */ setSkipCount(skip: number): ObjectQuery; /** * @function * @memberOf ObjectQuery * @description ソート順序を設定する。 * @example * var query = new Nebula.ObjectQuery() * .setSort(["key1", "-key2"]); * @param {string[]} sort ソートキーの配列。 * 先に指定したものが高優先となる。 * <p>それぞれデフォルトは昇順。降順の場合は先頭に "-" を付与する。 * @return {ObjectQuery} this * @since 6.5.0 */ setSort(sort: string[]): ObjectQuery; /** * @function * @memberOf ObjectQuery * @description ソート順序を設定する。 * <p> * 本メソッドはDeprecated である。{@link ObjectQuery#setSort} を使用すること。 * <p> * 複数のキーを設定する場合は、本メソッドを複数呼び出す。 * 先に設定したキーのほうが優先順位が高い。 * <p> * ソート順序をクリアするには {@link ObjectQuery#clearSortOrder} を使用する。 * @example * // 以下の例では、score降順 -> name昇順で検索する * var query = new Nebula.ObjectQuery() * .setSortOrder("score", false) * .setSortOrder("name", true); * @param {string} key ソート対象のキー * @param {boolean} isAsc 昇順でソートするかどうかを示す。昇順はtrue, 降順はfalse。 * @return {ObjectQuery} this * @deprecated since 6.5.0 */ setSortOrder(key: string, isAsc: boolean): ObjectQuery; /** * @function * @memberOf ObjectQuery * @description 設定したソート順序をクリアする。<p> * Deprecated である。{@link ObjectQuery#setSort} を使用すること。 * @example * var clause = Nebula.Clause.lessThan("score", 50); * var query = new Nebula.ObjectQuery() * .setClause(clause) * .setLimit(10) * .setSkipCount(5) * .setSortOrder("name", true); * .... * query.clearSortOrder("name"); * @param {string} key クリアするソート対象のキー。省略時は全キーをクリアする。 * @return {ObjectQuery} this * @deprecated since 6.5.0 */ clearSortOrder(key?: string): ObjectQuery; /** * @function * @memberOf ObjectQuery * @description * クエリ件数取得フラグを設定する. * <br> * クエリ件数取得フラグは、Nebula.ObjectBucket.query() を実行したときに * クエリに合致した件数を取得するかどうかを表し、trueの場合は取得することを示す。 * <br> * クエリ件数取得フラグのデフォルト値は、falseである。 * @example * var bucket = ....; * var clause = Nebula.Clause.lessThan("score", 50); * var conditions = new Nebula.ObjectQuery(); * conditions.setClause(clause); * conditions.setLimit(10); * conditions._setCountQuery(true); * .... * conditions.query(conditions) * .then(function(result) { * // result.count に全件数、result.objects にオブジェクト配列が返る * }) * .catch(function(err) {...}) * @param {Boolean} countQuery クエリ件数取得フラグ * <br/>true または false を指定する。 * @private */ _setCountQuery(countQuery: boolean): ObjectQuery; /** * @function * @memberOf ObjectQuery * @description * クエリ件数取得フラグを取得する. * <br> * クエリ件数取得フラグのデフォルト値は、falseである。 * @return * {Boolean} クエリ件数取得フラグ(trueまたはfalse)を返す * @private */ _isCountQuery(): boolean; /** * @function * @memberOf ObjectQuery * @description * プロジェクションを指定する。 * @example * var clause = Nebula.Clause.lessThan("score", 50); * var projection = {"score":1}; * var query = new Nebula.ObjectQuery(); * query.setClause(clause); * query.setProjection(projection); * @param {Object} projectionJson * <p>null を指定した場合は、すでに設定済みの値をクリアする。 * <p>設定済み状態で、本メソッドを呼び出した場合は上書きされる。 * デフォルトでは、null が設定されている。 * @return {ObjectQuery} this */ setProjection(projectionJson: JsonObject): ObjectQuery; } export interface LoginInfo { username?: string; email?: string; token?: string; password?: string; } export interface UserJson { _id?: string; username?: string; email?: string; password?: string; options?: JsonObject; groups?: string[]; createdAt?: string; updatedAt?: string; lastLoginAt?: string; etag?: string; sessionToken?: string; expire?: number; clientCertUser?: boolean; federated?: boolean; token?: string; primaryLinkedUserId?: string; [index: string]: any; } export interface UserQuery { _id?: string; username?: string; email?: string; skip?: number; limit?: number; countQuery?: boolean; } /** * User 基底クラス * @private */ export declare class User implements UserJson { _service: NebulaService; private __id; private _username; private _email; private _password; private _options; private _groups; private _createdAt; private _updatedAt; private _lastLoginAt; private _etag; private _sessionToken; private _expire; private _clientCertUser; private _federated; private _primaryLinkedUserId; [index: string]: any; /** * @class User * @classdesc ユーザ管理 クラス * @description ユーザオブジェクトを生成する。 * <p> * 生成しただけの状態では、まだサーバには登録されていない。ユーザ登録は {@link User#register} で実施する。 * @example * var user = new Nebula.User(); * @return {Object} 新規ユーザオブジェクトのインスタンス */ constructor(service?: NebulaService); /** * ユーザID * @type String * @name User#_id */ _id: string; /** * ユーザ名 * @type String * @name User#username */ username: string; /** * E-mail アドレス * @type String * @name User#email */ email: string; /** * パスワード * @type String * @name User#password */ password: string; /** * オプション (JSON) * @type Object * @name User#options */ options: JsonObject; /** * 所属グループ一覧 (read only) * @type String[] * @name User#groups */ groups: string[]; /** * 作成日時 * @type String * @name User#createdAt */ createdAt: string; /** * 更新日時 * @type String * @name User#updatedAt */ updatedAt: string; /** * 最終ログイン日時 * @type String * @name User#lastLoginAt */ lastLoginAt: string; /** * ETag * @type String * @name User#etag */ etag: string; /** * セッショントークン * @type String * @name User#sessionToken */ sessionToken: string; /** * セッショントークン有効期限(unix time [秒]) * @type String * @name User#expire */ expire: number; /** * クライアント証明書認証ユーザの場合は true<br> * (ブラウザ、またはNode.jsのみ対応) * @type boolean * @name User#clientCertUser */ clientCertUser: boolean; /** * 外部認証連携有りの場合は true<br> * (ブラウザ、またはNode.jsのみ対応) * @type boolean * @name User#federated * @default false */ federated: boolean; /** * プライマリリンクユーザID<br> * OpenID Connect認証でユーザ自動生成時のリンクユーザID<br> * (ブラウザ、またはNode.jsのみ対応) * @type String * @name User#primaryLinkedUserId * @default null */ primaryLinkedUserId: string; protected _setUserInfo(response: string): void; /** * @method * @memberOf User * @description ユーザプロパティ設定 (Deprecated) * <p> * ・ユーザオブジェクトのプロパティを設定する。<br> * ・設定可能なプロパティの詳細は、各メソッドの説明を参照のこと。<br> * ・本メソッドは deprecated である。各フィールドの setter を直接使用すること。<br> * @param {String} property プロパティ名。 * 指定可能なプロパティ名は以下のとおり。 * <ul> * <li>_id : ユーザID * <li>username: ユーザ名 * <li>email: E-mailアドレス * <li>password: パスワード * <li>options: オプション情報 (JSON) * <li>createdAt: ユーザ登録日時 * <li>updatedAt: ユーザ更新日時 * <li>sessionToken: セッショントークン * <li>expire: セッショントークン有効期限(unix time [秒]) * <li>clientCertUser: クライアント証明書ユーザ (ブラウザ、またはNode.jsのみ対応) * <li>federated: 外部認証連携有無 * <li>primaryLinkedUserId: プライマリリンクユーザID * </ul> * @param {String} value プロパティ値 * @return {User} this * @deprecated */ set(property: string, value: any): void; /** * @method * @memberOf User * @description ユーザプロパティ取得 (Deprecated) * <p> * ・ユーザオブジェクトのプロパティを取得する。<br> * ・取得可能なプロパティの詳細は、各メソッドの説明を参照のこと。<br> * ・本メソッドは deprecated である。各フィールドの getter を直接使用すること。 * @param {String} property プロパティ名。 * 指定可能なプロパティ名は以下のとおり(APIによって取得可能なプロパティは異なる)。 * <ul> * <li>_id : ユーザID * <li>username: ユーザ名 * <li>email: E-mailアドレス * <li>password: パスワード * <li>options: オプション情報 (JSON) * <li>groups: 所属グループ一覧 (配列) * <li>createdAt: ユーザ登録日時 * <li>updatedAt: ユーザ更新日時 * <li>sessionToken: セッショントークン * <li>expire: セッショントークン有効期限(unix time [秒]) * <li>clientCertUser: クライアント証明書ユーザ (ブラウザ、またはNode.jsのみ対応) * <li>federated: 外部認証連携有無 * <li>primaryLinkedUserId: プライマリリンクユーザID * </ul> * @return {String} value プロパティ値 * @deprecated */ get(property: string): any; /** * @method * @memberOf User * @description ユーザを登録する。 * <p> * ユーザ登録に必要なユーザプロパティは、以下の通り。 * <ul> * <li>email : E-mailアドレス(必須) * <li>password : パスワード(必須) * <li>username : ユーザ名(オプション) * <li>options : オプション(オプション)。JSON形式で記述された任意のオブジェクトを指定できる。 * </ul> * クライアント証明書認証用のユーザの登録を行う場合のユーザプロパティは以下の通りとする * clientCertUserをtrueに設定した場合、email/passwordは無視する。 * (ブラウザ、またはNode.jsのみ対応) * <ul> * <li>username : ユーザ名(必須) * <li>clientCertUser : クライアント証明書ユーザ trueを設定すること(必須) * <li>options : オプション(オプション) optionsには、JSON形式で記述された任意のオブジェクトを指定できる。 * </ul> * @param {Callbacks} callbacks コールバック (Option) * @return {Promise} callbacksを指定しなかった場合、Promiseオブジェクトを返す。callback指定時は返り値なし(undefined)。 * <p>処理完了時に渡される値は以下の通り。 * <ul> * <li>成功時: ユーザオブジェクトのインスタンス。なお、処理が成功した状態ではまだログインは実施していない。 * 以下のユーザオブジェクトのプロパティが追加格納される * <ul> * <li>_id : 登録したユーザのID * <li>createdAt : 登録日付 * <li>updatedAt : 最終更新日付 * </ul> * <li>失敗時: エラー要因(JSON) * </ul> */ register(callbacks?: Callbacks): Promise<User>; /** * @method * @memberOf User * @description ログイン * @param {Object} userInfo ユーザ情報。 * JSON 形式で指定する。null は指定できない。 * <pre> * { * "email" : "foo@example.com", * "password" : "passwOrd" * }</pre> * <pre> * { * "token" : "TOKEN" * }</pre> * <ul> * <li>email : E-mailアドレス(※) * <li>username : ユーザ名(※) * <li>token : ワンタイムトークン(※) * <li>password : パスワード(E-mailアドレス、ユーザ名指定時は必須) * </ul> * (※) email か username か token のいずれかを指定する。 * @param {Callbacks} callbacks コールバック (Option) * @return {Promise} callbacksを指定しなかった場合、Promiseオブジェクトを返す。callback指定時は返り値なし(undefined)。 * <p>処理完了時に渡される値は以下の通り。 * <ul> * <li>成功時: ログインしたユーザオブジェクトのインスタンス。 * 処理の成功により、以下のユーザオブジェクトのプ