File size: 2,165 Bytes
bc20498 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import Node from './shared/Node.js';
import PendingBlock from './PendingBlock.js';
import ThenBlock from './ThenBlock.js';
import CatchBlock from './CatchBlock.js';
import Expression from './shared/Expression.js';
import { unpack_destructuring } from './shared/Context.js';
/** @extends Node<'AwaitBlock'> */
export default class AwaitBlock extends Node {
/** @type {import('./shared/Expression.js').default} */
expression;
/** @type {import('./shared/Context.js').Context[]} */
then_contexts;
/** @type {import('./shared/Context.js').Context[]} */
catch_contexts;
/** @type {import('estree').Node | null} */
then_node;
/** @type {import('estree').Node | null} */
catch_node;
/** @type {import('./PendingBlock.js').default} */
pending;
/** @type {import('./ThenBlock.js').default} */
then;
/** @type {import('./CatchBlock.js').default} */
catch;
/** @type {Map<string, import('estree').Node>} */
context_rest_properties = new Map();
/**
* @param {import('../Component.js').default} component
* @param {import('./shared/Node.js').default} parent
* @param {import('./shared/TemplateScope.js').default} scope
* @param {import('../../interfaces.js').TemplateNode} info
*/
constructor(component, parent, scope, info) {
super(component, parent, scope, info);
this.cannot_use_innerhtml();
this.not_static_content();
this.expression = new Expression(component, this, scope, info.expression);
this.then_node = info.value;
this.catch_node = info.error;
if (this.then_node) {
this.then_contexts = [];
unpack_destructuring({
contexts: this.then_contexts,
node: info.value,
scope,
component,
context_rest_properties: this.context_rest_properties
});
}
if (this.catch_node) {
this.catch_contexts = [];
unpack_destructuring({
contexts: this.catch_contexts,
node: info.error,
scope,
component,
context_rest_properties: this.context_rest_properties
});
}
this.pending = new PendingBlock(component, this, scope, info.pending);
this.then = new ThenBlock(component, this, scope, info.then);
this.catch = new CatchBlock(component, this, scope, info.catch);
}
}
|