{"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","_context6","loadRecord","getCacheKey","_x10","_x11","_x12","_callee7","indexes","timestamp","_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","indexOf","action","_this12","task","cleanupTask","_this13","_ref8","_callee23","_context24","_x41","ServiceWithSession"],"mappings":"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","file":"146.f71e1929c2fb9d0de1cc.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\treturn this.loadRecord(formId, 'FormEntryIndex', this.getCacheKey(view, userSpecificSettings?.userShort, userSpecificSettings?.roleId));\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('LoadingLookupsFromServer');\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('LoadingLookupsFromServer', { 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":""}