aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
2 lines (1 loc) • 5.29 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Box=void 0;var debug_1=()=>{var tmp=require("../debug");return debug_1=()=>tmp,tmp},stack_trace_1=()=>{var tmp=require("../stack-trace");return stack_trace_1=()=>tmp,tmp};const BOX_SYM=Symbol.for("@aws-cdk/core.Box");let stackTraceCollectionEnabled=!0,globalSeq=0;class Box{static fromValue(value,options){return new State(value,options)}static combine(boxes,fn){return new Combined(boxes,fn)}static isBox(x){return typeof x=="object"&&x&&BOX_SYM in x}static fromArray(as,options){return new ArrayState(as,options?.omitEmpty??!0)}static fromMap(map){return new MapState(map)}static fromSet(set){return new SetState(set)}static disableStackTraceCollection(){stackTraceCollectionEnabled=!1}static enableStackTraceCollection(){stackTraceCollectionEnabled=!0}}exports.Box=Box;class BaseReadableBox{creationStack=[];constructor(){Object.defineProperty(this,BOX_SYM,{value:!0})}derive(fn){return new Computed(this,fn)}resolve(_){return this.get()}}class Combined extends BaseReadableBox{boxes;fn;constructor(boxes,fn){super(),this.boxes=boxes,this.fn=fn}get(){const values=Object.fromEntries(Object.entries(this.boxes).map(([k,b])=>[k,b.get()]));return this.fn(values)}getMutable(){return this.get()}getStackTraces(){const all=Object.values(this.boxes).flatMap(b=>b.getOrderedStackTraces?.()??[]);return all.sort((a,b)=>a.seq-b.seq),all.map(t=>t.trace)}}class Computed extends BaseReadableBox{source;fn;constructor(source,fn){super(),this.source=source,this.fn=fn}get(){return this.fn(this.source.get())}getMutable(){return this.get()}resolve(context){const sourceResolved=this.source.resolve(context);if(sourceResolved!==void 0)return this.fn(sourceResolved)}getStackTraces(){return this.source.getStackTraces()}getOrderedStackTraces(){return this.source.getOrderedStackTraces?.()??[]}}class State extends BaseReadableBox{value;orderedTraces=[];equals;constructor(value,options){super(),this.value=value,this.equals=options?.equals??((a,b)=>a===b),(0,debug_1().debugModeEnabled)()&&stackTraceCollectionEnabled&&(this.orderedTraces=[{trace:(0,stack_trace_1().captureStackTrace)(this.constructor),seq:globalSeq++}])}get(){return this.value}getMutable(){return this.value}set(value){this.equals(this.value,value)||((0,debug_1().debugModeEnabled)()&&stackTraceCollectionEnabled&&(this.orderedTraces=[{trace:(0,stack_trace_1().captureStackTrace)(this.set.bind(this)),seq:globalSeq++}]),this.value=value)}getStackTraces(){return this.orderedTraces.map(t=>t.trace)}getOrderedStackTraces(){return this.orderedTraces}}class ArrayState extends State{array;omitEmptyFlag;constructor(array,omitEmptyFlag){super(array),this.array=array,this.omitEmptyFlag=omitEmptyFlag}resolve(_){if(!(this.omitEmptyFlag&&this.array.length===0))return this.get()}set(value){super.set(value),this.array=value}push(...items){this.array.push(...items),this.appendTrace((0,stack_trace_1().captureStackTrace)(this.push.bind(this)))}pop(){const result=this.array.pop();return this.appendTrace((0,stack_trace_1().captureStackTrace)(this.pop.bind(this))),result}findIndex(predicate){return this.array.findIndex(predicate)}find(predicate){return this.array.find(predicate)}get length(){return this.array.length}splice(start,deleteCount,...items){const result=this.array.splice(start,deleteCount,...items);return this.appendTrace((0,stack_trace_1().captureStackTrace)(this.splice.bind(this))),result}appendTrace(trace){(0,debug_1().debugModeEnabled)()&&stackTraceCollectionEnabled&&this.orderedTraces.push({trace,seq:globalSeq++})}some(predicate){return this.array.some(predicate)}map(fn){return this.derive(arr=>arr.map(fn))}[Symbol.iterator](){return this.array[Symbol.iterator]()}}class MapState extends State{map;constructor(map){super(map),this.map=map}set(value){super.set(value),this.map=value}get size(){return this.map.size}put(key,value){this.map.set(key,value),this.appendTrace((0,stack_trace_1().captureStackTrace)(this.put.bind(this)))}delete(key){const result=this.map.delete(key);return this.appendTrace((0,stack_trace_1().captureStackTrace)(this.delete.bind(this))),result}has(key){return this.map.has(key)}getEntry(key){return this.map.get(key)}keys(){return this.map.keys()}values(){return this.map.values()}entries(){return this.map.entries()}forEach(callbackfn){this.map.forEach(callbackfn)}appendTrace(trace){(0,debug_1().debugModeEnabled)()&&stackTraceCollectionEnabled&&this.orderedTraces.push({trace,seq:globalSeq++})}[Symbol.iterator](){return this.map[Symbol.iterator]()}}class SetState extends State{_set;constructor(_set){super(_set),this._set=_set}set(value){super.set(value),this._set=value}get size(){return this._set.size}add(value){this._set.add(value),this.appendTrace((0,stack_trace_1().captureStackTrace)(this.add.bind(this)))}delete(value){const result=this._set.delete(value);return this.appendTrace((0,stack_trace_1().captureStackTrace)(this.delete.bind(this))),result}has(value){return this._set.has(value)}values(){return this._set.values()}entries(){return this._set.entries()}forEach(callbackfn){this._set.forEach(callbackfn)}appendTrace(trace){(0,debug_1().debugModeEnabled)()&&stackTraceCollectionEnabled&&this.orderedTraces.push({trace,seq:globalSeq++})}[Symbol.iterator](){return this._set[Symbol.iterator]()}}