mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	feat(rpc): introduce JSON type in the protocol for arbitrary blobs (#3367)
This commit is contained in:
		
							parent
							
								
									6f3f608d5b
								
							
						
					
					
						commit
						ef76f5b922
					
				@ -180,7 +180,7 @@ export type BrowserTypeLaunchParams = {
 | 
				
			|||||||
    password?: string,
 | 
					    password?: string,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  downloadsPath?: string,
 | 
					  downloadsPath?: string,
 | 
				
			||||||
  firefoxUserPrefs?: SerializedValue,
 | 
					  firefoxUserPrefs?: any,
 | 
				
			||||||
  chromiumSandbox?: boolean,
 | 
					  chromiumSandbox?: boolean,
 | 
				
			||||||
  slowMo?: number,
 | 
					  slowMo?: number,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@ -206,7 +206,7 @@ export type BrowserTypeLaunchOptions = {
 | 
				
			|||||||
    password?: string,
 | 
					    password?: string,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  downloadsPath?: string,
 | 
					  downloadsPath?: string,
 | 
				
			||||||
  firefoxUserPrefs?: SerializedValue,
 | 
					  firefoxUserPrefs?: any,
 | 
				
			||||||
  chromiumSandbox?: boolean,
 | 
					  chromiumSandbox?: boolean,
 | 
				
			||||||
  slowMo?: number,
 | 
					  slowMo?: number,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@ -235,7 +235,7 @@ export type BrowserTypeLaunchServerParams = {
 | 
				
			|||||||
    password?: string,
 | 
					    password?: string,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  downloadsPath?: string,
 | 
					  downloadsPath?: string,
 | 
				
			||||||
  firefoxUserPrefs?: SerializedValue,
 | 
					  firefoxUserPrefs?: any,
 | 
				
			||||||
  chromiumSandbox?: boolean,
 | 
					  chromiumSandbox?: boolean,
 | 
				
			||||||
  port?: number,
 | 
					  port?: number,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@ -261,7 +261,7 @@ export type BrowserTypeLaunchServerOptions = {
 | 
				
			|||||||
    password?: string,
 | 
					    password?: string,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  downloadsPath?: string,
 | 
					  downloadsPath?: string,
 | 
				
			||||||
  firefoxUserPrefs?: SerializedValue,
 | 
					  firefoxUserPrefs?: any,
 | 
				
			||||||
  chromiumSandbox?: boolean,
 | 
					  chromiumSandbox?: boolean,
 | 
				
			||||||
  port?: number,
 | 
					  port?: number,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@ -2228,17 +2228,17 @@ export interface CDPSessionChannel extends Channel {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
export type CDPSessionEventEvent = {
 | 
					export type CDPSessionEventEvent = {
 | 
				
			||||||
  method: string,
 | 
					  method: string,
 | 
				
			||||||
  params?: SerializedValue,
 | 
					  params?: any,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
export type CDPSessionSendParams = {
 | 
					export type CDPSessionSendParams = {
 | 
				
			||||||
  method: string,
 | 
					  method: string,
 | 
				
			||||||
  params?: SerializedValue,
 | 
					  params?: any,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
export type CDPSessionSendOptions = {
 | 
					export type CDPSessionSendOptions = {
 | 
				
			||||||
  params?: SerializedValue,
 | 
					  params?: any,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
export type CDPSessionSendResult = {
 | 
					export type CDPSessionSendResult = {
 | 
				
			||||||
  result: SerializedValue,
 | 
					  result: any,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
export type CDPSessionDetachParams = {};
 | 
					export type CDPSessionDetachParams = {};
 | 
				
			||||||
export type CDPSessionDetachOptions = {};
 | 
					export type CDPSessionDetachOptions = {};
 | 
				
			||||||
 | 
				
			|||||||
@ -20,7 +20,6 @@ import { BrowserContext } from './browserContext';
 | 
				
			|||||||
import { ChannelOwner } from './channelOwner';
 | 
					import { ChannelOwner } from './channelOwner';
 | 
				
			||||||
import { BrowserServer } from './browserServer';
 | 
					import { BrowserServer } from './browserServer';
 | 
				
			||||||
import { headersObjectToArray, envObjectToArray } from '../../converters';
 | 
					import { headersObjectToArray, envObjectToArray } from '../../converters';
 | 
				
			||||||
import { serializeArgument } from './jsHandle';
 | 
					 | 
				
			||||||
import { assert } from '../../helper';
 | 
					import { assert } from '../../helper';
 | 
				
			||||||
import { LaunchOptions, LaunchServerOptions, ConnectOptions, LaunchPersistentContextOptions } from './types';
 | 
					import { LaunchOptions, LaunchServerOptions, ConnectOptions, LaunchPersistentContextOptions } from './types';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -53,7 +52,6 @@ export class BrowserType extends ChannelOwner<BrowserTypeChannel, BrowserTypeIni
 | 
				
			|||||||
        ignoreDefaultArgs: Array.isArray(options.ignoreDefaultArgs) ? options.ignoreDefaultArgs : undefined,
 | 
					        ignoreDefaultArgs: Array.isArray(options.ignoreDefaultArgs) ? options.ignoreDefaultArgs : undefined,
 | 
				
			||||||
        ignoreAllDefaultArgs: !!options.ignoreDefaultArgs && !Array.isArray(options.ignoreDefaultArgs),
 | 
					        ignoreAllDefaultArgs: !!options.ignoreDefaultArgs && !Array.isArray(options.ignoreDefaultArgs),
 | 
				
			||||||
        env: options.env ? envObjectToArray(options.env) : undefined,
 | 
					        env: options.env ? envObjectToArray(options.env) : undefined,
 | 
				
			||||||
        firefoxUserPrefs: options.firefoxUserPrefs ? serializeArgument(options.firefoxUserPrefs).value : undefined,
 | 
					 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
      const browser = Browser.from((await this._channel.launch(launchOptions)).browser);
 | 
					      const browser = Browser.from((await this._channel.launch(launchOptions)).browser);
 | 
				
			||||||
      browser._logger = logger;
 | 
					      browser._logger = logger;
 | 
				
			||||||
@ -70,7 +68,6 @@ export class BrowserType extends ChannelOwner<BrowserTypeChannel, BrowserTypeIni
 | 
				
			|||||||
        ignoreDefaultArgs: Array.isArray(options.ignoreDefaultArgs) ? options.ignoreDefaultArgs : undefined,
 | 
					        ignoreDefaultArgs: Array.isArray(options.ignoreDefaultArgs) ? options.ignoreDefaultArgs : undefined,
 | 
				
			||||||
        ignoreAllDefaultArgs: !!options.ignoreDefaultArgs && !Array.isArray(options.ignoreDefaultArgs),
 | 
					        ignoreAllDefaultArgs: !!options.ignoreDefaultArgs && !Array.isArray(options.ignoreDefaultArgs),
 | 
				
			||||||
        env: options.env ? envObjectToArray(options.env) : undefined,
 | 
					        env: options.env ? envObjectToArray(options.env) : undefined,
 | 
				
			||||||
        firefoxUserPrefs: options.firefoxUserPrefs ? serializeArgument(options.firefoxUserPrefs).value : undefined,
 | 
					 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
      return BrowserServer.from((await this._channel.launchServer(launchServerOptions)).server);
 | 
					      return BrowserServer.from((await this._channel.launchServer(launchServerOptions)).server);
 | 
				
			||||||
    }, logger);
 | 
					    }, logger);
 | 
				
			||||||
 | 
				
			|||||||
@ -17,7 +17,6 @@
 | 
				
			|||||||
import { CDPSessionChannel, CDPSessionInitializer } from '../channels';
 | 
					import { CDPSessionChannel, CDPSessionInitializer } from '../channels';
 | 
				
			||||||
import { ChannelOwner } from './channelOwner';
 | 
					import { ChannelOwner } from './channelOwner';
 | 
				
			||||||
import { Protocol } from '../../chromium/protocol';
 | 
					import { Protocol } from '../../chromium/protocol';
 | 
				
			||||||
import { parseResult, serializeArgument } from './jsHandle';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class CDPSession extends ChannelOwner<CDPSessionChannel, CDPSessionInitializer> {
 | 
					export class CDPSession extends ChannelOwner<CDPSessionChannel, CDPSessionInitializer> {
 | 
				
			||||||
  static from(cdpSession: CDPSessionChannel): CDPSession {
 | 
					  static from(cdpSession: CDPSessionChannel): CDPSession {
 | 
				
			||||||
@ -34,8 +33,7 @@ export class CDPSession extends ChannelOwner<CDPSessionChannel, CDPSessionInitia
 | 
				
			|||||||
    super(parent, type, guid, initializer);
 | 
					    super(parent, type, guid, initializer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this._channel.on('event', ({ method, params }) => {
 | 
					    this._channel.on('event', ({ method, params }) => {
 | 
				
			||||||
      const cdpParams = params ? parseResult(params) : undefined;
 | 
					      this.emit(method, params);
 | 
				
			||||||
      this.emit(method, cdpParams);
 | 
					 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this.on = super.on;
 | 
					    this.on = super.on;
 | 
				
			||||||
@ -50,9 +48,8 @@ export class CDPSession extends ChannelOwner<CDPSessionChannel, CDPSessionInitia
 | 
				
			|||||||
    params?: Protocol.CommandParameters[T]
 | 
					    params?: Protocol.CommandParameters[T]
 | 
				
			||||||
  ): Promise<Protocol.CommandReturnValues[T]> {
 | 
					  ): Promise<Protocol.CommandReturnValues[T]> {
 | 
				
			||||||
    return this._wrapApiCall('cdpSession.send', async () => {
 | 
					    return this._wrapApiCall('cdpSession.send', async () => {
 | 
				
			||||||
      const protocolParams = params ? serializeArgument(params).value : undefined;
 | 
					      const result = await this._channel.send({ method, params });
 | 
				
			||||||
      const result = await this._channel.send({ method, params: protocolParams });
 | 
					      return result.result as Protocol.CommandReturnValues[T];
 | 
				
			||||||
      return parseResult(result.result) as Protocol.CommandReturnValues[T];
 | 
					 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -215,7 +215,7 @@ BrowserType:
 | 
				
			|||||||
            username: string?
 | 
					            username: string?
 | 
				
			||||||
            password: string?
 | 
					            password: string?
 | 
				
			||||||
        downloadsPath: string?
 | 
					        downloadsPath: string?
 | 
				
			||||||
        firefoxUserPrefs: SerializedValue?
 | 
					        firefoxUserPrefs: json?
 | 
				
			||||||
        chromiumSandbox: boolean?
 | 
					        chromiumSandbox: boolean?
 | 
				
			||||||
        slowMo: number?
 | 
					        slowMo: number?
 | 
				
			||||||
      returns:
 | 
					      returns:
 | 
				
			||||||
@ -252,7 +252,7 @@ BrowserType:
 | 
				
			|||||||
            username: string?
 | 
					            username: string?
 | 
				
			||||||
            password: string?
 | 
					            password: string?
 | 
				
			||||||
        downloadsPath: string?
 | 
					        downloadsPath: string?
 | 
				
			||||||
        firefoxUserPrefs: SerializedValue?
 | 
					        firefoxUserPrefs: json?
 | 
				
			||||||
        chromiumSandbox: boolean?
 | 
					        chromiumSandbox: boolean?
 | 
				
			||||||
        port: number?
 | 
					        port: number?
 | 
				
			||||||
      returns:
 | 
					      returns:
 | 
				
			||||||
@ -1849,9 +1849,9 @@ CDPSession:
 | 
				
			|||||||
    send:
 | 
					    send:
 | 
				
			||||||
      parameters:
 | 
					      parameters:
 | 
				
			||||||
        method: string
 | 
					        method: string
 | 
				
			||||||
        params: SerializedValue?
 | 
					        params: json?
 | 
				
			||||||
      returns:
 | 
					      returns:
 | 
				
			||||||
        result: SerializedValue
 | 
					        result: json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    detach:
 | 
					    detach:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1860,7 +1860,7 @@ CDPSession:
 | 
				
			|||||||
    event:
 | 
					    event:
 | 
				
			||||||
      parameters:
 | 
					      parameters:
 | 
				
			||||||
        method: string
 | 
					        method: string
 | 
				
			||||||
        params: SerializedValue?
 | 
					        params: json?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -24,7 +24,6 @@ import { BrowserContextBase } from '../../browserContext';
 | 
				
			|||||||
import { BrowserContextDispatcher } from './browserContextDispatcher';
 | 
					import { BrowserContextDispatcher } from './browserContextDispatcher';
 | 
				
			||||||
import { BrowserServerDispatcher } from './browserServerDispatcher';
 | 
					import { BrowserServerDispatcher } from './browserServerDispatcher';
 | 
				
			||||||
import { headersArrayToObject, envArrayToObject } from '../../converters';
 | 
					import { headersArrayToObject, envArrayToObject } from '../../converters';
 | 
				
			||||||
import { parseValue } from './jsHandleDispatcher';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class BrowserTypeDispatcher extends Dispatcher<BrowserType, BrowserTypeInitializer> implements BrowserTypeChannel {
 | 
					export class BrowserTypeDispatcher extends Dispatcher<BrowserType, BrowserTypeInitializer> implements BrowserTypeChannel {
 | 
				
			||||||
  constructor(scope: DispatcherScope, browserType: BrowserTypeBase) {
 | 
					  constructor(scope: DispatcherScope, browserType: BrowserTypeBase) {
 | 
				
			||||||
@ -39,7 +38,6 @@ export class BrowserTypeDispatcher extends Dispatcher<BrowserType, BrowserTypeIn
 | 
				
			|||||||
      ...params,
 | 
					      ...params,
 | 
				
			||||||
      ignoreDefaultArgs: params.ignoreAllDefaultArgs ? true : params.ignoreDefaultArgs,
 | 
					      ignoreDefaultArgs: params.ignoreAllDefaultArgs ? true : params.ignoreDefaultArgs,
 | 
				
			||||||
      env: params.env ? envArrayToObject(params.env) : undefined,
 | 
					      env: params.env ? envArrayToObject(params.env) : undefined,
 | 
				
			||||||
      firefoxUserPrefs: params.firefoxUserPrefs ? parseValue(params.firefoxUserPrefs) : undefined,
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    const browser = await this._object.launch(options);
 | 
					    const browser = await this._object.launch(options);
 | 
				
			||||||
    return { browser: new BrowserDispatcher(this._scope, browser as BrowserBase) };
 | 
					    return { browser: new BrowserDispatcher(this._scope, browser as BrowserBase) };
 | 
				
			||||||
@ -61,7 +59,6 @@ export class BrowserTypeDispatcher extends Dispatcher<BrowserType, BrowserTypeIn
 | 
				
			|||||||
    const options = {
 | 
					    const options = {
 | 
				
			||||||
      ...params,
 | 
					      ...params,
 | 
				
			||||||
      ignoreDefaultArgs: params.ignoreAllDefaultArgs ? true : params.ignoreDefaultArgs,
 | 
					      ignoreDefaultArgs: params.ignoreAllDefaultArgs ? true : params.ignoreDefaultArgs,
 | 
				
			||||||
      firefoxUserPrefs: params.firefoxUserPrefs ? parseValue(params.firefoxUserPrefs) : undefined,
 | 
					 | 
				
			||||||
      env: params.env ? envArrayToObject(params.env) : undefined,
 | 
					      env: params.env ? envArrayToObject(params.env) : undefined,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    return { server: new BrowserServerDispatcher(this._scope, await this._object.launchServer(options)) };
 | 
					    return { server: new BrowserServerDispatcher(this._scope, await this._object.launchServer(options)) };
 | 
				
			||||||
 | 
				
			|||||||
@ -15,23 +15,20 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { CRSession, CRSessionEvents } from '../../chromium/crConnection';
 | 
					import { CRSession, CRSessionEvents } from '../../chromium/crConnection';
 | 
				
			||||||
import { CDPSessionChannel, CDPSessionInitializer, SerializedValue } from '../channels';
 | 
					import { CDPSessionChannel, CDPSessionInitializer } from '../channels';
 | 
				
			||||||
import { Dispatcher, DispatcherScope } from './dispatcher';
 | 
					import { Dispatcher, DispatcherScope } from './dispatcher';
 | 
				
			||||||
import { serializeResult, parseValue } from './jsHandleDispatcher';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class CDPSessionDispatcher extends Dispatcher<CRSession, CDPSessionInitializer> implements CDPSessionChannel {
 | 
					export class CDPSessionDispatcher extends Dispatcher<CRSession, CDPSessionInitializer> implements CDPSessionChannel {
 | 
				
			||||||
  constructor(scope: DispatcherScope, crSession: CRSession) {
 | 
					  constructor(scope: DispatcherScope, crSession: CRSession) {
 | 
				
			||||||
    super(scope, crSession, 'CDPSession', {}, true);
 | 
					    super(scope, crSession, 'CDPSession', {}, true);
 | 
				
			||||||
    crSession._eventListener = (method, cdpParams) => {
 | 
					    crSession._eventListener = (method, params) => {
 | 
				
			||||||
      const params = cdpParams ? serializeResult(cdpParams) : undefined;
 | 
					 | 
				
			||||||
      this._dispatchEvent('event', { method, params });
 | 
					      this._dispatchEvent('event', { method, params });
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    crSession.on(CRSessionEvents.Disconnected, () => this._dispose());
 | 
					    crSession.on(CRSessionEvents.Disconnected, () => this._dispose());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async send(params: { method: string, params?: SerializedValue }): Promise<{ result: SerializedValue }> {
 | 
					  async send(params: { method: string, params?: any }): Promise<{ result: any }> {
 | 
				
			||||||
    const cdpParams = params.params ? parseValue(params.params) : undefined;
 | 
					    return { result: await this._object.send(params.method as any, params.params) };
 | 
				
			||||||
    return { result: serializeResult(await this._object.send(params.method as any, cdpParams)) };
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async detach(): Promise<void> {
 | 
					  async detach(): Promise<void> {
 | 
				
			||||||
 | 
				
			|||||||
@ -16,7 +16,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// This file is generated by generate_channels.js, do not edit manually.
 | 
					// This file is generated by generate_channels.js, do not edit manually.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { Validator, ValidationError, tOptional, tObject, tBoolean, tNumber, tString, tEnum, tArray, tBinary } from './validatorPrimitives';
 | 
					import { Validator, ValidationError, tOptional, tObject, tBoolean, tNumber, tString, tAny, tEnum, tArray, tBinary } from './validatorPrimitives';
 | 
				
			||||||
export { Validator, ValidationError } from './validatorPrimitives';
 | 
					export { Validator, ValidationError } from './validatorPrimitives';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Scheme = { [key: string]: Validator };
 | 
					type Scheme = { [key: string]: Validator };
 | 
				
			||||||
@ -127,7 +127,7 @@ export function createScheme(tChannel: (name: string) => Validator): Scheme {
 | 
				
			|||||||
      password: tOptional(tString),
 | 
					      password: tOptional(tString),
 | 
				
			||||||
    })),
 | 
					    })),
 | 
				
			||||||
    downloadsPath: tOptional(tString),
 | 
					    downloadsPath: tOptional(tString),
 | 
				
			||||||
    firefoxUserPrefs: tOptional(tType('SerializedValue')),
 | 
					    firefoxUserPrefs: tOptional(tAny),
 | 
				
			||||||
    chromiumSandbox: tOptional(tBoolean),
 | 
					    chromiumSandbox: tOptional(tBoolean),
 | 
				
			||||||
    slowMo: tOptional(tNumber),
 | 
					    slowMo: tOptional(tNumber),
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
@ -153,7 +153,7 @@ export function createScheme(tChannel: (name: string) => Validator): Scheme {
 | 
				
			|||||||
      password: tOptional(tString),
 | 
					      password: tOptional(tString),
 | 
				
			||||||
    })),
 | 
					    })),
 | 
				
			||||||
    downloadsPath: tOptional(tString),
 | 
					    downloadsPath: tOptional(tString),
 | 
				
			||||||
    firefoxUserPrefs: tOptional(tType('SerializedValue')),
 | 
					    firefoxUserPrefs: tOptional(tAny),
 | 
				
			||||||
    chromiumSandbox: tOptional(tBoolean),
 | 
					    chromiumSandbox: tOptional(tBoolean),
 | 
				
			||||||
    port: tOptional(tNumber),
 | 
					    port: tOptional(tNumber),
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
@ -837,7 +837,7 @@ export function createScheme(tChannel: (name: string) => Validator): Scheme {
 | 
				
			|||||||
  });
 | 
					  });
 | 
				
			||||||
  scheme.CDPSessionSendParams = tObject({
 | 
					  scheme.CDPSessionSendParams = tObject({
 | 
				
			||||||
    method: tString,
 | 
					    method: tString,
 | 
				
			||||||
    params: tOptional(tType('SerializedValue')),
 | 
					    params: tOptional(tAny),
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
  scheme.CDPSessionDetachParams = tOptional(tObject({}));
 | 
					  scheme.CDPSessionDetachParams = tOptional(tObject({}));
 | 
				
			||||||
  scheme.ElectronLaunchParams = tObject({
 | 
					  scheme.ElectronLaunchParams = tObject({
 | 
				
			||||||
 | 
				
			|||||||
@ -52,6 +52,9 @@ export const tUndefined: Validator = (arg: any, path: string) => {
 | 
				
			|||||||
    return arg;
 | 
					    return arg;
 | 
				
			||||||
  throw new ValidationError(`${path}: expected undefined, got ${typeof arg}`);
 | 
					  throw new ValidationError(`${path}: expected undefined, got ${typeof arg}`);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					export const tAny: Validator = (arg: any, path: string) => {
 | 
				
			||||||
 | 
					  return arg;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
export const tOptional = (v: Validator): Validator => {
 | 
					export const tOptional = (v: Validator): Validator => {
 | 
				
			||||||
  return (arg: any, path: string) => {
 | 
					  return (arg: any, path: string) => {
 | 
				
			||||||
    if (Object.is(arg, undefined))
 | 
					    if (Object.is(arg, undefined))
 | 
				
			||||||
 | 
				
			|||||||
@ -36,6 +36,8 @@ function inlineType(type, indent, wrapEnums = false) {
 | 
				
			|||||||
      type = type.substring(0, type.length - 1);
 | 
					      type = type.substring(0, type.length - 1);
 | 
				
			||||||
    if (type === 'binary')
 | 
					    if (type === 'binary')
 | 
				
			||||||
      return { ts: 'Binary', scheme: 'tBinary', optional };
 | 
					      return { ts: 'Binary', scheme: 'tBinary', optional };
 | 
				
			||||||
 | 
					    if (type === 'json')
 | 
				
			||||||
 | 
					      return { ts: 'any', scheme: 'tAny', optional };
 | 
				
			||||||
    if (['string', 'boolean', 'number', 'undefined'].includes(type))
 | 
					    if (['string', 'boolean', 'number', 'undefined'].includes(type))
 | 
				
			||||||
      return { ts: type, scheme: `t${titleCase(type)}`, optional };
 | 
					      return { ts: type, scheme: `t${titleCase(type)}`, optional };
 | 
				
			||||||
    if (channels.has(type))
 | 
					    if (channels.has(type))
 | 
				
			||||||
@ -137,7 +139,7 @@ const validator_ts = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// This file is generated by ${path.basename(__filename)}, do not edit manually.
 | 
					// This file is generated by ${path.basename(__filename)}, do not edit manually.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { Validator, ValidationError, tOptional, tObject, tBoolean, tNumber, tString, tEnum, tArray, tBinary } from './validatorPrimitives';
 | 
					import { Validator, ValidationError, tOptional, tObject, tBoolean, tNumber, tString, tAny, tEnum, tArray, tBinary } from './validatorPrimitives';
 | 
				
			||||||
export { Validator, ValidationError } from './validatorPrimitives';
 | 
					export { Validator, ValidationError } from './validatorPrimitives';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Scheme = { [key: string]: Validator };
 | 
					type Scheme = { [key: string]: Validator };
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user