50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", {
 | 
						|
  value: true
 | 
						|
});
 | 
						|
exports.default = exports.PARAM_YIELD = exports.PARAM_RETURN = exports.PARAM_IN = exports.PARAM_AWAIT = exports.PARAM = void 0;
 | 
						|
exports.functionFlags = functionFlags;
 | 
						|
const PARAM = 0b0000,
 | 
						|
  PARAM_YIELD = 0b0001,
 | 
						|
  PARAM_AWAIT = 0b0010,
 | 
						|
  PARAM_RETURN = 0b0100,
 | 
						|
  PARAM_IN = 0b1000;
 | 
						|
exports.PARAM_IN = PARAM_IN;
 | 
						|
exports.PARAM_RETURN = PARAM_RETURN;
 | 
						|
exports.PARAM_AWAIT = PARAM_AWAIT;
 | 
						|
exports.PARAM_YIELD = PARAM_YIELD;
 | 
						|
exports.PARAM = PARAM;
 | 
						|
class ProductionParameterHandler {
 | 
						|
  constructor() {
 | 
						|
    this.stacks = [];
 | 
						|
  }
 | 
						|
  enter(flags) {
 | 
						|
    this.stacks.push(flags);
 | 
						|
  }
 | 
						|
  exit() {
 | 
						|
    this.stacks.pop();
 | 
						|
  }
 | 
						|
  currentFlags() {
 | 
						|
    return this.stacks[this.stacks.length - 1];
 | 
						|
  }
 | 
						|
  get hasAwait() {
 | 
						|
    return (this.currentFlags() & PARAM_AWAIT) > 0;
 | 
						|
  }
 | 
						|
  get hasYield() {
 | 
						|
    return (this.currentFlags() & PARAM_YIELD) > 0;
 | 
						|
  }
 | 
						|
  get hasReturn() {
 | 
						|
    return (this.currentFlags() & PARAM_RETURN) > 0;
 | 
						|
  }
 | 
						|
  get hasIn() {
 | 
						|
    return (this.currentFlags() & PARAM_IN) > 0;
 | 
						|
  }
 | 
						|
}
 | 
						|
exports.default = ProductionParameterHandler;
 | 
						|
function functionFlags(isAsync, isGenerator) {
 | 
						|
  return (isAsync ? PARAM_AWAIT : 0) | (isGenerator ? PARAM_YIELD : 0);
 | 
						|
}
 | 
						|
 | 
						|
//# sourceMappingURL=production-parameter.js.map
 |