{"version":3,"sources":["webpack:///./src/web-api/entry-views/encryption.ts","webpack:///./src/web-api/entry-views/entry-view-service.ts"],"names":["_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","key","desc","value","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","resolve","reject","invoke","record","result","_typeof","__await","then","unwrapped","error","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","undefined","return","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","arguments","apply","encode","s","window","TextEncoder","binary","encodeURIComponent","replace","match","p1","String","fromCharCode","data","Uint8Array","Array","ch","charCodeAt","decode","TextDecoder","ArrayBuffer","encoded","map","join","m","p","code","toString","toUpperCase","decodeURIComponent","encrypt","_x","_x2","_x3","_encrypt","_callee","encryptionKey","additionalData","iv","alg","buffer","_context","crypto","getRandomValues","tagLength","subtle","JSON","stringify","Data","IV","t0","isEncryptedRecord","decrypt","_x4","_x5","_x6","_decrypt","_callee2","encrypted","_context2","parse","isCryptoSupported","_x7","_isCryptoSupported","_callee3","keySeed","_crypto","cryptoSeed","test","decrypted","_context3","msCrypto","webkitSubtle","digest","generateKey","Id","Validation","_setPrototypeOf","o","bind","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","e","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_createForOfIteratorHelper","allowArrayLike","it","isArray","_unsupportedIterableToArray","F","n","_e","f","normalCompletion","didErr","step","_e2","minLen","_arrayLikeToArray","from","arr","len","arr2","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","input","hint","prim","toPrimitive","res","Number","_toPrimitive","EntryLookupBatch","request","_ids","Set","_views","_request","this","get","view","add","ids","_step","_iterator","id","entryData","relevantIds","filter","has","_id","cryptoKeys","EntryViewService","_ServiceWithSession","subClass","superClass","_inherits","_loadEntryData","_getCachedEntries","_lookupEntries","_getFilter","_ensureBatchesLoaded","_getSpecificIndex","_getIndex","_getCryptoKey","_cacheIndexes","_loadCachedIndexes","_loadRecord","_cacheRecord","_openIndexedDB","_super","model","session","log","_this","pseudoLoadDeleted","suppressLookupLoadingErrors","db","sessionViewTokens","additionalViewTokens","encryptionSeed","loadingPromises","entryLookupBatch","loadEntryBatches","viewTokens","entryTypeNames","entryTypeName","split","orgName","flags","entryCaching","openIndexedDB","version","enableLookups","getLookupManager","getCascadeFilterManager","assign","viewId","token","onFail","_this2","warn","openDb","concat","upgrade","objectStoreNames","contains","deleteObjectStore","createObjectStore","keyPath","_ref","_db","onversionchange","close","newVersion","_unused","formId","storeName","transaction","objectStore","_objectSpread","t1","_defineProperty","t2","put","t3","_callee5","recordKey","_this3","_args5","_context5","executeWithTracking","_callee4","_context4","_x8","_x9","userShort","roleId","_callee6","userSpecificSettings","_cachedIndexes$timest","cachedIndexes","_context6","loadRecord","getCacheKey","timestamp","indexOf","_x10","_x11","_x12","_callee7","indexes","_context7","cacheRecord","entries","_x13","_x14","_x15","_x16","_x17","_callee8","_context8","getCryptoKey","_x18","_x19","_callee9","seed","_context9","_x20","_x21","_callee10","formKey","_context10","Key","Form","_x22","_this$viewTokens$view","startsWith","_callee12","progressCallback","_this4","_context12","isValidView","_callee11","delay","errors","lck","_context11","serviceRequest","endpoint","isLookupView","params","poll","response","find","idx","Type","IndexType","Lock","PercentDone","setTimeout","ensureBatchesLoaded","parseError","_x23","_x24","_x25","_x26","_x27","_callee14","entryId","_this5","_context14","_callee13","pollCount","_result$response","index","_context13","_x28","_x29","_x30","_x31","_x32","_callee15","batches","lastCheckpoint","requests","responses","j","_i","_indexes","_this6","_context15","Checkpoint","Batch","StorageUrl","batch","client","all","splice","_toConsumableArray","_x33","_callee16","_context16","isCognitoJson","_x34","_x35","_callee17","_this7","_context17","Deferred","promise","lookupEntriesInBatch","addView","addEntryIds","getEntries","_x36","_x37","_this8","_callee18","fetchIds","cachedEntryData","deletedEntryIds","orders","_iterator2","_step2","_context18","idSet","getCachedEntries","idList","delete","startTrackEvent","Tokens","viewList","v","Entries","EntryId","EntryETag","$etag","Map","json","Entry","Order","etag","console","set","stopTrackEvent","numSourceFormFields","fromEntries","numberLoaded","size","_callee19","_this9","_context19","_x38","_callee20","isAdmin","_len","_key","_i2","_entries","dataMap","_this10","_args20","_context20","loadEntryDataInBatch","d","_x39","_x40","_this11","_callee22","indexMap","loadedData","numRequested","requestQueue","keysToLoad","_loop","_context23","currentKeyBatch","_context22","race","_callee21","_context21","Token","action","_this12","task","cleanupTask","_this13","_ref8","_callee23","_context24","_x41","ServiceWithSession"],"mappings":"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","file":"147.facab2c238247b83f64e.js","sourcesContent":["// Encodes a Unicode string and returns a binary array\r\nexport function encode(s) {\r\n\tif (window.TextEncoder)\r\n\t\treturn new TextEncoder().encode(s);\r\n\r\n\tconst encoded = encodeURIComponent(s);\r\n\tconst binary = encoded.replace(/%([0-9A-F]{2})/g, (match, p1) => String.fromCharCode('0x' + p1));\r\n\tconst data = new Uint8Array(binary.length);\r\n\tArray.prototype.forEach.call(binary, (ch, i) => {\r\n\t\tdata[i] = ch.charCodeAt(0);\r\n\t});\r\n\treturn data;\r\n};\r\n\r\n// Decodes a binary array and returns a Unicode string\r\nexport function decode(data) {\r\n\tif (window.TextDecoder)\r\n\t\treturn new TextDecoder().decode(data);\r\n\r\n\tif (data instanceof ArrayBuffer)\r\n\t\tdata = new Uint8Array(data);\r\n\r\n\tconst binary = Array.prototype.map.call(data, ch => String.fromCharCode(ch)).join('');\r\n\tconst encoded = binary.replace(/(.)/g, (m, p) => {\r\n\t\tlet code = p.charCodeAt(0).toString(16).toUpperCase();\r\n\t\tif (code.length < 2)\r\n\t\t\tcode = '0' + code;\r\n\t\treturn '%' + code;\r\n\t});\r\n\treturn decodeURIComponent(encoded);\r\n}\r\n\r\nexport type EncryptedRecord = {\r\n\tData: ArrayBuffer;\r\n\tIV: Uint8Array;\r\n}\r\n\r\nexport async function encrypt(data: any, encryptionKey: CryptoKey, additionalData: ArrayBuffer): Promise {\r\n\ttry {\r\n\t\tconst iv = crypto.getRandomValues(new Uint8Array(12));\r\n\t\tconst alg = { name: 'AES-GCM', iv: iv, additionalData, tagLength: 128 };\r\n\t\tconst buffer = await crypto.subtle.encrypt(alg, encryptionKey, encode(JSON.stringify(data)));\r\n\t\treturn { Data: buffer, IV: iv };\r\n\t}\r\n\tcatch (e) {\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nexport function isEncryptedRecord(record: any): record is EncryptedRecord {\r\n\treturn record.Data && record.IV;\r\n}\r\n\r\n// Decrypts the specified encrypted entity\r\nexport async function decrypt(encrypted: EncryptedRecord, encryptionKey: CryptoKey, additionalData: ArrayBuffer) {\r\n\ttry {\r\n\t\tconst alg = { name: 'AES-GCM', iv: encrypted.IV, additionalData, tagLength: 128 };\r\n\t\tconst buffer = await crypto.subtle.decrypt(alg, encryptionKey, encrypted.Data);\r\n\t\treturn JSON.parse(decode(buffer));\r\n\t}\r\n\tcatch (e) {\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\n// Gets or creates a crypto key for the specified form\r\nexport async function isCryptoSupported(keySeed: string) {\r\n\ttry {\r\n\t\tconst crypto = window.crypto || window.msCrypto as Crypto; // for IE11\r\n\t\tif (crypto.webkitSubtle)\r\n\t\t\tcrypto.subtle = window.crypto.webkitSubtle as SubtleCrypto; // for Safari\r\n\r\n\t\tconst cryptoSeed = await crypto.subtle.digest('SHA-256', encode(keySeed));\r\n\t\tconst key = await window.crypto.subtle.generateKey({ name: 'AES-GCM', length: 256 }, false, ['encrypt', 'decrypt']);\r\n\t\tconst test = { Id: '0-0', Validation: '1234$%^&ABCD' };\r\n\t\tconst encrypted = await encrypt(test, key, cryptoSeed);\r\n\t\tif (encrypted) {\r\n\t\t\tconst decrypted = await decrypt(encrypted, key, cryptoSeed);\r\n\t\t\tif (decrypted && decrypted.Validation === test.Validation)\r\n\t\t\t\treturn cryptoSeed;\r\n\t\t}\r\n\t}\r\n\tcatch (e) { }\r\n}","import type { ServiceRequestResult } from '../base-service';\r\nimport { ServiceWithSession } from '../base-service';\r\nimport type { FormEntryIndex } from '@cognitoforms/types/server-types/forms/model/form-entry-index';\r\nimport type { FormsModel } from 'src/framework/forms-model';\r\nimport type { EntryViewFilter } from '@cognitoforms/types/server-types/forms/model/entry-view-filter';\r\nimport type { ObjectLookup } from 'src/util';\r\nimport type { DB, Transaction } from 'idb';\r\nimport { openDb } from 'idb';\r\nimport type { Order } from '@cognitoforms/types/server-types/payment/model/order';\r\nimport { IndexType } from '@cognitoforms/types/server-types/forms/model/index-type';\r\nimport type { FormSession } from '../form-session';\r\nimport type { EntryKey, EntryData, EntityJson, UserSpecificViewSettings } from './entry-view-types';\r\nimport { Deferred } from 'src/util/deferred';\r\nimport { getLookupManager } from 'src/framework/model/extensions/lookup-field/lookup-manager';\r\nimport { getCascadeFilterManager } from 'src/framework/model/extensions/lookup-field/cascade-filter-manager';\r\nimport type Log from 'src/framework/logging/log';\r\nimport { isEncryptedRecord } from './encryption';\r\nimport type * as Encryption from './encryption';\r\n\r\nconst BATCH_TIME = 1;\r\n\r\n/**\r\n * Controls how many entries can be loaded by a single network request when loading non-lookup entries.\r\n */\r\nconst BATCH_SIZE = 100;\r\n\r\n/**\r\n * Controls how many requests for entry batches can be made for a particular view.\r\n */\r\nconst MAX_CONCURRENT_BATCH_REQUESTS = 3;\r\n\r\ntype LoadEntryDataBatch = {\r\n\tid: string;\r\n\tentries: Map;\r\n\trequest: Promise>;\r\n}\r\n\r\ntype FormEntryIndexRecord = {\r\n\tId: string;\r\n\tentries: FormEntryIndex[];\r\n\ttimestamp: string;\r\n}\r\n\r\nclass EntryLookupBatch {\r\n\tprivate _ids = new Set();\r\n\tprivate _views = new Set();\r\n\tprivate _request: Promise;\r\n\r\n\tconstructor(request: Promise) {\r\n\t\tthis._request = request;\r\n\t}\r\n\r\n\tget viewList() {\r\n\t\treturn Array.from(this._views);\r\n\t}\r\n\r\n\tget idList() {\r\n\t\treturn Array.from(this._ids);\r\n\t}\r\n\r\n\tget idSet() {\r\n\t\treturn new Set(this._ids);\r\n\t}\r\n\r\n\taddView(view: string) {\r\n\t\tthis._views.add(view);\r\n\t}\r\n\r\n\taddEntryIds(ids: string[]) {\r\n\t\tfor (const id of ids)\r\n\t\t\tthis._ids.add(id);\r\n\t}\r\n\r\n\tgetEntries(ids: string[]): Promise {\r\n\t\treturn this._request.then(entryData => {\r\n\t\t\tconst relevantIds = new Set(ids);\r\n\t\t\treturn entryData.filter(e => relevantIds.has(e.Id));\r\n\t\t});\r\n\t}\r\n}\r\n\r\nlet _id = 0;\r\nlet crypto: typeof Encryption;\r\nconst cryptoKeys: ObjectLookup = {};\r\n\r\ntype DbStoreName = 'FormEntry' | 'FormEntryIndex';\r\n\r\nexport default class EntryViewService extends ServiceWithSession {\r\n\treadonly id = _id++;\r\n\treadonly model: FormsModel;\r\n\tprivate readonly log: Log;\r\n\tprivate db: Promise = Promise.resolve(null);\r\n\tprivate readonly sessionViewTokens: Readonly>;\r\n\tprivate additionalViewTokens: Record;\r\n\tprivate encryptionSeed: ArrayBuffer;\r\n\r\n\tprivate loadingPromises = new Set>();\r\n\tprivate entryLookupBatch: EntryLookupBatch;\r\n\tprivate loadEntryBatches: ObjectLookup = {};\r\n\r\n\tconstructor(model: FormsModel, session: FormSession, log: Log, pseudoLoadDeleted = false, suppressLookupLoadingErrors = false) {\r\n\t\tsuper(session);\r\n\t\tthis.model = model;\r\n\t\tthis.log = log;\r\n\t\tthis.sessionViewTokens = session.viewTokens;\r\n\t\tconst entryTypeNames = model.entryTypeName.split('.');\r\n\t\tconst orgName = entryTypeNames[entryTypeNames.length - 2];\r\n\r\n\t\tif (session.flags.entryCaching) {\r\n\t\t\tthis.openIndexedDB(orgName, model.version + 1);\r\n\t\t}\r\n\r\n\t\tmodel.enableLookups(this, getLookupManager, getCascadeFilterManager, log, pseudoLoadDeleted, suppressLookupLoadingErrors);\r\n\t}\r\n\r\n\tprivate get viewTokens() {\r\n\t\tif (!this.additionalViewTokens)\r\n\t\t\treturn this.sessionViewTokens;\r\n\t\treturn Object.assign({}, this.sessionViewTokens, this.additionalViewTokens);\r\n\t}\r\n\r\n\tpublic registerViewToken(viewId: string, token: string) {\r\n\t\tif (!this.additionalViewTokens)\r\n\t\t\tthis.additionalViewTokens = {};\r\n\t\tthis.additionalViewTokens[viewId] = token;\r\n\t}\r\n\r\n\tprivate async openIndexedDB(orgName: string, version: number) {\r\n\t\tconst onFail = () => this.log.warn('Failed to open indexed DB.');\r\n\t\ttry {\r\n\t\t\tthis.db = openDb(`Cognito.Forms.${orgName}`, version, upgrade => {\r\n\t\t\t\tif (upgrade.objectStoreNames.contains('FormKey'))\r\n\t\t\t\t\tupgrade.deleteObjectStore('FormKey');\r\n\t\t\t\tif (upgrade.objectStoreNames.contains('FormEntry'))\r\n\t\t\t\t\tupgrade.deleteObjectStore('FormEntry');\r\n\t\t\t\tif (upgrade.objectStoreNames.contains('FormEntryIndex'))\r\n\t\t\t\t\tupgrade.deleteObjectStore('FormEntryIndex');\r\n\r\n\t\t\t\tupgrade.createObjectStore('FormKey', { keyPath: 'Form' });\r\n\t\t\t\tupgrade.createObjectStore('FormEntry', { keyPath: 'Id' });\r\n\t\t\t\tupgrade.createObjectStore('FormEntryIndex', { keyPath: 'Id' });\r\n\t\t\t}).then(async db => {\r\n\t\t\t\t(db as any)._db.onversionchange = (e) => {\r\n\t\t\t\t\tdb.close();\r\n\t\t\t\t\tthis.openIndexedDB(orgName, e.newVersion);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (this.session.encryptionKey) {\r\n\t\t\t\t\tcrypto = await import('./encryption');\r\n\r\n\t\t\t\t\tthis.encryptionSeed = await crypto.isCryptoSupported(this.session.encryptionKey);\r\n\t\t\t\t\treturn this.encryptionSeed ? db : null;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t\treturn db;\r\n\t\t\t}).catch(e => {\r\n\t\t\t\tonFail();\r\n\t\t\t\treturn null;\r\n\t\t\t});\r\n\t\t}\r\n\t\tcatch {\r\n\t\t\tonFail();\r\n\t\t\tthis.db = Promise.resolve(null);\r\n\t\t}\r\n\t}\r\n\r\n\tasync cacheRecord(formId: string, storeName: DbStoreName, record: T) {\r\n\t\tconst db = await this.db;\r\n\t\tif (db) {\r\n\t\t\ttry {\r\n\t\t\t\tconst keyPath = db.transaction(storeName, 'readonly').objectStore(storeName).keyPath as string;\r\n\t\t\t\tconst encrypted = { [keyPath]: record[keyPath], ...await this.encrypt(formId, record) };\r\n\t\t\t\treturn db.transaction(storeName, 'readwrite').objectStore(storeName).put(encrypted);\r\n\t\t\t}\r\n\t\t\tcatch (e) {\r\n\t\t\t\tthis.log.warn(e);\r\n\t\t\t\tthis.db = Promise.resolve(null);\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync loadRecord(formId: string, storeName: DbStoreName, recordKey: any, transaction: Transaction = null): Promise {\r\n\t\treturn this.executeWithTracking(async () => {\r\n\t\t\tconst db = await this.db;\r\n\t\t\tif (db) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (!transaction)\r\n\t\t\t\t\t\ttransaction = db.transaction(storeName, 'readonly');\r\n\t\t\t\t\treturn this.decrypt(formId, await transaction.objectStore(storeName).get(recordKey));\r\n\t\t\t\t}\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\tthis.log.warn(e);\r\n\t\t\t\t\tthis.db = Promise.resolve(null);\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getCacheKey(view: string, userShort: string, roleId: number): string {\r\n\t\tif (!userShort)\r\n\t\t\treturn view;\r\n\r\n\t\treturn `${view}|${userShort}|${roleId}`;\r\n\t}\r\n\r\n\tasync loadCachedIndexes(formId: string, view: string, userSpecificSettings?: UserSpecificViewSettings): Promise {\r\n\t\tconst cachedIndexes = await this.loadRecord(formId, 'FormEntryIndex', this.getCacheKey(view, userSpecificSettings?.userShort, userSpecificSettings?.roleId));\r\n\r\n\t\t// Discard timestamps erroneously set to client-time\r\n\t\t// TODO: Remove when we are confident that all timestamps originating from client are discarded\r\n\t\tif (cachedIndexes?.timestamp?.indexOf('Z') > -1)\r\n\t\t\tcachedIndexes.timestamp = '';\r\n\r\n\t\treturn cachedIndexes;\r\n\t}\r\n\r\n\tasync cacheIndexes(\r\n\t\tformId: string,\r\n\t\tview: string,\r\n\t\tindexes: FormEntryIndex[],\r\n\t\ttimestamp: string,\r\n\t\tuserSpecificSettings?: UserSpecificViewSettings\r\n\t): Promise {\r\n\t\tawait this.cacheRecord(formId, 'FormEntryIndex', {\r\n\t\t\tentries: indexes,\r\n\t\t\ttimestamp,\r\n\t\t\tId: this.getCacheKey(view, userSpecificSettings?.userShort, userSpecificSettings?.roleId)\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async encrypt(formId: string, data: T) {\r\n\t\tif (this.encryptionSeed)\r\n\t\t\treturn crypto.encrypt(data, await this.getCryptoKey(formId), this.encryptionSeed) as any;\r\n\t\treturn data;\r\n\t}\r\n\r\n\tprivate async decrypt(seed: string, data: T) {\r\n\t\tif (data && isEncryptedRecord(data)) {\r\n\t\t\tif (this.encryptionSeed)\r\n\t\t\t\treturn (await crypto.decrypt(data, await this.getCryptoKey(seed), this.encryptionSeed)) as T;\r\n\t\t\telse\r\n\t\t\t\treturn null;\r\n\t\t}\r\n\t\treturn data;\r\n\t}\r\n\r\n\tprivate async getCryptoKey(formId: string) {\r\n\t\t// See if the key has already been loaded\r\n\t\tlet key = cryptoKeys[formId];\r\n\t\ttry {\r\n\t\t\t// Otherwise, attempt to load from db\r\n\t\t\tif (!key) {\r\n\t\t\t\tconst db = await this.db;\r\n\t\t\t\tif (db) {\r\n\t\t\t\t\tconst formKey = await db.transaction('FormKey', 'readonly').objectStore('FormKey').get(formId) as any;\r\n\r\n\t\t\t\t\t// Key found in database cache\r\n\t\t\t\t\tif (formKey)\r\n\t\t\t\t\t\tkey = formKey.Key;\r\n\t\t\t\t\t// Create and cache a new encryption key\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tkey = await window.crypto.subtle.generateKey({ name: 'AES-GCM', length: 256 }, false, ['encrypt', 'decrypt']);\r\n\t\t\t\t\t\tawait db.transaction('FormKey', 'readwrite').objectStore('FormKey').put({ Form: formId, Key: key });\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcryptoKeys[formId] = key;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tthis.log.warn(e);\r\n\t\t\tthis.db = Promise.resolve(null);\r\n\t\t}\r\n\r\n\t\treturn key;\r\n\t}\r\n\r\n\tprivate isLookupView(viewId: string) {\r\n\t\treturn this.viewTokens[viewId]?.startsWith('l-');\r\n\t}\r\n\r\n\tasync getIndex(\r\n\t\tformId: string,\r\n\t\tview: string,\r\n\t\tuserSpecificSettings?: UserSpecificViewSettings,\r\n\t\ttimestamp?: string,\r\n\t\tprogressCallback?: (progress: number, interval: number) => void\r\n\t): Promise {\r\n\t\tif (!this.isValidView(view))\r\n\t\t\treturn Promise.resolve([]);\r\n\r\n\t\treturn this.executeWithTracking(async () => {\r\n\t\t\t// Prevent parallel index building\r\n\t\t\tlet delay = 100;\r\n\t\t\tlet indexes: FormEntryIndex[];\r\n\t\t\tlet result: ServiceRequestResult;\r\n\t\t\tlet errors = 0;\r\n\r\n\t\t\twhile (true) {\r\n\t\t\t\t// Allow up to 5 failures before cancelling\r\n\t\t\t\tresult = await this.serviceRequest({\r\n\t\t\t\t\tmethod: 'get',\r\n\t\t\t\t\t// lookups should use the public index endpoint, regular views use admin\r\n\t\t\t\t\tendpoint: `forms/${this.isLookupView(view) ? 'public' : 'admin'}/${formId}/entries/index/${this.viewTokens[view]}`,\r\n\t\t\t\t\tparams: { timestamp: timestamp, poll: true, roleId: userSpecificSettings?.roleId }\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (result.error) {\r\n\t\t\t\t\tif (++errors >= 5)\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (result.response && result.response.data) {\r\n\t\t\t\t\tindexes = result.response.data as FormEntryIndex[];\r\n\t\t\t\t\tconst lck = indexes.find(idx => idx.Type === IndexType.Lock);\r\n\t\t\t\t\tif (lck) {\r\n\t\t\t\t\t\tif (progressCallback) progressCallback(lck.PercentDone * 100, delay);\r\n\r\n\t\t\t\t\t\tawait new Promise(resolve => {\r\n\t\t\t\t\t\t\tsetTimeout(resolve, delay);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t// If this is a checkpoint lock, poll faster\r\n\t\t\t\t\t\tif (lck.Id)\r\n\t\t\t\t\t\t\tdelay = 100;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tdelay = delay * 2 > 10000 ? 10000 : delay * 2;\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (progressCallback) progressCallback(100, -500);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (indexes) {\r\n\t\t\t\treturn this.ensureBatchesLoaded(indexes);\r\n\t\t\t}\r\n\r\n\t\t\tthrow this.parseError(result.error);\r\n\t\t});\r\n\t}\r\n\r\n\tasync getSpecificIndex(\r\n\t\tentryId: string,\r\n\t\tformId: string,\r\n\t\tview: string,\r\n\t\tuserSpecificSettings?: UserSpecificViewSettings,\r\n\t\ttimestamp?: string\r\n\t): Promise {\r\n\t\tif (!this.isValidView(view))\r\n\t\t\treturn Promise.resolve([]);\r\n\r\n\t\treturn this.executeWithTracking(async () => {\r\n\t\t\t// Prevent parallel index building\r\n\t\t\tlet pollCount = 0;\r\n\t\t\tconst delay = 100;\r\n\t\t\tlet indexes: FormEntryIndex[];\r\n\t\t\tlet result: ServiceRequestResult;\r\n\t\t\twhile (pollCount++ < 4) {\r\n\t\t\t\tresult = await this.serviceRequest({\r\n\t\t\t\t\tmethod: 'get',\r\n\t\t\t\t\tendpoint: `forms/admin/${formId}/entries/index/${entryId}/${this.viewTokens[view]}`,\r\n\t\t\t\t\tparams: { timestamp: timestamp, poll: true, roleId: userSpecificSettings?.roleId }\r\n\t\t\t\t});\r\n\t\t\t\tif (result.response?.data) {\r\n\t\t\t\t\tconst index = result.response.data as FormEntryIndex;\r\n\t\t\t\t\tindexes = index ? [index] : [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tawait new Promise(resolve => {\r\n\t\t\t\t\t\tsetTimeout(resolve, delay);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (indexes) {\r\n\t\t\t\treturn this.ensureBatchesLoaded(indexes);\r\n\t\t\t}\r\n\r\n\t\t\tthrow this.parseError(result.error);\r\n\t\t});\r\n\t}\r\n\r\n\tasync ensureBatchesLoaded(indexes: FormEntryIndex[]): Promise {\r\n\t\t// Load indexes from file storage\r\n\t\tlet batches: FormEntryIndex[] = [];\r\n\t\tlet lastCheckpoint = 0;\r\n\t\tfor (let i = 0; i < indexes.length; i++) {\r\n\t\t\tconst index = indexes[i];\r\n\t\t\tif (index.Type === IndexType.Checkpoint) {\r\n\t\t\t\tbatches = [];\r\n\t\t\t\tlastCheckpoint = i;\r\n\t\t\t}\r\n\r\n\t\t\tif (index.Batch && index.Batch.StorageUrl)\r\n\t\t\t\tbatches.push(index);\r\n\t\t}\r\n\r\n\t\t// Only worry about indexes after the most recent checkpoint\r\n\t\tif (lastCheckpoint)\r\n\t\t\tindexes = indexes.slice(lastCheckpoint);\r\n\r\n\t\t// If indexes need to be fetched from file storage, merge them into the existing array\r\n\t\tconst requests = batches.map(batch => this.client.get(batch.Batch.StorageUrl));\r\n\t\tif (requests.length) {\r\n\t\t\tconst responses = await Promise.all(requests);\r\n\t\t\tlet j = responses.length - 1;\r\n\t\t\tfor (let i = indexes.length - 1; i >= 0; i--) {\r\n\t\t\t\tif (indexes[i].Batch && indexes[i].Batch.StorageUrl) {\r\n\t\t\t\t\tindexes.splice(i + 1, 0, ...responses[j].data);\r\n\t\t\t\t\tj--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn indexes;\r\n\t}\r\n\r\n\tasync getFilter(formId: string, filter: EntryViewFilter) {\r\n\t\tconst result = await this.serviceRequest({\r\n\t\t\tmethod: 'post',\r\n\t\t\tendpoint: `svc/forms/${formId}/entry-views/filter`,\r\n\t\t\tisCognitoJson: true,\r\n\t\t\tdata: filter\r\n\t\t});\r\n\r\n\t\tif (result.response && result.response.data)\r\n\t\t\treturn result.response.data;\r\n\r\n\t\tthrow this.parseError(result.error);\r\n\t}\r\n\r\n\tasync lookupEntries(view: string, ids: string[]): Promise {\r\n\t\tif (!this.isValidView(view))\r\n\t\t\treturn Promise.resolve([]);\r\n\r\n\t\tif (!this.entryLookupBatch) {\r\n\t\t\tconst request = new Deferred();\r\n\t\t\tconst batch = this.entryLookupBatch = new EntryLookupBatch(request.promise);\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.entryLookupBatch = undefined;\r\n\t\t\t\trequest.resolve(this.lookupEntriesInBatch(batch));\r\n\t\t\t}, BATCH_TIME);\r\n\t\t\tthis.executeWithTracking(() => request.promise);\r\n\t\t}\r\n\r\n\t\tthis.entryLookupBatch.addView(view);\r\n\t\tthis.entryLookupBatch.addEntryIds(ids);\r\n\r\n\t\treturn this.entryLookupBatch.getEntries(ids);\r\n\t}\r\n\r\n\tprivate lookupEntriesInBatch(batch: EntryLookupBatch) {\r\n\t\treturn this.executeWithTracking(async () => {\r\n\t\t\tconst fetchIds = batch.idSet;\r\n\r\n\t\t\t// Try to load entries from cache\r\n\t\t\tconst cachedEntryData = (await this.getCachedEntries(batch.idList)).filter(e => !!e) as EntryData[];\r\n\r\n\t\t\t// Separate cached entries from uncached\r\n\t\t\tcachedEntryData.forEach(e => fetchIds.delete(e.Id));\r\n\r\n\t\t\tthis.log.startTrackEvent('Lookup Entries in Batch');\r\n\r\n\t\t\tconst result = await this.serviceRequest({\r\n\t\t\t\tmethod: 'post',\r\n\t\t\t\tendpoint: 'forms/public/entrylookup',\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tTokens: batch.viewList.map(v => this.viewTokens[v]),\r\n\t\t\t\t\tEntries: Array.from(fetchIds.values())\r\n\t\t\t\t\t\t.map(id => ({ EntryId: id }))\r\n\t\t\t\t\t\t// send etag to see if cached entries are outdated\r\n\t\t\t\t\t\t.concat(cachedEntryData.map(e => ({ EntryId: e.Id, EntryETag: e.$etag })))\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (result.response && result.response.data) {\r\n\t\t\t\tconst data = result.response.data as { orders?: EntityJson[]; entries: EntityJson[]; };\r\n\t\t\t\tconst entries: EntryData[] = [];\r\n\t\t\t\tconst deletedEntryIds = new Set();\r\n\r\n\t\t\t\tconst orders = new Map>((data.orders || []).map(o => [o.json.Id, o]));\r\n\r\n\t\t\t\tfor (const entryData of data.entries) {\r\n\t\t\t\t\tif (entryData.json) {\r\n\t\t\t\t\t\tconst entry = entryData.json;\r\n\t\t\t\t\t\tif (entry.Entry.Order && orders.has(entry.Entry.Order.Id))\r\n\t\t\t\t\t\t\tentry.Order = orders.get(entry.Entry.Order.Id).json;\r\n\r\n\t\t\t\t\t\tentry.$etag = entryData.etag;\r\n\t\t\t\t\t\tentries.push(entry);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tconsole.warn('Unable to resolve lookup value:', entryData.id);\r\n\t\t\t\t\t\tdeletedEntryIds.add(entryData.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Cache entries\r\n\t\t\t\tawait Promise.all(entries.map(e => this.cacheRecord(e.Form.Id, 'FormEntry', e)));\r\n\r\n\t\t\t\t// Find the number of fields for each form\r\n\t\t\t\tconst map = new Map();\r\n\t\t\t\tcachedEntryData.concat(entries).forEach((entry) => {\r\n\t\t\t\t\tmap.set(entry.Form.Id, Object.keys(entry).length);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.log.stopTrackEvent('Lookup Entries in Batch', { numSourceFormFields: JSON.stringify(Object.fromEntries(map)).toString(), numberLoaded: fetchIds.size.toString() });\r\n\r\n\t\t\t\t// Return a combination of entries from server, and cached entries that were not expired\r\n\t\t\t\treturn entries.concat(cachedEntryData.filter(e => !deletedEntryIds.has(e.Id)));\r\n\t\t\t}\r\n\r\n\t\t\tthrow this.parseError(result.error);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async getCachedEntries(ids: string[]): Promise {\r\n\t\tconst formId = ids[0].split('-')[0];\r\n\t\tconst db = await this.db;\r\n\t\tif (db) {\r\n\t\t\tconst transaction = (await this.db).transaction('FormEntry', 'readonly');\r\n\t\t\treturn Promise.all(ids.map(id => this.loadRecord(formId, 'FormEntry', id, transaction)));\r\n\t\t}\r\n\t\telse\r\n\t\t\treturn [];\r\n\t}\r\n\r\n\tasync loadEntryData(view: string, isAdmin: boolean, ...entries: EntryKey[]): Promise {\r\n\t\tif (!this.isValidView(view))\r\n\t\t\treturn [];\r\n\r\n\t\tlet batch = this.loadEntryBatches[view];\r\n\r\n\t\tif (!batch) {\r\n\t\t\tconst request = new Deferred();\r\n\t\t\tbatch = { entries: new Map(), request: request.promise, id: view };\r\n\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tdelete this.loadEntryBatches[view];\r\n\t\t\t\trequest.resolve(this.loadEntryDataInBatch(batch, isAdmin)\r\n\t\t\t\t\t.then(entryData => new Map(entryData.map(d => [d.Id, d]))));\r\n\t\t\t});\r\n\r\n\t\t\tthis.executeWithTracking(() => request.promise);\r\n\t\t}\r\n\r\n\t\tthis.loadEntryBatches[view] = batch;\r\n\r\n\t\tfor (const key of entries)\r\n\t\t\tbatch.entries.set(key.EntryId, key);\r\n\r\n\t\tconst dataMap = await batch.request;\r\n\t\treturn entries.map(e => dataMap.get(e.EntryId));\r\n\t}\r\n\r\n\tprivate loadEntryDataInBatch(batch: LoadEntryDataBatch, isAdmin: boolean = false): Promise {\r\n\t\treturn this.executeWithTracking(async () => {\r\n\t\t\tconst indexMap = batch.entries;\r\n\r\n\t\t\tlet cachedEntryData = await this.getCachedEntries(Array.from(indexMap.keys()));\r\n\r\n\t\t\t// Entries with out of date etags need to be reloaded\r\n\t\t\tcachedEntryData = cachedEntryData.filter((entry: EntryData) => {\r\n\t\t\t\tif (entry && entry.$etag === indexMap.get(entry.Id).EntryETag) {\r\n\t\t\t\t\tindexMap.delete(entry.Id);\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}) as EntryData[];\r\n\r\n\t\t\t// All requested entries were found in cache, no web request needed\r\n\t\t\tif (indexMap.size === 0)\r\n\t\t\t\treturn cachedEntryData;\r\n\r\n\t\t\tconst loadedData: EntryData[] = [];\r\n\r\n\t\t\tlet numRequested = 0;\r\n\t\t\tconst requestQueue = [];\r\n\t\t\tconst keysToLoad = Array.from(indexMap.values());\r\n\r\n\t\t\twhile (numRequested < keysToLoad.length) {\r\n\t\t\t\tif (requestQueue.length === MAX_CONCURRENT_BATCH_REQUESTS) {\r\n\t\t\t\t\t// wait for a spot in the queue to open up\r\n\t\t\t\t\tawait Promise.race(requestQueue);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst currentKeyBatch = keysToLoad.slice(numRequested, (numRequested += BATCH_SIZE));\r\n\r\n\t\t\t\tconst request = (async () => {\r\n\t\t\t\t\tconst result = await this.serviceRequest({\r\n\t\t\t\t\t\tmethod: 'post',\r\n\t\t\t\t\t\tendpoint: `forms/${isAdmin ? 'admin' : 'public'}/entrybatch`,\r\n\t\t\t\t\t\tdata: { Token: this.viewTokens[batch.id], Entries: currentKeyBatch }\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (result.response && result.response.data) {\r\n\t\t\t\t\t\tconst data = result.response.data as { orders?: Order[], entries: EntryData[] };\r\n\t\t\t\t\t\tconst orders = new Map((data.orders || []).map(o => [o.Id, o]));\r\n\t\t\t\t\t\t// Cache entries\r\n\t\t\t\t\t\tawait Promise.all(data.entries.map(entry => {\r\n\t\t\t\t\t\t\tif (entry.Entry.Order && orders.has(entry.Entry.Order.Id))\r\n\t\t\t\t\t\t\t\tentry.Order = orders.get(entry.Entry.Order.Id);\r\n\t\t\t\t\t\t\tentry.$etag = indexMap.get(entry.Id).EntryETag;\r\n\r\n\t\t\t\t\t\t\treturn this.cacheRecord(entry.Form.Id, 'FormEntry', entry);\r\n\t\t\t\t\t\t}));\r\n\r\n\t\t\t\t\t\tloadedData.push(...data.entries);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tthrow this.parseError(result.error);\r\n\r\n\t\t\t\t\trequestQueue.splice(requestQueue.indexOf(request), 1);\r\n\t\t\t\t})();\r\n\t\t\t\trequestQueue.push(request);\r\n\t\t\t}\r\n\r\n\t\t\t// once we're past the loop, we've requested everything we need, but may still need to wait on the last tasks in the queue\r\n\t\t\tawait Promise.all(requestQueue);\r\n\r\n\t\t\treturn loadedData.concat(cachedEntryData);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate executeWithTracking(action: () => Promise) {\r\n\t\tconst task = new Deferred();\r\n\t\tthis.loadingPromises.add(task.promise);\r\n\t\tconst result = action();\r\n\t\tconst cleanupTask = () => {\r\n\t\t\tthis.loadingPromises.delete(task.promise);\r\n\t\t\ttask.resolve();\r\n\t\t};\r\n\t\tresult.then(cleanupTask, cleanupTask);\r\n\t\treturn result;\r\n\t}\r\n\r\n\tget loadingComplete(): Promise {\r\n\t\treturn new Promise(async resolve => {\r\n\t\t\twhile (this.loadingPromises.size) {\r\n\t\t\t\tawait Promise.all(this.loadingPromises);\r\n\t\t\t\tawait new Promise(resolve => setTimeout(resolve));\t// allow anything awaiting loading to queue more tasks\r\n\t\t\t}\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tisValidView(viewId: string) {\r\n\t\treturn !!this.viewTokens[viewId];\r\n\t}\r\n}"],"sourceRoot":""}