UNPKG

@comyata/fe

Version:

Execute YAML and JSON files like programs and get clean data to work with as result.

45 lines (43 loc) 1.1 kB
export class DataRef { /** * The parsed data to use for computing. */ /** * The loaded data value to use for parsing. */ constructor(file) { this.file = file; this.value = file?.value; this.node = file?.node; } static withValue(file, value) { const ref = new DataRef(file); ref.value = { current: value }; return ref; } } export class DataFileRegistry { files = new Map(); refs = new Map(); fileLoader = new Map(); fileLoaderListener = new Map(); constructor( // onFileAdded, // onFileUsed, // onFileLoaded resolveFile, initialFiles) { this.resolveFile = resolveFile; this.files = new Map(initialFiles?.map(f => [f.fileId, f])); } fileRef(fileUrl, importContext) { let fileRef = this.files.get(fileUrl); if (fileRef) return fileRef; // todo: call here fileRef from fileEngine or // mv logic here and only update the global state through some "on file added" hook from here? fileRef = this.resolveFile(fileUrl, importContext); this.files.set(fileUrl, fileRef); return fileRef; } }