@conduit-client/service-cache 2.0.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../utils/dist/index.js","../../src/v1/derived-caches.ts","../../src/v1/default.ts","../../src/v1/index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2022, Salesforce, Inc.,\n * All rights reserved.\n * For full license text, see the LICENSE.txt file\n */\nfunction bfs(start, predicate, getChildren) {\n const queue = [...start];\n const visited = /* @__PURE__ */ new Set([...start]);\n const matches2 = /* @__PURE__ */ new Set();\n while (queue.length) {\n const curr = queue.shift();\n if (predicate(curr)) {\n matches2.add(curr);\n }\n const children = getChildren(curr);\n for (const child of children) {\n if (!visited.has(child)) {\n visited.add(child);\n queue.push(child);\n }\n }\n }\n return matches2;\n}\nfunction lineFormatter(position, message, filePath) {\n return `${message} (${filePath}:${position.line}:${position.column})`;\n}\nclass DefaultFileParserLogger {\n constructor(services, filePath) {\n this.services = services;\n this.filePath = filePath;\n }\n trace(position, message) {\n this.services.logger.trace(this.format(position, message));\n }\n debug(position, message) {\n this.services.logger.debug(this.format(position, message));\n }\n info(position, message) {\n this.services.logger.info(this.format(position, message));\n }\n warn(position, message) {\n this.services.logger.warn(this.format(position, message));\n }\n error(position, message) {\n this.services.logger.error(this.format(position, message));\n }\n format(position, message) {\n return lineFormatter(position, message, this.filePath);\n }\n}\nfunction matches(test, s) {\n if (test === void 0) {\n return false;\n } else if (typeof test === \"string\") {\n return s === test;\n } else if (test instanceof RegExp) {\n return test.test(s);\n } else if (typeof test === \"function\") {\n return test(s);\n }\n return test.some((m) => matches(m, s));\n}\nfunction includes(incexc, s) {\n if (matches(incexc.exclude, s)) {\n return false;\n }\n if (matches(incexc.include, s)) {\n return true;\n }\n if (incexc.include) {\n return false;\n }\n return true;\n}\nconst { create, freeze, keys, entries } = Object;\nconst { hasOwnProperty } = Object.prototype;\nconst { isArray } = Array;\nconst { push, indexOf, slice } = Array.prototype;\nconst { stringify, parse } = JSON;\nconst WeakSetConstructor = WeakSet;\nconst LogLevelMap = {\n TRACE: 4,\n DEBUG: 3,\n INFO: 2,\n WARN: 1,\n ERROR: 0\n};\nclass ConsoleLogger {\n constructor(level = \"WARN\", printer = console.log, formatter = (level2, message) => `${level2}: ${message}`) {\n this.level = level;\n this.printer = printer;\n this.formatter = formatter;\n this.messages = [];\n }\n trace(message) {\n this.log(\"TRACE\", message);\n }\n debug(message) {\n this.log(\"DEBUG\", message);\n }\n info(message) {\n this.log(\"INFO\", message);\n }\n warn(message) {\n this.log(\"WARN\", message);\n }\n error(message) {\n this.log(\"ERROR\", message);\n }\n log(level, message) {\n if (LogLevelMap[level] > LogLevelMap[this.level]) {\n return;\n }\n this.printer(this.formatter(level, message));\n }\n}\nfunction loggerService(level, printer, formatter) {\n return new ConsoleLogger(level, printer, formatter);\n}\nclass Ok {\n constructor(value) {\n this.value = value;\n }\n isOk() {\n return true;\n }\n isErr() {\n return !this.isOk();\n }\n}\nclass Err {\n constructor(error) {\n this.error = error;\n }\n isOk() {\n return false;\n }\n isErr() {\n return !this.isOk();\n }\n}\nconst ok = (value) => new Ok(value);\nconst err = (err2) => new Err(err2);\nclass DataNotFoundError extends Error {\n constructor(message) {\n super(message);\n this.name = \"DataNotFoundError\";\n }\n}\nclass DataIncompleteError extends Error {\n constructor(message, partialData) {\n super(message);\n this.partialData = partialData;\n this.name = \"DataIncompleteError\";\n }\n}\nfunction isDataNotFoundError(error) {\n return error instanceof DataNotFoundError || error.name === \"DataNotFoundError\";\n}\nfunction isDataIncompleteError(error) {\n return error instanceof DataIncompleteError || error.name === \"DataIncompleteError\";\n}\nfunction isCacheHitOrError(value) {\n if (value.isErr() && (isDataIncompleteError(value.error) || isDataNotFoundError(value.error))) {\n return false;\n }\n return true;\n}\nfunction isCacheMiss(value) {\n return !isCacheHitOrError(value);\n}\nfunction isResult(value) {\n return value != null && typeof value === \"object\" && \"isOk\" in value && \"isErr\" in value && typeof value.isOk === \"function\" && typeof value.isErr === \"function\" && (value.isOk() === true && value.isErr() === false && \"value\" in value || value.isOk() === false && value.isErr() === true && \"error\" in value);\n}\nfunction setOverlaps(setA, setB) {\n for (const element of setA) {\n if (setB.has(element)) {\n return true;\n }\n }\n return false;\n}\nfunction setDifference(setA, setB) {\n const differenceSet = /* @__PURE__ */ new Set();\n for (const element of setA) {\n if (!setB.has(element)) {\n differenceSet.add(element);\n }\n }\n return differenceSet;\n}\nfunction addAllToSet(targetSet, sourceSet) {\n for (const element of sourceSet) {\n targetSet.add(element);\n }\n}\nconst toTypeScriptSafeIdentifier = (s) => s.length >= 1 ? s[0].replace(/[^$_\\p{ID_Start}]/u, \"_\") + s.slice(1).replace(/[^$\\u200c\\u200d\\p{ID_Continue}]/gu, \"_\") : \"\";\nfunction isSubscribable(obj) {\n return typeof obj === \"object\" && obj !== null && \"subscribe\" in obj && typeof obj.subscribe === \"function\" && \"refresh\" in obj && typeof obj.refresh === \"function\";\n}\nfunction isSubscribableResult(x) {\n if (!isResult(x)) {\n return false;\n }\n return isSubscribable(x.isOk() ? x.value : x.error);\n}\nfunction buildSubscribableResult(result, subscribe, refresh) {\n if (result.isOk()) {\n return ok({ data: result.value, subscribe, refresh });\n } else {\n return err({ failure: result.error, subscribe, refresh });\n }\n}\nfunction resolvedPromiseLike(result) {\n if (isPromiseLike(result)) {\n return result.then((nextResult) => nextResult);\n }\n return {\n then: (onFulfilled, _onRejected) => {\n try {\n return resolvedPromiseLike(onFulfilled(result));\n } catch (e) {\n if (onFulfilled === void 0) {\n return resolvedPromiseLike(result);\n }\n return rejectedPromiseLike(e);\n }\n }\n };\n}\nfunction rejectedPromiseLike(reason) {\n if (isPromiseLike(reason)) {\n return reason.then((nextResult) => nextResult);\n }\n return {\n then: (_onFulfilled, onRejected) => {\n if (typeof onRejected === \"function\") {\n try {\n return resolvedPromiseLike(onRejected(reason));\n } catch (e) {\n return rejectedPromiseLike(e);\n }\n }\n return rejectedPromiseLike(reason);\n }\n };\n}\nfunction isPromiseLike(x) {\n return typeof (x == null ? void 0 : x.then) === \"function\";\n}\nfunction racesync(values) {\n for (const value of values) {\n let settled = void 0;\n if (isPromiseLike(value)) {\n value.then(\n (_) => {\n settled = value;\n },\n (_) => {\n settled = value;\n }\n );\n } else {\n settled = resolvedPromiseLike(value);\n }\n if (settled !== void 0) {\n return settled;\n }\n }\n return Promise.race(values);\n}\nfunction withResolvers() {\n let resolve, reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\nfunction deepEquals(x, y) {\n if (x === void 0) {\n return y === void 0;\n } else if (x === null) {\n return y === null;\n } else if (y === null) {\n return x === null;\n } else if (isArray(x)) {\n if (!isArray(y) || x.length !== y.length) {\n return false;\n }\n for (let i = 0; i < x.length; ++i) {\n if (!deepEquals(x[i], y[i])) {\n return false;\n }\n }\n return true;\n } else if (typeof x === \"object\") {\n if (typeof y !== \"object\") {\n return false;\n }\n const xkeys = Object.keys(x);\n const ykeys = Object.keys(y);\n if (xkeys.length !== ykeys.length) {\n return false;\n }\n for (let i = 0; i < xkeys.length; ++i) {\n const key = xkeys[i];\n if (!deepEquals(x[key], y[key])) {\n return false;\n }\n }\n return true;\n }\n return x === y;\n}\nfunction stableJSONStringify(node) {\n if (node && node.toJSON && typeof node.toJSON === \"function\") {\n node = node.toJSON();\n }\n if (node === void 0) {\n return;\n }\n if (typeof node === \"number\") {\n return isFinite(node) ? \"\" + node : \"null\";\n }\n if (typeof node !== \"object\") {\n return stringify(node);\n }\n let i;\n let out;\n if (isArray(node)) {\n out = \"[\";\n for (i = 0; i < node.length; i++) {\n if (i) {\n out += \",\";\n }\n out += stableJSONStringify(node[i]) || \"null\";\n }\n return out + \"]\";\n }\n if (node === null) {\n return \"null\";\n }\n const objKeys = keys(node).sort();\n out = \"\";\n for (i = 0; i < objKeys.length; i++) {\n const key = objKeys[i];\n const value = stableJSONStringify(node[key]);\n if (!value) {\n continue;\n }\n if (out) {\n out += \",\";\n }\n out += stringify(key) + \":\" + value;\n }\n return \"{\" + out + \"}\";\n}\nfunction toError(x) {\n if (x instanceof Error) {\n return x;\n }\n return new Error(typeof x === \"string\" ? x : JSON.stringify(x));\n}\nfunction deepCopy(x) {\n const stringified = stringify(x);\n return stringified ? parse(stringified) : void 0;\n}\nfunction readableStreamToAsyncIterable(stream) {\n if (stream.locked) {\n return err(new Error(\"ReadableStream is already locked\"));\n }\n if (Symbol.asyncIterator in stream) {\n return ok(stream);\n }\n const reader = stream.getReader();\n return ok({\n [Symbol.asyncIterator]: () => ({\n next: async () => {\n try {\n const result = await reader.read();\n if (result.done) {\n try {\n reader.releaseLock();\n } catch {\n }\n return { done: true, value: void 0 };\n }\n return {\n done: false,\n value: result.value\n };\n } catch (e) {\n try {\n reader.releaseLock();\n } catch {\n }\n throw e;\n }\n },\n return: async (value) => {\n try {\n await reader.cancel();\n } catch {\n }\n try {\n reader.releaseLock();\n } catch {\n }\n return { done: true, value };\n },\n throw: async (exception) => {\n try {\n await reader.cancel();\n } catch {\n }\n try {\n reader.releaseLock();\n } catch {\n }\n throw exception;\n }\n })\n });\n}\nfunction satisfies(provided, requested) {\n const providedN = provided.split(\".\").map((s) => parseInt(s));\n const requestedN = requested.split(\".\").map((s) => parseInt(s));\n return providedN[0] === requestedN[0] && providedN[1] >= requestedN[1];\n}\nfunction stringIsVersion(s) {\n const versionParts = s.split(\".\");\n return (versionParts.length === 2 || versionParts.length === 3) && versionParts.every((part) => part.match(/^\\d+$/));\n}\nvar HttpStatusCode = /* @__PURE__ */ ((HttpStatusCode2) => {\n HttpStatusCode2[HttpStatusCode2[\"Ok\"] = 200] = \"Ok\";\n HttpStatusCode2[HttpStatusCode2[\"Created\"] = 201] = \"Created\";\n HttpStatusCode2[HttpStatusCode2[\"NoContent\"] = 204] = \"NoContent\";\n HttpStatusCode2[HttpStatusCode2[\"NotModified\"] = 304] = \"NotModified\";\n HttpStatusCode2[HttpStatusCode2[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpStatusCode2[HttpStatusCode2[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpStatusCode2[HttpStatusCode2[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpStatusCode2[HttpStatusCode2[\"NotFound\"] = 404] = \"NotFound\";\n HttpStatusCode2[HttpStatusCode2[\"ServerError\"] = 500] = \"ServerError\";\n HttpStatusCode2[HttpStatusCode2[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n return HttpStatusCode2;\n})(HttpStatusCode || {});\nfunction getFetchResponseFromAuraError(err2) {\n if (err2.data !== void 0 && err2.data.statusCode !== void 0) {\n let data = {};\n data = err2.data;\n if (err2.id !== void 0) {\n data.id = err2.id;\n }\n return new FetchResponse(data.statusCode, data);\n }\n return new FetchResponse(500, {\n error: err2.message\n });\n}\nasync function coerceResponseToFetchResponse(response) {\n const { status } = response;\n const responseHeaders = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n let responseBody = null;\n if (status !== 204) {\n const contentType = responseHeaders[\"content-type\"];\n responseBody = contentType && contentType.startsWith(\"application/json\") ? await response.json() : await response.text();\n }\n return new FetchResponse(status, responseBody, responseHeaders);\n}\nfunction getStatusText(status) {\n switch (status) {\n case 200:\n return \"OK\";\n case 201:\n return \"Created\";\n case 304:\n return \"Not Modified\";\n case 400:\n return \"Bad Request\";\n case 404:\n return \"Not Found\";\n case 500:\n return \"Server Error\";\n default:\n return `Unexpected HTTP Status Code: ${status}`;\n }\n}\nclass FetchResponse extends Error {\n constructor(status, body, headers) {\n super();\n this.status = status;\n this.body = body;\n this.headers = headers || {};\n this.ok = status >= 200 && this.status <= 299;\n this.statusText = getStatusText(status);\n }\n}\nconst deeplyFrozen = new WeakSetConstructor();\nfunction deepFreeze(value) {\n if (typeof value !== \"object\" || value === null || deeplyFrozen.has(value)) {\n return;\n }\n deeplyFrozen.add(value);\n if (isArray(value)) {\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepFreeze(value[i]);\n }\n } else {\n const keys$1 = keys(value);\n for (let i = 0, len = keys$1.length; i < len; i += 1) {\n deepFreeze(value[keys$1[i]]);\n }\n }\n freeze(value);\n}\nfunction isScalar(value) {\n return typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || value === null || value === void 0;\n}\nfunction isScalarObject(value) {\n return Object.values(value).every((value2) => isScalar(value2));\n}\nfunction isScalarArray(value) {\n return value.every((item) => isScalar(item));\n}\nfunction encodeQueryParam(paramName, value, explode) {\n switch (typeof value) {\n case \"string\":\n return [`${paramName}=${encodeURIComponent(value)}`];\n case \"number\":\n case \"boolean\":\n return [`${paramName}=${value}`];\n case \"object\":\n if (value === null) {\n return [];\n }\n if (isArray(value)) {\n if (!isScalarArray(value)) {\n throw new Error(`Unsupported non-scalar array type for ${paramName}`);\n }\n if (explode) {\n return value.map(\n (item) => `${paramName}=${item ? encodeURIComponent(item) : item}`\n );\n }\n return [\n `${paramName}=${value.map((item) => item ? encodeURIComponent(item) : item).join(\",\")}`\n ];\n }\n if (!isScalarObject(value)) {\n throw new Error(`Unsupported non-scalar object type for ${paramName}`);\n }\n if (explode) {\n return entries(value).map(\n ([key, value2]) => `${key}=${value2 ? encodeURIComponent(value2) : value2}`\n );\n }\n return [\n `${paramName}=${entries(value).flat().map((item) => item ? encodeURIComponent(item) : item).join(\",\")}`\n ];\n default:\n return [];\n }\n}\nclass InternalError extends Error {\n constructor(data) {\n super();\n this.data = data;\n this.type = \"internal\";\n }\n}\nclass UserVisibleError extends Error {\n constructor(data) {\n super();\n this.data = data;\n this.type = \"user-visible\";\n }\n}\nfunction applyDecorators(baseCommand, decorators, options) {\n if (!decorators || decorators.length === 0) {\n return baseCommand;\n }\n return decorators.reduce((command, decorator) => decorator(command, options), baseCommand);\n}\nexport {\n isArray as ArrayIsArray,\n indexOf as ArrayPrototypeIndexOf,\n push as ArrayPrototypePush,\n slice as ArrayPrototypeSlice,\n ConsoleLogger,\n DataIncompleteError,\n DataNotFoundError,\n DefaultFileParserLogger,\n Err,\n FetchResponse,\n HttpStatusCode,\n InternalError,\n parse as JSONParse,\n stringify as JSONStringify,\n LogLevelMap,\n create as ObjectCreate,\n entries as ObjectEntries,\n freeze as ObjectFreeze,\n keys as ObjectKeys,\n hasOwnProperty as ObjectPrototypeHasOwnProperty,\n Ok,\n UserVisibleError,\n WeakSetConstructor,\n addAllToSet,\n applyDecorators,\n bfs,\n buildSubscribableResult,\n coerceResponseToFetchResponse,\n deepCopy,\n deepEquals,\n deepFreeze,\n encodeQueryParam,\n err,\n getFetchResponseFromAuraError,\n includes,\n isCacheHitOrError,\n isCacheMiss,\n isDataIncompleteError,\n isDataNotFoundError,\n isPromiseLike,\n isResult,\n isSubscribable,\n isSubscribableResult,\n lineFormatter,\n loggerService,\n ok,\n racesync,\n readableStreamToAsyncIterable,\n rejectedPromiseLike,\n resolvedPromiseLike,\n satisfies,\n setDifference,\n setOverlaps,\n stableJSONStringify,\n stringIsVersion,\n toError,\n toTypeScriptSafeIdentifier,\n withResolvers\n};\n//# sourceMappingURL=index.js.map\n","/* eslint-disable no-dupe-class-members */\nimport { type DeepReadonly, deepCopy } from '@conduit-client/utils';\nimport { type Key } from './keys';\nimport type {\n CacheEntry,\n Cache,\n RecordableCache,\n FilterPredicate,\n CacheControlMetadata,\n CacheEntrySet,\n IFixedTimeWritableCache,\n CanonicalCacheControlMetadata,\n} from './cache';\n\n/**\n A utility class for recording actions made on a cache.\n */\nexport class DefaultRecordableCache implements Cache {\n constructor(protected baseCache: Cache) {}\n\n keysRead: Set<Key> = new Set();\n missingKeysRead: Set<Key> = new Set();\n keysUpdated: Set<Key> = new Set();\n metadataKeysUpdated: Set<Key> = new Set();\n\n delete(key: Key) {\n this.keysUpdated.add(key);\n this.baseCache.delete(key);\n }\n\n get<T>(key: Key): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(key: Key, options: { copy: true }): CacheEntry<T> | undefined;\n get<T>(key: Key, options: { copy: false }): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(key: Key, options?: { copy: boolean }) {\n this.keysRead.add(key);\n const value = this.baseCache.get<T>(key);\n if (value === undefined) {\n this.missingKeysRead.add(key);\n }\n\n if (options?.copy) {\n return deepCopy(value);\n }\n return value;\n }\n\n set<T>(key: Key, value: CacheEntrySet<T>): void {\n this.keysUpdated.add(key);\n this.metadataKeysUpdated.add(key);\n this.baseCache.set(key, value);\n }\n\n setMetadata(\n key: Key,\n cacheControlMetadata: CacheControlMetadata | CanonicalCacheControlMetadata\n ): void {\n this.metadataKeysUpdated.add(key);\n this.baseCache.setMetadata(key, cacheControlMetadata);\n }\n\n length() {\n return this.baseCache.length();\n }\n\n keys() {\n return this.baseCache.keys();\n }\n\n entries(): Array<[key: Key, value: DeepReadonly<CacheEntry<unknown>>]> {\n return this.baseCache.entries();\n }\n\n record(): RecordableCache {\n return new DefaultRecordableCache(this);\n }\n\n filter(predicate: FilterPredicate): Cache {\n return new DefaultFilteredCache(this, predicate);\n }\n\n buildFixedTimeWritableCache(generatedTime: number): IFixedTimeWritableCache {\n return new FixedTimeWritableCache(this, generatedTime);\n }\n}\n\n/**\n A utility class for filtering cache entries based on a given predicate.\n */\nexport class DefaultFilteredCache implements Cache {\n constructor(\n protected baseCache: Cache,\n protected predicate: FilterPredicate\n ) {}\n\n delete(key: Key) {\n this.baseCache.delete(key);\n }\n\n get<T>(key: Key): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(key: Key, options: { copy: true }): CacheEntry<T> | undefined;\n get<T>(key: Key, options: { copy: false }): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(\n key: Key,\n options?: { copy: boolean }\n ): DeepReadonly<CacheEntry<T>> | CacheEntry<T> | undefined {\n const result = this.baseCache.get<T>(key) as CacheEntry<T>;\n\n // if we're chaining filtered caches together, then it's possible the result will be undefined here\n if (result && this.predicate(key, result)) {\n if (options?.copy) {\n return deepCopy(result) as CacheEntry<T>;\n }\n return result as DeepReadonly<CacheEntry<T>>;\n }\n\n return undefined;\n }\n\n set<T>(key: Key, value: CacheEntrySet<T>): void {\n this.baseCache.set(key, value);\n }\n\n setMetadata(key: Key, cacheControlMetadata: CacheControlMetadata): void {\n this.baseCache.setMetadata(key, cacheControlMetadata);\n }\n\n length() {\n return this.getFilteredKeys().size;\n }\n\n keys() {\n return this.getFilteredKeys();\n }\n\n entries(): Array<[key: Key, value: DeepReadonly<CacheEntry<unknown>>]> {\n return this.getFilteredEntries();\n }\n\n record(): RecordableCache {\n return new DefaultRecordableCache(this);\n }\n\n filter(predicate: FilterPredicate): Cache {\n return new DefaultFilteredCache(this, predicate);\n }\n\n private getFilteredEntries(): Array<[key: Key, value: DeepReadonly<CacheEntry<unknown>>]> {\n return this.baseCache.entries().filter(([key, _value]) => {\n return this.get(key);\n });\n }\n\n private getFilteredKeys(): Set<Key> {\n const filteredKeySet: Set<Key> = new Set();\n this.baseCache.keys().forEach((key) => {\n if (this.get(key)) {\n filteredKeySet.add(key);\n }\n });\n return filteredKeySet;\n }\n\n buildFixedTimeWritableCache(generatedTime: number): IFixedTimeWritableCache {\n return new FixedTimeWritableCache(this, generatedTime);\n }\n}\n\n/**\n A utility class for automatically setting the generated time on all write operations\n */\nexport class FixedTimeWritableCache implements IFixedTimeWritableCache {\n constructor(\n protected baseCache: Cache,\n protected generatedTime: number\n ) {}\n\n delete(key: Key) {\n this.baseCache.delete(key);\n }\n\n get<T>(key: Key): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(key: Key, options: { copy: true }): CacheEntry<T> | undefined;\n get<T>(key: Key, options: { copy: false }): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(\n key: Key,\n options?: { copy: boolean }\n ): DeepReadonly<CacheEntry<T>> | CacheEntry<T> | undefined {\n return this.baseCache.get(key, options);\n }\n\n set<T>(key: Key, value: CacheEntrySet<T>): void {\n this.baseCache.set(key, {\n ...value,\n metadata: {\n ...value.metadata,\n cacheControl: { ...value.metadata.cacheControl, generatedTime: this.generatedTime },\n },\n });\n }\n\n setMetadata(\n key: Key,\n cacheControlMetadata: CacheControlMetadata | CanonicalCacheControlMetadata\n ): void {\n this.baseCache.setMetadata(key, {\n ...cacheControlMetadata,\n generatedTime: this.generatedTime,\n });\n }\n\n length() {\n return this.baseCache.length();\n }\n\n keys() {\n return this.baseCache.keys();\n }\n\n entries(): Array<[key: Key, value: DeepReadonly<CacheEntry<unknown>>]> {\n return this.baseCache.entries();\n }\n\n record(): RecordableCache {\n return new DefaultRecordableCache(this);\n }\n\n filter(predicate: FilterPredicate): Cache {\n return new DefaultFilteredCache(this, predicate);\n }\n\n buildFixedTimeWritableCache(generatedTime: number): IFixedTimeWritableCache {\n return new FixedTimeWritableCache(this, generatedTime);\n }\n}\n","/* eslint-disable no-dupe-class-members */\nimport { deepCopy, type DeepReadonly } from '@conduit-client/utils';\nimport { type Key } from './keys';\nimport {\n DefaultFilteredCache,\n DefaultRecordableCache,\n FixedTimeWritableCache,\n} from './derived-caches';\nimport type {\n Cache,\n CacheControlMetadata,\n CacheEntry,\n CacheEntrySet,\n CanonicalCacheControlMetadata,\n FilterPredicate,\n IFixedTimeWritableCache,\n RecordableCache,\n} from './cache';\n\nexport class DefaultCache implements Cache {\n constructor() {}\n\n protected data: Record<Key, CacheEntry<unknown>> = {};\n\n /**\n * Returns a cache entry at the specified key; undefined if no\n * such entry exists.\n *\n * @param key store key\n * @param [options] options for get (e.g. copy for deep copy)\n */\n get<T>(key: Key): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(key: Key, options: { copy: true }): CacheEntry<T> | undefined;\n get<T>(key: Key, options: { copy: false }): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(\n key: Key,\n options?: { copy: boolean }\n ): DeepReadonly<CacheEntry<T>> | CacheEntry<T> | undefined {\n if (options?.copy) {\n return deepCopy(this.data[key]) as CacheEntry<T>;\n }\n return this.data[key] as DeepReadonly<CacheEntry<T>>;\n }\n\n /**\n * Adds the specified key/value to the cache.\n *\n * @param key key at which to store value\n * @param entry value to be stored\n */\n set(key: Key, entry: CacheEntrySet<unknown>): void {\n if (entry.metadata.cacheControl.type === 'no-store') {\n return;\n }\n this.data[key] = {\n ...entry,\n metadata: {\n ...entry.metadata,\n type: entry.metadata.type || {\n namespace: 'OneStore:Internal',\n name: 'UnknownType',\n },\n cacheControl: {\n generatedTime: Date.now() / 1000,\n ...entry.metadata.cacheControl,\n },\n },\n };\n }\n\n /**\n * Removes the cache entry associated with the specified key.\n *\n * @param key key to be removed from the store\n */\n delete(key: Key): void {\n delete this.data[key];\n }\n\n /**\n * Sets the metadata for the specified key if the key is in cache.\n * If the key doesn't exist, it does nothing.\n *\n * @param key key at which to store metadata\n * @param cacheControlMetadata metadata to be stored\n */\n setMetadata(\n key: Key,\n cacheControlMetadata: CacheControlMetadata | CanonicalCacheControlMetadata\n ): void {\n if (key in this.data) {\n this.data[key].metadata.cacheControl = {\n generatedTime: Date.now() / 1000,\n ...cacheControlMetadata,\n };\n }\n }\n\n length(): number {\n return this.keys().size;\n }\n\n keys(): Set<Key> {\n return new Set(Object.keys(this.data));\n }\n\n entries(): Array<[key: Key, value: DeepReadonly<CacheEntry<unknown>>]> {\n return Object.entries(this.data) as Array<\n [key: Key, value: DeepReadonly<CacheEntry<unknown>>]\n >;\n }\n\n record(): RecordableCache {\n return new DefaultRecordableCache(this);\n }\n\n filter(predicate: FilterPredicate): Cache {\n return new DefaultFilteredCache(this, predicate);\n }\n\n buildFixedTimeWritableCache(generatedTime: number): IFixedTimeWritableCache {\n return new FixedTimeWritableCache(this, generatedTime);\n }\n}\n\n/**\n A utility class for use in tests only\n */\nexport class ClearableCache extends DefaultCache {\n clear() {\n this.data = {};\n }\n}\n","import { type Cache } from './cache';\nimport { DefaultCache } from './default';\nimport type { NamedService, ServiceDescriptor } from '@conduit-client/utils';\n\nexport {\n type Cache,\n type ReadonlyCache,\n type CacheControlMetadata,\n type CacheEntry,\n type CanonicalCacheControlMetadata,\n type FilterPredicate,\n type IFixedTimeWritableCache,\n} from './cache';\nexport type { Key } from './keys';\nexport type ICache = Cache;\nexport type NamedCacheService<Name extends string = 'cache'> = NamedService<Name, ICache>;\nexport type CacheServiceDescriptor = ServiceDescriptor<ICache, 'cache', '1.0'>;\n\nexport { ClearableCache } from './default';\n\nexport function buildServiceDescriptor(): CacheServiceDescriptor {\n return {\n type: 'cache',\n version: '1.0',\n service: new DefaultCache(),\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../utils/dist/index.js","../../src/v1/derived-caches.ts","../../src/v1/default.ts","../../src/v1/index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2022, Salesforce, Inc.,\n * All rights reserved.\n * For full license text, see the LICENSE.txt file\n */\nfunction bfs(start, predicate, getChildren) {\n const queue = [...start];\n const visited = /* @__PURE__ */ new Set([...start]);\n const matches2 = /* @__PURE__ */ new Set();\n while (queue.length) {\n const curr = queue.shift();\n if (predicate(curr)) {\n matches2.add(curr);\n }\n const children = getChildren(curr);\n for (const child of children) {\n if (!visited.has(child)) {\n visited.add(child);\n queue.push(child);\n }\n }\n }\n return matches2;\n}\nfunction lineFormatter(position, message, filePath) {\n return `${message} (${filePath}:${position.line}:${position.column})`;\n}\nclass DefaultFileParserLogger {\n constructor(services, filePath) {\n this.services = services;\n this.filePath = filePath;\n }\n trace(position, message) {\n this.services.logger.trace(this.format(position, message));\n }\n debug(position, message) {\n this.services.logger.debug(this.format(position, message));\n }\n info(position, message) {\n this.services.logger.info(this.format(position, message));\n }\n warn(position, message) {\n this.services.logger.warn(this.format(position, message));\n }\n error(position, message) {\n this.services.logger.error(this.format(position, message));\n }\n format(position, message) {\n return lineFormatter(position, message, this.filePath);\n }\n}\nfunction matches(test, s) {\n if (test === void 0) {\n return false;\n } else if (typeof test === \"string\") {\n return s === test;\n } else if (test instanceof RegExp) {\n return test.test(s);\n } else if (typeof test === \"function\") {\n return test(s);\n }\n return test.some((m) => matches(m, s));\n}\nfunction includes(incexc, s) {\n if (matches(incexc.exclude, s)) {\n return false;\n }\n if (matches(incexc.include, s)) {\n return true;\n }\n if (incexc.include) {\n return false;\n }\n return true;\n}\nconst { create, freeze, keys, entries } = Object;\nconst { hasOwnProperty } = Object.prototype;\nconst { isArray } = Array;\nconst { push, indexOf, slice } = Array.prototype;\nconst { stringify, parse } = JSON;\nconst WeakSetConstructor = WeakSet;\nconst LogLevelMap = {\n TRACE: 4,\n DEBUG: 3,\n INFO: 2,\n WARN: 1,\n ERROR: 0\n};\nclass ConsoleLogger {\n constructor(level = \"WARN\", printer = console.log, formatter = (level2, message) => `${level2}: ${message}`) {\n this.level = level;\n this.printer = printer;\n this.formatter = formatter;\n this.messages = [];\n }\n trace(message) {\n this.log(\"TRACE\", message);\n }\n debug(message) {\n this.log(\"DEBUG\", message);\n }\n info(message) {\n this.log(\"INFO\", message);\n }\n warn(message) {\n this.log(\"WARN\", message);\n }\n error(message) {\n this.log(\"ERROR\", message);\n }\n log(level, message) {\n if (LogLevelMap[level] > LogLevelMap[this.level]) {\n return;\n }\n this.printer(this.formatter(level, message));\n }\n}\nfunction loggerService(level, printer, formatter) {\n return new ConsoleLogger(level, printer, formatter);\n}\nclass Ok {\n constructor(value) {\n this.value = value;\n }\n isOk() {\n return true;\n }\n isErr() {\n return !this.isOk();\n }\n}\nclass Err {\n constructor(error) {\n this.error = error;\n }\n isOk() {\n return false;\n }\n isErr() {\n return !this.isOk();\n }\n}\nconst ok = (value) => new Ok(value);\nconst err = (err2) => new Err(err2);\nclass DataNotFoundError extends Error {\n constructor(message) {\n super(message);\n this.name = \"DataNotFoundError\";\n }\n}\nclass DataIncompleteError extends Error {\n constructor(message, partialData) {\n super(message);\n this.partialData = partialData;\n this.name = \"DataIncompleteError\";\n }\n}\nfunction isDataNotFoundError(error) {\n return error instanceof DataNotFoundError || error.name === \"DataNotFoundError\";\n}\nfunction isDataIncompleteError(error) {\n return error instanceof DataIncompleteError || error.name === \"DataIncompleteError\";\n}\nfunction isCacheHitOrError(value) {\n if (value.isErr() && (isDataIncompleteError(value.error) || isDataNotFoundError(value.error))) {\n return false;\n }\n return true;\n}\nfunction isCacheMiss(value) {\n return !isCacheHitOrError(value);\n}\nfunction isResult(value) {\n return value != null && typeof value === \"object\" && \"isOk\" in value && \"isErr\" in value && typeof value.isOk === \"function\" && typeof value.isErr === \"function\" && (value.isOk() === true && value.isErr() === false && \"value\" in value || value.isOk() === false && value.isErr() === true && \"error\" in value);\n}\nfunction setOverlaps(setA, setB) {\n for (const element of setA) {\n if (setB.has(element)) {\n return true;\n }\n }\n return false;\n}\nfunction setDifference(setA, setB) {\n const differenceSet = /* @__PURE__ */ new Set();\n for (const element of setA) {\n if (!setB.has(element)) {\n differenceSet.add(element);\n }\n }\n return differenceSet;\n}\nfunction addAllToSet(targetSet, sourceSet) {\n for (const element of sourceSet) {\n targetSet.add(element);\n }\n}\nconst toTypeScriptSafeIdentifier = (s) => s.length >= 1 ? s[0].replace(/[^$_\\p{ID_Start}]/u, \"_\") + s.slice(1).replace(/[^$\\u200c\\u200d\\p{ID_Continue}]/gu, \"_\") : \"\";\nfunction isSubscribable(obj) {\n return typeof obj === \"object\" && obj !== null && \"subscribe\" in obj && typeof obj.subscribe === \"function\" && \"refresh\" in obj && typeof obj.refresh === \"function\";\n}\nfunction isSubscribableResult(x) {\n if (!isResult(x)) {\n return false;\n }\n return isSubscribable(x.isOk() ? x.value : x.error);\n}\nfunction buildSubscribableResult(result, subscribe, refresh) {\n if (result.isOk()) {\n return ok({ data: result.value, subscribe, refresh });\n } else {\n return err({ failure: result.error, subscribe, refresh });\n }\n}\nfunction resolvedPromiseLike(result) {\n if (isPromiseLike(result)) {\n return result.then((nextResult) => nextResult);\n }\n return {\n then: (onFulfilled, _onRejected) => {\n try {\n return resolvedPromiseLike(onFulfilled(result));\n } catch (e) {\n if (onFulfilled === void 0) {\n return resolvedPromiseLike(result);\n }\n return rejectedPromiseLike(e);\n }\n }\n };\n}\nfunction rejectedPromiseLike(reason) {\n if (isPromiseLike(reason)) {\n return reason.then((nextResult) => nextResult);\n }\n return {\n then: (_onFulfilled, onRejected) => {\n if (typeof onRejected === \"function\") {\n try {\n return resolvedPromiseLike(onRejected(reason));\n } catch (e) {\n return rejectedPromiseLike(e);\n }\n }\n return rejectedPromiseLike(reason);\n }\n };\n}\nfunction isPromiseLike(x) {\n return typeof (x == null ? void 0 : x.then) === \"function\";\n}\nfunction racesync(values) {\n for (const value of values) {\n let settled = void 0;\n if (isPromiseLike(value)) {\n value.then(\n (_) => {\n settled = value;\n },\n (_) => {\n settled = value;\n }\n );\n } else {\n settled = resolvedPromiseLike(value);\n }\n if (settled !== void 0) {\n return settled;\n }\n }\n return Promise.race(values);\n}\nfunction withResolvers() {\n let resolve, reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\nfunction deepEquals(x, y) {\n if (x === void 0) {\n return y === void 0;\n } else if (x === null) {\n return y === null;\n } else if (y === null) {\n return x === null;\n } else if (isArray(x)) {\n if (!isArray(y) || x.length !== y.length) {\n return false;\n }\n for (let i = 0; i < x.length; ++i) {\n if (!deepEquals(x[i], y[i])) {\n return false;\n }\n }\n return true;\n } else if (typeof x === \"object\") {\n if (typeof y !== \"object\") {\n return false;\n }\n const xkeys = Object.keys(x);\n const ykeys = Object.keys(y);\n if (xkeys.length !== ykeys.length) {\n return false;\n }\n for (let i = 0; i < xkeys.length; ++i) {\n const key = xkeys[i];\n if (!deepEquals(x[key], y[key])) {\n return false;\n }\n }\n return true;\n }\n return x === y;\n}\nfunction stableJSONStringify(node) {\n if (node && node.toJSON && typeof node.toJSON === \"function\") {\n node = node.toJSON();\n }\n if (node === void 0) {\n return;\n }\n if (typeof node === \"number\") {\n return isFinite(node) ? \"\" + node : \"null\";\n }\n if (typeof node !== \"object\") {\n return stringify(node);\n }\n let i;\n let out;\n if (isArray(node)) {\n out = \"[\";\n for (i = 0; i < node.length; i++) {\n if (i) {\n out += \",\";\n }\n out += stableJSONStringify(node[i]) || \"null\";\n }\n return out + \"]\";\n }\n if (node === null) {\n return \"null\";\n }\n const objKeys = keys(node).sort();\n out = \"\";\n for (i = 0; i < objKeys.length; i++) {\n const key = objKeys[i];\n const value = stableJSONStringify(node[key]);\n if (!value) {\n continue;\n }\n if (out) {\n out += \",\";\n }\n out += stringify(key) + \":\" + value;\n }\n return \"{\" + out + \"}\";\n}\nfunction toError(x) {\n if (x instanceof Error) {\n return x;\n }\n return new Error(typeof x === \"string\" ? x : JSON.stringify(x));\n}\nfunction deepCopy(x) {\n const stringified = stringify(x);\n return stringified ? parse(stringified) : void 0;\n}\nfunction readableStreamToAsyncIterable(stream) {\n if (stream.locked) {\n return err(new Error(\"ReadableStream is already locked\"));\n }\n if (Symbol.asyncIterator in stream) {\n return ok(stream);\n }\n const reader = stream.getReader();\n return ok({\n [Symbol.asyncIterator]: () => ({\n next: async () => {\n try {\n const result = await reader.read();\n if (result.done) {\n try {\n reader.releaseLock();\n } catch {\n }\n return { done: true, value: void 0 };\n }\n return {\n done: false,\n value: result.value\n };\n } catch (e) {\n try {\n reader.releaseLock();\n } catch {\n }\n throw e;\n }\n },\n return: async (value) => {\n try {\n await reader.cancel();\n } catch {\n }\n try {\n reader.releaseLock();\n } catch {\n }\n return { done: true, value };\n },\n throw: async (exception) => {\n try {\n await reader.cancel();\n } catch {\n }\n try {\n reader.releaseLock();\n } catch {\n }\n throw exception;\n }\n })\n });\n}\nfunction satisfies(provided, requested) {\n const providedN = provided.split(\".\").map((s) => parseInt(s));\n const requestedN = requested.split(\".\").map((s) => parseInt(s));\n return providedN[0] === requestedN[0] && providedN[1] >= requestedN[1];\n}\nfunction stringIsVersion(s) {\n const versionParts = s.split(\".\");\n return (versionParts.length === 2 || versionParts.length === 3) && versionParts.every((part) => part.match(/^\\d+$/));\n}\nvar HttpStatusCode = /* @__PURE__ */ ((HttpStatusCode2) => {\n HttpStatusCode2[HttpStatusCode2[\"Ok\"] = 200] = \"Ok\";\n HttpStatusCode2[HttpStatusCode2[\"Created\"] = 201] = \"Created\";\n HttpStatusCode2[HttpStatusCode2[\"NoContent\"] = 204] = \"NoContent\";\n HttpStatusCode2[HttpStatusCode2[\"NotModified\"] = 304] = \"NotModified\";\n HttpStatusCode2[HttpStatusCode2[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpStatusCode2[HttpStatusCode2[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpStatusCode2[HttpStatusCode2[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpStatusCode2[HttpStatusCode2[\"NotFound\"] = 404] = \"NotFound\";\n HttpStatusCode2[HttpStatusCode2[\"ServerError\"] = 500] = \"ServerError\";\n HttpStatusCode2[HttpStatusCode2[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n return HttpStatusCode2;\n})(HttpStatusCode || {});\nfunction getFetchResponseFromAuraError(err2) {\n if (err2.data !== void 0 && err2.data.statusCode !== void 0) {\n let data = {};\n data = err2.data;\n if (err2.id !== void 0) {\n data.id = err2.id;\n }\n return new FetchResponse(data.statusCode, data);\n }\n return new FetchResponse(500, {\n error: err2.message\n });\n}\nasync function coerceResponseToFetchResponse(response) {\n const { status } = response;\n const responseHeaders = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n let responseBody = null;\n if (status !== 204) {\n const contentType = responseHeaders[\"content-type\"];\n responseBody = contentType && contentType.startsWith(\"application/json\") ? await response.json() : await response.text();\n }\n return new FetchResponse(status, responseBody, responseHeaders);\n}\nfunction getStatusText(status) {\n switch (status) {\n case 200:\n return \"OK\";\n case 201:\n return \"Created\";\n case 304:\n return \"Not Modified\";\n case 400:\n return \"Bad Request\";\n case 404:\n return \"Not Found\";\n case 500:\n return \"Server Error\";\n default:\n return `Unexpected HTTP Status Code: ${status}`;\n }\n}\nclass FetchResponse extends Error {\n constructor(status, body, headers) {\n super();\n this.status = status;\n this.body = body;\n this.headers = headers || {};\n this.ok = status >= 200 && this.status <= 299;\n this.statusText = getStatusText(status);\n }\n}\nconst deeplyFrozen = new WeakSetConstructor();\nfunction deepFreeze(value) {\n if (typeof value !== \"object\" || value === null || deeplyFrozen.has(value)) {\n return;\n }\n deeplyFrozen.add(value);\n if (isArray(value)) {\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepFreeze(value[i]);\n }\n } else {\n const keys$1 = keys(value);\n for (let i = 0, len = keys$1.length; i < len; i += 1) {\n deepFreeze(value[keys$1[i]]);\n }\n }\n freeze(value);\n}\nfunction isScalar(value) {\n return typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || value === null || value === void 0;\n}\nfunction isScalarObject(value) {\n return Object.values(value).every((value2) => isScalar(value2));\n}\nfunction isScalarArray(value) {\n return value.every((item) => isScalar(item));\n}\nfunction encodeQueryParam(paramName, value, explode) {\n switch (typeof value) {\n case \"string\":\n return [`${paramName}=${encodeURIComponent(value)}`];\n case \"number\":\n case \"boolean\":\n return [`${paramName}=${value}`];\n case \"object\":\n if (value === null) {\n return [];\n }\n if (isArray(value)) {\n if (!isScalarArray(value)) {\n throw new Error(`Unsupported non-scalar array type for ${paramName}`);\n }\n if (explode) {\n return value.map(\n (item) => `${paramName}=${item ? encodeURIComponent(item) : item}`\n );\n }\n return [\n `${paramName}=${value.map((item) => item ? encodeURIComponent(item) : item).join(\",\")}`\n ];\n }\n if (!isScalarObject(value)) {\n throw new Error(`Unsupported non-scalar object type for ${paramName}`);\n }\n if (explode) {\n return entries(value).map(\n ([key, value2]) => `${key}=${value2 ? encodeURIComponent(value2) : value2}`\n );\n }\n return [\n `${paramName}=${entries(value).flat().map((item) => item ? encodeURIComponent(item) : item).join(\",\")}`\n ];\n default:\n return [];\n }\n}\nclass InternalError extends Error {\n constructor(data) {\n super();\n this.data = data;\n this.type = \"internal\";\n }\n}\nclass UserVisibleError extends Error {\n constructor(data) {\n super();\n this.data = data;\n this.type = \"user-visible\";\n }\n}\nfunction isUserVisibleError(error) {\n return error instanceof Error && \"type\" in error && error.type === \"user-visible\";\n}\nfunction logError(error) {\n if (isUserVisibleError(error)) {\n return;\n }\n console.error(\"OneStore Command threw an error that we did not expect\", error);\n}\nfunction applyDecorators(baseCommand, decorators, options) {\n if (!decorators || decorators.length === 0) {\n return baseCommand;\n }\n return decorators.reduce((command, decorator) => decorator(command, options), baseCommand);\n}\nexport {\n isArray as ArrayIsArray,\n indexOf as ArrayPrototypeIndexOf,\n push as ArrayPrototypePush,\n slice as ArrayPrototypeSlice,\n ConsoleLogger,\n DataIncompleteError,\n DataNotFoundError,\n DefaultFileParserLogger,\n Err,\n FetchResponse,\n HttpStatusCode,\n InternalError,\n parse as JSONParse,\n stringify as JSONStringify,\n LogLevelMap,\n create as ObjectCreate,\n entries as ObjectEntries,\n freeze as ObjectFreeze,\n keys as ObjectKeys,\n hasOwnProperty as ObjectPrototypeHasOwnProperty,\n Ok,\n UserVisibleError,\n WeakSetConstructor,\n addAllToSet,\n applyDecorators,\n bfs,\n buildSubscribableResult,\n coerceResponseToFetchResponse,\n deepCopy,\n deepEquals,\n deepFreeze,\n encodeQueryParam,\n err,\n getFetchResponseFromAuraError,\n includes,\n isCacheHitOrError,\n isCacheMiss,\n isDataIncompleteError,\n isDataNotFoundError,\n isPromiseLike,\n isResult,\n isSubscribable,\n isSubscribableResult,\n isUserVisibleError,\n lineFormatter,\n logError,\n loggerService,\n ok,\n racesync,\n readableStreamToAsyncIterable,\n rejectedPromiseLike,\n resolvedPromiseLike,\n satisfies,\n setDifference,\n setOverlaps,\n stableJSONStringify,\n stringIsVersion,\n toError,\n toTypeScriptSafeIdentifier,\n withResolvers\n};\n//# sourceMappingURL=index.js.map\n","/* eslint-disable no-dupe-class-members */\nimport { type DeepReadonly, deepCopy } from '@conduit-client/utils';\nimport { type Key } from './keys';\nimport type {\n CacheEntry,\n Cache,\n RecordableCache,\n FilterPredicate,\n CacheControlMetadata,\n CacheEntrySet,\n IFixedTimeWritableCache,\n CanonicalCacheControlMetadata,\n} from './cache';\n\n/**\n A utility class for recording actions made on a cache.\n */\nexport class DefaultRecordableCache implements Cache {\n constructor(protected baseCache: Cache) {}\n\n keysRead: Set<Key> = new Set();\n missingKeysRead: Set<Key> = new Set();\n keysUpdated: Set<Key> = new Set();\n metadataKeysUpdated: Set<Key> = new Set();\n\n delete(key: Key) {\n this.keysUpdated.add(key);\n this.baseCache.delete(key);\n }\n\n get<T>(key: Key): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(key: Key, options: { copy: true }): CacheEntry<T> | undefined;\n get<T>(key: Key, options: { copy: false }): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(key: Key, options?: { copy: boolean }) {\n this.keysRead.add(key);\n const value = this.baseCache.get<T>(key);\n if (value === undefined) {\n this.missingKeysRead.add(key);\n }\n\n if (options?.copy) {\n return deepCopy(value);\n }\n return value;\n }\n\n set<T>(key: Key, value: CacheEntrySet<T>): void {\n this.keysUpdated.add(key);\n this.metadataKeysUpdated.add(key);\n this.baseCache.set(key, value);\n }\n\n setMetadata(\n key: Key,\n cacheControlMetadata: CacheControlMetadata | CanonicalCacheControlMetadata\n ): void {\n this.metadataKeysUpdated.add(key);\n this.baseCache.setMetadata(key, cacheControlMetadata);\n }\n\n length() {\n return this.baseCache.length();\n }\n\n keys() {\n return this.baseCache.keys();\n }\n\n entries(): Array<[key: Key, value: DeepReadonly<CacheEntry<unknown>>]> {\n return this.baseCache.entries();\n }\n\n record(): RecordableCache {\n return new DefaultRecordableCache(this);\n }\n\n filter(predicate: FilterPredicate): Cache {\n return new DefaultFilteredCache(this, predicate);\n }\n\n buildFixedTimeWritableCache(generatedTime: number): IFixedTimeWritableCache {\n return new FixedTimeWritableCache(this, generatedTime);\n }\n}\n\n/**\n A utility class for filtering cache entries based on a given predicate.\n */\nexport class DefaultFilteredCache implements Cache {\n constructor(\n protected baseCache: Cache,\n protected predicate: FilterPredicate\n ) {}\n\n delete(key: Key) {\n this.baseCache.delete(key);\n }\n\n get<T>(key: Key): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(key: Key, options: { copy: true }): CacheEntry<T> | undefined;\n get<T>(key: Key, options: { copy: false }): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(\n key: Key,\n options?: { copy: boolean }\n ): DeepReadonly<CacheEntry<T>> | CacheEntry<T> | undefined {\n const result = this.baseCache.get<T>(key) as CacheEntry<T>;\n\n // if we're chaining filtered caches together, then it's possible the result will be undefined here\n if (result && this.predicate(key, result)) {\n if (options?.copy) {\n return deepCopy(result) as CacheEntry<T>;\n }\n return result as DeepReadonly<CacheEntry<T>>;\n }\n\n return undefined;\n }\n\n set<T>(key: Key, value: CacheEntrySet<T>): void {\n this.baseCache.set(key, value);\n }\n\n setMetadata(key: Key, cacheControlMetadata: CacheControlMetadata): void {\n this.baseCache.setMetadata(key, cacheControlMetadata);\n }\n\n length() {\n return this.getFilteredKeys().size;\n }\n\n keys() {\n return this.getFilteredKeys();\n }\n\n entries(): Array<[key: Key, value: DeepReadonly<CacheEntry<unknown>>]> {\n return this.getFilteredEntries();\n }\n\n record(): RecordableCache {\n return new DefaultRecordableCache(this);\n }\n\n filter(predicate: FilterPredicate): Cache {\n return new DefaultFilteredCache(this, predicate);\n }\n\n private getFilteredEntries(): Array<[key: Key, value: DeepReadonly<CacheEntry<unknown>>]> {\n return this.baseCache.entries().filter(([key, _value]) => {\n return this.get(key);\n });\n }\n\n private getFilteredKeys(): Set<Key> {\n const filteredKeySet: Set<Key> = new Set();\n this.baseCache.keys().forEach((key) => {\n if (this.get(key)) {\n filteredKeySet.add(key);\n }\n });\n return filteredKeySet;\n }\n\n buildFixedTimeWritableCache(generatedTime: number): IFixedTimeWritableCache {\n return new FixedTimeWritableCache(this, generatedTime);\n }\n}\n\n/**\n A utility class for automatically setting the generated time on all write operations\n */\nexport class FixedTimeWritableCache implements IFixedTimeWritableCache {\n constructor(\n protected baseCache: Cache,\n protected generatedTime: number\n ) {}\n\n delete(key: Key) {\n this.baseCache.delete(key);\n }\n\n get<T>(key: Key): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(key: Key, options: { copy: true }): CacheEntry<T> | undefined;\n get<T>(key: Key, options: { copy: false }): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(\n key: Key,\n options?: { copy: boolean }\n ): DeepReadonly<CacheEntry<T>> | CacheEntry<T> | undefined {\n return this.baseCache.get(key, options);\n }\n\n set<T>(key: Key, value: CacheEntrySet<T>): void {\n this.baseCache.set(key, {\n ...value,\n metadata: {\n ...value.metadata,\n cacheControl: { ...value.metadata.cacheControl, generatedTime: this.generatedTime },\n },\n });\n }\n\n setMetadata(\n key: Key,\n cacheControlMetadata: CacheControlMetadata | CanonicalCacheControlMetadata\n ): void {\n this.baseCache.setMetadata(key, {\n ...cacheControlMetadata,\n generatedTime: this.generatedTime,\n });\n }\n\n length() {\n return this.baseCache.length();\n }\n\n keys() {\n return this.baseCache.keys();\n }\n\n entries(): Array<[key: Key, value: DeepReadonly<CacheEntry<unknown>>]> {\n return this.baseCache.entries();\n }\n\n record(): RecordableCache {\n return new DefaultRecordableCache(this);\n }\n\n filter(predicate: FilterPredicate): Cache {\n return new DefaultFilteredCache(this, predicate);\n }\n\n buildFixedTimeWritableCache(generatedTime: number): IFixedTimeWritableCache {\n return new FixedTimeWritableCache(this, generatedTime);\n }\n}\n","/* eslint-disable no-dupe-class-members */\nimport { deepCopy, type DeepReadonly } from '@conduit-client/utils';\nimport { type Key } from './keys';\nimport {\n DefaultFilteredCache,\n DefaultRecordableCache,\n FixedTimeWritableCache,\n} from './derived-caches';\nimport type {\n Cache,\n CacheControlMetadata,\n CacheEntry,\n CacheEntrySet,\n CanonicalCacheControlMetadata,\n FilterPredicate,\n IFixedTimeWritableCache,\n RecordableCache,\n} from './cache';\n\nexport class DefaultCache implements Cache {\n constructor() {}\n\n protected data: Record<Key, CacheEntry<unknown>> = {};\n\n /**\n * Returns a cache entry at the specified key; undefined if no\n * such entry exists.\n *\n * @param key store key\n * @param [options] options for get (e.g. copy for deep copy)\n */\n get<T>(key: Key): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(key: Key, options: { copy: true }): CacheEntry<T> | undefined;\n get<T>(key: Key, options: { copy: false }): DeepReadonly<CacheEntry<T>> | undefined;\n get<T>(\n key: Key,\n options?: { copy: boolean }\n ): DeepReadonly<CacheEntry<T>> | CacheEntry<T> | undefined {\n if (options?.copy) {\n return deepCopy(this.data[key]) as CacheEntry<T>;\n }\n return this.data[key] as DeepReadonly<CacheEntry<T>>;\n }\n\n /**\n * Adds the specified key/value to the cache.\n *\n * @param key key at which to store value\n * @param entry value to be stored\n */\n set(key: Key, entry: CacheEntrySet<unknown>): void {\n if (entry.metadata.cacheControl.type === 'no-store') {\n return;\n }\n this.data[key] = {\n ...entry,\n metadata: {\n ...entry.metadata,\n type: entry.metadata.type || {\n namespace: 'OneStore:Internal',\n name: 'UnknownType',\n },\n cacheControl: {\n generatedTime: Date.now() / 1000,\n ...entry.metadata.cacheControl,\n },\n },\n };\n }\n\n /**\n * Removes the cache entry associated with the specified key.\n *\n * @param key key to be removed from the store\n */\n delete(key: Key): void {\n delete this.data[key];\n }\n\n /**\n * Sets the metadata for the specified key if the key is in cache.\n * If the key doesn't exist, it does nothing.\n *\n * @param key key at which to store metadata\n * @param cacheControlMetadata metadata to be stored\n */\n setMetadata(\n key: Key,\n cacheControlMetadata: CacheControlMetadata | CanonicalCacheControlMetadata\n ): void {\n if (key in this.data) {\n this.data[key].metadata.cacheControl = {\n generatedTime: Date.now() / 1000,\n ...cacheControlMetadata,\n };\n }\n }\n\n length(): number {\n return this.keys().size;\n }\n\n keys(): Set<Key> {\n return new Set(Object.keys(this.data));\n }\n\n entries(): Array<[key: Key, value: DeepReadonly<CacheEntry<unknown>>]> {\n return Object.entries(this.data) as Array<\n [key: Key, value: DeepReadonly<CacheEntry<unknown>>]\n >;\n }\n\n record(): RecordableCache {\n return new DefaultRecordableCache(this);\n }\n\n filter(predicate: FilterPredicate): Cache {\n return new DefaultFilteredCache(this, predicate);\n }\n\n buildFixedTimeWritableCache(generatedTime: number): IFixedTimeWritableCache {\n return new FixedTimeWritableCache(this, generatedTime);\n }\n}\n\n/**\n A utility class for use in tests only\n */\nexport class ClearableCache extends DefaultCache {\n clear() {\n this.data = {};\n }\n}\n","import { type Cache } from './cache';\nimport { DefaultCache } from './default';\nimport type { NamedService, ServiceDescriptor } from '@conduit-client/utils';\n\nexport {\n type Cache,\n type ReadonlyCache,\n type CacheControlMetadata,\n type CacheEntry,\n type CanonicalCacheControlMetadata,\n type FilterPredicate,\n type IFixedTimeWritableCache,\n} from './cache';\nexport type { Key } from './keys';\nexport type ICache = Cache;\nexport type NamedCacheService<Name extends string = 'cache'> = NamedService<Name, ICache>;\nexport type CacheServiceDescriptor = ServiceDescriptor<ICache, 'cache', '1.0'>;\n\nexport { ClearableCache } from './default';\n\nexport function buildServiceDescriptor(): CacheServiceDescriptor {\n return {\n type: 'cache',\n version: '1.0',\n service: new DefaultCache(),\n };\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@conduit-client/service-cache",
3
- "version": "2.0.1",
3
+ "version": "3.0.0",
4
4
  "private": false,
5
5
  "description": "OneStore Cache Service definition",
6
6
  "type": "module",
@@ -31,8 +31,8 @@
31
31
  "watch": "npm run build --watch"
32
32
  },
33
33
  "dependencies": {
34
- "@conduit-client/service-instrumentation": "2.0.1",
35
- "@conduit-client/utils": "2.0.1"
34
+ "@conduit-client/service-instrumentation": "3.0.0",
35
+ "@conduit-client/utils": "3.0.0"
36
36
  },
37
37
  "volta": {
38
38
  "extends": "../../../../package.json"