quidproquo-core 0.1.11 → 0.1.13
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.
- package/lib/commonjs/actions/crypto/CryptoActionType.d.ts +4 -0
- package/lib/commonjs/actions/crypto/CryptoActionType.js +9 -0
- package/lib/commonjs/actions/crypto/CryptoActionType.js.map +1 -0
- package/lib/commonjs/actions/crypto/CryptoContext.d.ts +1 -0
- package/lib/commonjs/actions/crypto/CryptoContext.js +3 -0
- package/lib/commonjs/actions/crypto/CryptoContext.js.map +1 -0
- package/lib/commonjs/actions/crypto/CryptoDecryptActionRequester.d.ts +10 -0
- package/lib/commonjs/actions/crypto/CryptoDecryptActionRequester.js +17 -0
- package/lib/commonjs/actions/crypto/CryptoDecryptActionRequester.js.map +1 -0
- package/lib/commonjs/actions/crypto/CryptoDecryptActionTypes.d.ts +14 -0
- package/lib/commonjs/actions/crypto/CryptoDecryptActionTypes.js +3 -0
- package/lib/commonjs/actions/crypto/CryptoDecryptActionTypes.js.map +1 -0
- package/lib/commonjs/actions/crypto/CryptoEncryptActionRequester.d.ts +8 -0
- package/lib/commonjs/actions/crypto/CryptoEncryptActionRequester.js +15 -0
- package/lib/commonjs/actions/crypto/CryptoEncryptActionRequester.js.map +1 -0
- package/lib/commonjs/actions/crypto/CryptoEncryptActionTypes.d.ts +14 -0
- package/lib/commonjs/actions/crypto/CryptoEncryptActionTypes.js +3 -0
- package/lib/commonjs/actions/crypto/CryptoEncryptActionTypes.js.map +1 -0
- package/lib/commonjs/actions/crypto/index.d.ts +6 -0
- package/lib/commonjs/actions/crypto/index.js +23 -0
- package/lib/commonjs/actions/crypto/index.js.map +1 -0
- package/lib/commonjs/actions/index.d.ts +1 -0
- package/lib/commonjs/actions/index.js +1 -0
- package/lib/commonjs/actions/index.js.map +1 -1
- package/lib/commonjs/actions/keyValueStore/KeyValueStoreActionType.d.ts +2 -1
- package/lib/commonjs/actions/keyValueStore/KeyValueStoreActionType.js +1 -0
- package/lib/commonjs/actions/keyValueStore/KeyValueStoreActionType.js.map +1 -1
- package/lib/commonjs/actions/keyValueStore/KeyValueStoreScanAllScopesActionRequester.d.ts +32 -0
- package/lib/commonjs/actions/keyValueStore/KeyValueStoreScanAllScopesActionRequester.js +47 -0
- package/lib/commonjs/actions/keyValueStore/KeyValueStoreScanAllScopesActionRequester.js.map +1 -0
- package/lib/commonjs/actions/keyValueStore/KeyValueStoreScanAllScopesActionTypes.d.ts +23 -0
- package/lib/commonjs/actions/keyValueStore/KeyValueStoreScanAllScopesActionTypes.js +3 -0
- package/lib/commonjs/actions/keyValueStore/KeyValueStoreScanAllScopesActionTypes.js.map +1 -0
- package/lib/commonjs/actions/keyValueStore/index.d.ts +2 -0
- package/lib/commonjs/actions/keyValueStore/index.js +2 -0
- package/lib/commonjs/actions/keyValueStore/index.js.map +1 -1
- package/lib/commonjs/actions/keyValueStore/types/KvsQueryOperation.d.ts +2 -2
- package/lib/commonjs/actions/keyValueStore/types/KvsQueryOperation.js.map +1 -1
- package/lib/commonjs/config/QPQConfig.d.ts +1 -0
- package/lib/commonjs/config/QPQConfig.js +1 -0
- package/lib/commonjs/config/QPQConfig.js.map +1 -1
- package/lib/commonjs/config/settings/cryptoKey.d.ts +9 -0
- package/lib/commonjs/config/settings/cryptoKey.js +13 -0
- package/lib/commonjs/config/settings/cryptoKey.js.map +1 -0
- package/lib/commonjs/config/settings/index.d.ts +1 -0
- package/lib/commonjs/config/settings/index.js +1 -0
- package/lib/commonjs/config/settings/index.js.map +1 -1
- package/lib/commonjs/config/settings/keyValueStore.d.ts +38 -1
- package/lib/commonjs/config/settings/keyValueStore.js +1 -0
- package/lib/commonjs/config/settings/keyValueStore.js.map +1 -1
- package/lib/commonjs/logic/scope/scopedKvsValue.d.ts +4 -0
- package/lib/commonjs/logic/scope/scopedKvsValue.js +19 -1
- package/lib/commonjs/logic/scope/scopedKvsValue.js.map +1 -1
- package/lib/commonjs/qpqCoreUtils.d.ts +4 -1
- package/lib/commonjs/qpqCoreUtils.js +21 -2
- package/lib/commonjs/qpqCoreUtils.js.map +1 -1
- package/lib/commonjs/qpqCoreUtilsLib.d.ts +3 -0
- package/lib/commonjs/types/KvsStreamEvent.d.ts +14 -0
- package/lib/commonjs/types/KvsStreamEvent.js +16 -0
- package/lib/commonjs/types/KvsStreamEvent.js.map +1 -0
- package/lib/commonjs/types/StorySession.d.ts +1 -0
- package/lib/commonjs/types/StorySession.js +1 -0
- package/lib/commonjs/types/StorySession.js.map +1 -1
- package/lib/commonjs/types/index.d.ts +1 -0
- package/lib/commonjs/types/index.js +1 -0
- package/lib/commonjs/types/index.js.map +1 -1
- package/lib/esm/actions/crypto/CryptoActionType.d.ts +4 -0
- package/lib/esm/actions/crypto/CryptoActionType.js +6 -0
- package/lib/esm/actions/crypto/CryptoActionType.js.map +1 -0
- package/lib/esm/actions/crypto/CryptoContext.d.ts +1 -0
- package/lib/esm/actions/crypto/CryptoContext.js +2 -0
- package/lib/esm/actions/crypto/CryptoContext.js.map +1 -0
- package/lib/esm/actions/crypto/CryptoDecryptActionRequester.d.ts +10 -0
- package/lib/esm/actions/crypto/CryptoDecryptActionRequester.js +13 -0
- package/lib/esm/actions/crypto/CryptoDecryptActionRequester.js.map +1 -0
- package/lib/esm/actions/crypto/CryptoDecryptActionTypes.d.ts +14 -0
- package/lib/esm/actions/crypto/CryptoDecryptActionTypes.js +2 -0
- package/lib/esm/actions/crypto/CryptoDecryptActionTypes.js.map +1 -0
- package/lib/esm/actions/crypto/CryptoEncryptActionRequester.d.ts +8 -0
- package/lib/esm/actions/crypto/CryptoEncryptActionRequester.js +11 -0
- package/lib/esm/actions/crypto/CryptoEncryptActionRequester.js.map +1 -0
- package/lib/esm/actions/crypto/CryptoEncryptActionTypes.d.ts +14 -0
- package/lib/esm/actions/crypto/CryptoEncryptActionTypes.js +2 -0
- package/lib/esm/actions/crypto/CryptoEncryptActionTypes.js.map +1 -0
- package/lib/esm/actions/crypto/index.d.ts +6 -0
- package/lib/esm/actions/crypto/index.js +7 -0
- package/lib/esm/actions/crypto/index.js.map +1 -0
- package/lib/esm/actions/index.d.ts +1 -0
- package/lib/esm/actions/index.js +1 -0
- package/lib/esm/actions/index.js.map +1 -1
- package/lib/esm/actions/keyValueStore/KeyValueStoreActionType.d.ts +2 -1
- package/lib/esm/actions/keyValueStore/KeyValueStoreActionType.js +1 -0
- package/lib/esm/actions/keyValueStore/KeyValueStoreActionType.js.map +1 -1
- package/lib/esm/actions/keyValueStore/KeyValueStoreScanAllScopesActionRequester.d.ts +32 -0
- package/lib/esm/actions/keyValueStore/KeyValueStoreScanAllScopesActionRequester.js +43 -0
- package/lib/esm/actions/keyValueStore/KeyValueStoreScanAllScopesActionRequester.js.map +1 -0
- package/lib/esm/actions/keyValueStore/KeyValueStoreScanAllScopesActionTypes.d.ts +23 -0
- package/lib/esm/actions/keyValueStore/KeyValueStoreScanAllScopesActionTypes.js +2 -0
- package/lib/esm/actions/keyValueStore/KeyValueStoreScanAllScopesActionTypes.js.map +1 -0
- package/lib/esm/actions/keyValueStore/index.d.ts +2 -0
- package/lib/esm/actions/keyValueStore/index.js +2 -0
- package/lib/esm/actions/keyValueStore/index.js.map +1 -1
- package/lib/esm/actions/keyValueStore/types/KvsQueryOperation.d.ts +2 -2
- package/lib/esm/actions/keyValueStore/types/KvsQueryOperation.js.map +1 -1
- package/lib/esm/config/QPQConfig.d.ts +1 -0
- package/lib/esm/config/QPQConfig.js +1 -0
- package/lib/esm/config/QPQConfig.js.map +1 -1
- package/lib/esm/config/settings/cryptoKey.d.ts +9 -0
- package/lib/esm/config/settings/cryptoKey.js +9 -0
- package/lib/esm/config/settings/cryptoKey.js.map +1 -0
- package/lib/esm/config/settings/index.d.ts +1 -0
- package/lib/esm/config/settings/index.js +1 -0
- package/lib/esm/config/settings/index.js.map +1 -1
- package/lib/esm/config/settings/keyValueStore.d.ts +38 -1
- package/lib/esm/config/settings/keyValueStore.js +1 -0
- package/lib/esm/config/settings/keyValueStore.js.map +1 -1
- package/lib/esm/logic/scope/scopedKvsValue.d.ts +4 -0
- package/lib/esm/logic/scope/scopedKvsValue.js +17 -0
- package/lib/esm/logic/scope/scopedKvsValue.js.map +1 -1
- package/lib/esm/qpqCoreUtils.d.ts +4 -1
- package/lib/esm/qpqCoreUtils.js +16 -0
- package/lib/esm/qpqCoreUtils.js.map +1 -1
- package/lib/esm/qpqCoreUtilsLib.d.ts +3 -0
- package/lib/esm/types/KvsStreamEvent.d.ts +14 -0
- package/lib/esm/types/KvsStreamEvent.js +13 -0
- package/lib/esm/types/KvsStreamEvent.js.map +1 -0
- package/lib/esm/types/StorySession.d.ts +1 -0
- package/lib/esm/types/StorySession.js +1 -0
- package/lib/esm/types/StorySession.js.map +1 -1
- package/lib/esm/types/index.d.ts +1 -0
- package/lib/esm/types/index.js +1 -0
- package/lib/esm/types/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyValueStore.js","sourceRoot":"","sources":["../../../../src/config/settings/keyValueStore.ts"],"names":[],"mappings":";;;AACA,4CAAqG;AAmB9F,MAAM,MAAM,GAAG,CAAyB,GAAa,EAAE,OAAmB,QAAQ,EAAa,EAAE,CAAC,CAAC;IACxG,GAAG;IACH,IAAI;CACL,CAAC,CAAC;AAHU,QAAA,MAAM,UAGhB;AAWH,MAAM,8BAA8B,GAAG,CAAyB,eAAmC,EAAa,EAAE;IAChH,oBAAoB;IACpB,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,IAAA,cAAM,EAAI,eAA2B,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,sBAAsB;IACtB,OAAO,eAA4B,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,8CAA8C,GAAG,CACrD,iBAAuC,EACa,EAAE;IACtD,OAAO,OAAO,iBAAiB,KAAK,QAAQ,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,kCAAkC,GAAG,CAAyB,iBAAuC,EAAe,EAAE;IAC1H,IAAI,CAAC,8CAA8C,CAAI,iBAAiB,CAAC,EAAE,CAAC;QAC1E,OAAO;YACL,YAAY,EAAE,IAAA,cAAM,EAAI,iBAAiB,EAAE,QAAQ,CAAC;SACrD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,YAAY,EAAE,8BAA8B,CAAI,iBAAiB,CAAC,YAAY,CAAC;QAC/E,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;KAC9G,CAAC;AACJ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"keyValueStore.js","sourceRoot":"","sources":["../../../../src/config/settings/keyValueStore.ts"],"names":[],"mappings":";;;AACA,4CAAqG;AAmB9F,MAAM,MAAM,GAAG,CAAyB,GAAa,EAAE,OAAmB,QAAQ,EAAa,EAAE,CAAC,CAAC;IACxG,GAAG;IACH,IAAI;CACL,CAAC,CAAC;AAHU,QAAA,MAAM,UAGhB;AAWH,MAAM,8BAA8B,GAAG,CAAyB,eAAmC,EAAa,EAAE;IAChH,oBAAoB;IACpB,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,IAAA,cAAM,EAAI,eAA2B,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,sBAAsB;IACtB,OAAO,eAA4B,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,8CAA8C,GAAG,CACrD,iBAAuC,EACa,EAAE;IACtD,OAAO,OAAO,iBAAiB,KAAK,QAAQ,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,kCAAkC,GAAG,CAAyB,iBAAuC,EAAe,EAAE;IAC1H,IAAI,CAAC,8CAA8C,CAAI,iBAAiB,CAAC,EAAE,CAAC;QAC1E,OAAO;YACL,YAAY,EAAE,IAAA,cAAM,EAAI,iBAAiB,EAAE,QAAQ,CAAC;SACrD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,YAAY,EAAE,8BAA8B,CAAI,iBAAiB,CAAC,YAAY,CAAC;QAC/E,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;KAC9G,CAAC;AACJ,CAAC,CAAC;AA+EK,MAAM,mBAAmB,GAAG,CACjC,iBAAyB,EAEzB,YAAgC,EAChC,WAAiC,EAAE,EAEnC,OAAmD,EACjB,EAAE;;IAAC,OAAA,CAAC;QACtC,iBAAiB,EAAE,oCAAwB,CAAC,aAAa;QACzD,SAAS,EAAE,iBAAiB;QAE5B,iBAAiB;QAEjB,YAAY,EAAE,8BAA8B,CAAI,YAAY,CAAC;QAC7D,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA,8BAAiC,CAAA,CAAC;QAEzD,OAAO,EAAE,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA,kCAAqC,CAAA,CAAC;QAE5E,MAAM,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,KAAK;QAEhC,KAAK,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK;QAErB,YAAY,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY;QAEnC,0BAA0B,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,0BAA0B,mCAAI,KAAK;QAExE,UAAU,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,KAAK;QAExC,QAAQ,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ;KAC5B,CAAC,CAAA;CAAA,CAAC;AA7BU,QAAA,mBAAmB,uBA6B7B","sourcesContent":["import { CrossModuleOwner, KeyOf, QpqFunctionRuntime } from '../../types';\nimport { QPQConfigAdvancedSettings, QPQConfigSetting, QPQCoreConfigSettingType } from '../QPQConfig';\n\n// TODO: When we put validation on the QPQConfig, we need to make sure\n// Key Length and Data Type: DynamoDB has limitations on key length and data type.\n// Your KvsKeyType only supports 'string', 'number', and 'binary' types. Make sure\n// that you're validating these in convertKvsKeyToDynamodbAttribute function and\n// also ensure that key length is within DynamoDB's specified limits.\n\nexport type KvsKeyType = 'string' | 'number' | 'binary';\nexport type KvsKey<T extends object = any> = {\n key: KeyOf<T>;\n type: KvsKeyType;\n};\n\nexport type KvsIndex<T extends object = any> = {\n partitionKey: KvsKey<T>;\n sortKey?: KvsKey<T>;\n};\n\nexport const kvsKey = <T extends object = any>(key: KeyOf<T>, type: KvsKeyType = 'string'): KvsKey<T> => ({\n key,\n type,\n});\n\ntype CompositeKvsKey<T extends object = any> = KvsKey<T> | KeyOf<T>;\n\ntype CompositeCompositeKvsIndex<T extends object = any> = {\n partitionKey: CompositeKvsKey<T>;\n sortKey?: CompositeKvsKey<T>;\n};\n\nexport type CompositeKvsIndex<T extends object = any> = KeyOf<T> | CompositeCompositeKvsIndex<T>;\n\nconst convertCompositeKvsKeyToKvsKey = <T extends object = any>(compositeKvsKey: CompositeKvsKey<T>): KvsKey<T> => {\n // Must be a keyof T\n if (typeof compositeKvsKey === 'string') {\n return kvsKey<T>(compositeKvsKey as KeyOf<T>, 'string');\n }\n\n // must be a KvsKey<T>\n return compositeKvsKey as KvsKey<T>;\n};\n\nconst isCompositeKvsIndexACompositeCompositeKvsIndex = <T extends object = any>(\n compositeKvsIndex: CompositeKvsIndex<T>,\n): compositeKvsIndex is CompositeCompositeKvsIndex<T> => {\n return typeof compositeKvsIndex !== 'string';\n};\n\nconst convertCompositeKvsIndexToKvsIndex = <T extends object = any>(compositeKvsIndex: CompositeKvsIndex<T>): KvsIndex<T> => {\n if (!isCompositeKvsIndexACompositeCompositeKvsIndex<T>(compositeKvsIndex)) {\n return {\n partitionKey: kvsKey<T>(compositeKvsIndex, 'string'),\n };\n }\n\n return {\n partitionKey: convertCompositeKvsKeyToKvsKey<T>(compositeKvsIndex.partitionKey),\n sortKey: compositeKvsIndex.sortKey ? convertCompositeKvsKeyToKvsKey<T>(compositeKvsIndex.sortKey) : undefined,\n };\n};\n\n/**\n * Change data capture on a store: the table gets a stream (NEW_AND_OLD_IMAGES) and\n * `runtime` is invoked with the changes.\n *\n * Records arrive in order PER PARTITION KEY, and different partition keys are processed\n * concurrently. A stream handler therefore gets one-writer-per-item serialisation for\n * free, which is what makes a stream the natural place to maintain a projection of a table\n * you only ever append to — no queue, no extra write on the append path, and no trigger to\n * lose, because the record exists precisely because the write happened.\n *\n * Mirrors defineStorageDrive's `onEvent`.\n */\nexport type KvsStreamSettings = {\n runtime: QpqFunctionRuntime;\n\n /**\n * Collapse each delivered batch down to ONE record per partition key, keeping the latest.\n *\n * Off by default: a generic consumer (audit trail, change notifications) needs to see\n * every change, and the framework should never silently drop records.\n *\n * On for a PROJECTION, where the payload that matters is \"this key changed\" and the\n * handler re-derives from source anyway. Without it, the batch is fanned back out into\n * one story run per record and the batching bought nothing: 500 appends to one document\n * would mean 500 re-derivations, each reading a log that grows as it goes. With it, that\n * batch is a single re-derivation.\n */\n coalesceByPartitionKey?: boolean;\n\n /** Records per invocation. DynamoDB streams allow up to 1000; the mapping default is 100. */\n batchSize?: number;\n\n /**\n * How long to wait accumulating records before invoking, 0 to 300 seconds. Trades\n * projection latency for far fewer invocations, and gives coalescing more to collapse.\n */\n maximumBatchingWindowInSeconds?: number;\n};\n\nexport interface QPQConfigAdvancedKeyValueStoreSettings<T extends object = any> extends QPQConfigAdvancedSettings {\n indexes?: CompositeKvsIndex<T>[];\n\n global?: boolean;\n\n owner?: CrossModuleOwner;\n\n ttlAttribute?: string;\n\n // Point-in-time recovery (35-day continuous backups) is on by default; set this to opt out.\n disablePointInTimeRecovery?: boolean;\n\n encryption?: boolean;\n\n // Turn on change data capture — see KvsStreamSettings. Absent means no stream is\n // created at all.\n onStream?: KvsStreamSettings;\n}\n\nexport interface KeyValueStoreQPQConfigSetting<T extends object = any> extends QPQConfigSetting {\n keyValueStoreName: string;\n\n partitionKey: KvsKey<T>;\n sortKeys: KvsKey<T>[];\n\n indexes: KvsIndex<T>[];\n\n global: boolean;\n\n ttlAttribute?: string;\n\n disablePointInTimeRecovery: boolean;\n\n encryption: boolean;\n\n onStream?: KvsStreamSettings;\n}\n\nexport const defineKeyValueStore = <T extends object = any>(\n keyValueStoreName: string,\n\n partitionKey: CompositeKvsKey<T>,\n sortKeys: CompositeKvsKey<T>[] = [],\n\n options?: QPQConfigAdvancedKeyValueStoreSettings<T>,\n): KeyValueStoreQPQConfigSetting<T> => ({\n configSettingType: QPQCoreConfigSettingType.keyValueStore,\n uniqueKey: keyValueStoreName,\n\n keyValueStoreName,\n\n partitionKey: convertCompositeKvsKeyToKvsKey<T>(partitionKey),\n sortKeys: sortKeys.map(convertCompositeKvsKeyToKvsKey<T>),\n\n indexes: (options?.indexes ?? []).map(convertCompositeKvsIndexToKvsIndex<T>),\n\n global: options?.global ?? false,\n\n owner: options?.owner,\n\n ttlAttribute: options?.ttlAttribute,\n\n disablePointInTimeRecovery: options?.disablePointInTimeRecovery ?? false,\n\n encryption: options?.encryption ?? false,\n\n onStream: options?.onStream,\n});\n"]}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { KvsCoreDataType, KvsQueryCondition } from '../../actions/keyValueStore/types';
|
|
2
2
|
export declare const KVS_SCOPE_DELIMITER = "@@QPQSCOPE@@";
|
|
3
3
|
export declare function composeScopedKvsValue(scope: string | undefined, rawValue: KvsCoreDataType): KvsCoreDataType;
|
|
4
|
+
export declare const decomposeScopedKvsValue: (composedValue: string) => {
|
|
5
|
+
scope?: string;
|
|
6
|
+
rawValue: string;
|
|
7
|
+
};
|
|
4
8
|
export declare function validateRawPkValueForScopeOrThrow(rawValue: KvsCoreDataType): void;
|
|
5
9
|
export declare function stripScopedKvsValue(scope: string | undefined, storedValue: KvsCoreDataType): KvsCoreDataType;
|
|
6
10
|
export declare function validateScopeSupportedForPartitionKeyType(partitionKeyType: string): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.KVS_SCOPE_DELIMITER = void 0;
|
|
3
|
+
exports.decomposeScopedKvsValue = exports.KVS_SCOPE_DELIMITER = void 0;
|
|
4
4
|
exports.composeScopedKvsValue = composeScopedKvsValue;
|
|
5
5
|
exports.validateRawPkValueForScopeOrThrow = validateRawPkValueForScopeOrThrow;
|
|
6
6
|
exports.stripScopedKvsValue = stripScopedKvsValue;
|
|
@@ -31,6 +31,24 @@ function composeScopedKvsValue(scope, rawValue) {
|
|
|
31
31
|
validateRawPkValueForScopeOrThrow(rawValue);
|
|
32
32
|
return `${scope}${exports.KVS_SCOPE_DELIMITER}${rawValue}`;
|
|
33
33
|
}
|
|
34
|
+
// The inverse of composeScopedKvsValue: split a stored partition key value back into the
|
|
35
|
+
// scope it was written under and the caller's raw key.
|
|
36
|
+
//
|
|
37
|
+
// Needed by anything reading a RAW stored key rather than going through a scoped request.
|
|
38
|
+
// Change data capture is the case that forced it: a stream record carries the composed pk,
|
|
39
|
+
// and the consumer has to re-enter the same scope before it can act on the item. An
|
|
40
|
+
// unscoped value has no delimiter and comes back with `scope: undefined`.
|
|
41
|
+
const decomposeScopedKvsValue = (composedValue) => {
|
|
42
|
+
const at = composedValue.indexOf(exports.KVS_SCOPE_DELIMITER);
|
|
43
|
+
if (at < 0) {
|
|
44
|
+
return { rawValue: composedValue };
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
scope: composedValue.slice(0, at),
|
|
48
|
+
rawValue: composedValue.slice(at + exports.KVS_SCOPE_DELIMITER.length),
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
exports.decomposeScopedKvsValue = decomposeScopedKvsValue;
|
|
34
52
|
// The delimiter is reserved in scoped partition-key values: a raw value
|
|
35
53
|
// carrying it would strip ambiguously and could collide with (or forge)
|
|
36
54
|
// another scope's composed rows. File-partitioned backends call this directly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopedKvsValue.js","sourceRoot":"","sources":["../../../../src/logic/scope/scopedKvsValue.ts"],"names":[],"mappings":";;;AAeA,sDAcC;
|
|
1
|
+
{"version":3,"file":"scopedKvsValue.js","sourceRoot":"","sources":["../../../../src/logic/scope/scopedKvsValue.ts"],"names":[],"mappings":"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","sourcesContent":["import { KvsCoreDataType, KvsQueryCondition, KvsQueryOperationType } from '../../actions/keyValueStore/types';\nimport { InvalidScopeError, InvalidScopeErrorCode } from './InvalidScopeError';\nimport { validateScopeSegment } from './validateScopeSegment';\n\n// The delimiter must never occur in legitimate partition key data, because raw\n// values carrying it are rejected outright (see below). '::' is unusable: it is\n// qpq's own function-runtime separator ('src/path::method') and appears inside\n// correlation ids, which the log service stores as partition keys. So the\n// delimiter is a loud qpq-namespaced sentinel instead of a short punctuation\n// token.\nexport const KVS_SCOPE_DELIMITER = '@@QPQSCOPE@@';\n\n// Compose a scope into a partition key value: `${scope}${KVS_SCOPE_DELIMITER}${rawValue}`. Only\n// string keys can carry a scope - a number/binary pk has nowhere to embed the\n// prefix, so scoping such a store is rejected rather than silently coerced.\nexport function composeScopedKvsValue(scope: string | undefined, rawValue: KvsCoreDataType): KvsCoreDataType {\n if (scope === undefined) {\n return rawValue;\n }\n\n validateScopeSegment(scope);\n\n if (typeof rawValue !== 'string') {\n throw new InvalidScopeError(InvalidScopeErrorCode.unsafeCharacters, 'Scope is only supported on string partition key values.');\n }\n\n validateRawPkValueForScopeOrThrow(rawValue);\n\n return `${scope}${KVS_SCOPE_DELIMITER}${rawValue}`;\n}\n\n// The inverse of composeScopedKvsValue: split a stored partition key value back into the\n// scope it was written under and the caller's raw key.\n//\n// Needed by anything reading a RAW stored key rather than going through a scoped request.\n// Change data capture is the case that forced it: a stream record carries the composed pk,\n// and the consumer has to re-enter the same scope before it can act on the item. An\n// unscoped value has no delimiter and comes back with `scope: undefined`.\nexport const decomposeScopedKvsValue = (composedValue: string): { scope?: string; rawValue: string } => {\n const at = composedValue.indexOf(KVS_SCOPE_DELIMITER);\n\n if (at < 0) {\n return { rawValue: composedValue };\n }\n\n return {\n scope: composedValue.slice(0, at),\n rawValue: composedValue.slice(at + KVS_SCOPE_DELIMITER.length),\n };\n};\n\n// The delimiter is reserved in scoped partition-key values: a raw value\n// carrying it would strip ambiguously and could collide with (or forge)\n// another scope's composed rows. File-partitioned backends call this directly\n// for parity - they store values raw, but a value prod rejects must fail\n// locally too.\nexport function validateRawPkValueForScopeOrThrow(rawValue: KvsCoreDataType): void {\n if (typeof rawValue === 'string' && rawValue.includes(KVS_SCOPE_DELIMITER)) {\n throw new InvalidScopeError(\n InvalidScopeErrorCode.reservedDelimiter,\n `Partition key values must not contain the scope delimiter '${KVS_SCOPE_DELIMITER}'.`,\n );\n }\n}\n\n// Undo composeScopedKvsValue on a value read back from storage, so callers\n// never see the composed form. A stored value that doesn't carry the expected\n// prefix is returned unchanged (it was written unscoped).\nexport function stripScopedKvsValue(scope: string | undefined, storedValue: KvsCoreDataType): KvsCoreDataType {\n if (scope === undefined || typeof storedValue !== 'string') {\n return storedValue;\n }\n\n const prefix = `${scope}${KVS_SCOPE_DELIMITER}`;\n return storedValue.startsWith(prefix) ? storedValue.slice(prefix.length) : storedValue;\n}\n\n// Scope composes into the partition key's stored string value, so a store whose\n// partition key is number/binary-typed cannot be scoped at all - reject before\n// any read/write happens rather than silently matching nothing.\nexport function validateScopeSupportedForPartitionKeyType(partitionKeyType: string): void {\n if (partitionKeyType !== 'string') {\n throw new InvalidScopeError(\n InvalidScopeErrorCode.unsafeCharacters,\n `Scope is only supported on stores with a string partition key (got '${partitionKeyType}').`,\n );\n }\n}\n\n// The inverse guard for UNSCOPED Scan / GetAll on a value-composed backend:\n// exclude rows whose pk carries the scope delimiter, so unscoped listings never\n// leak other scopes' (composed) rows. File-partitioned backends get this for\n// free from the file boundary.\nexport function buildKvsScopeExclusionCondition(pkAttributeName: string): KvsQueryCondition {\n return {\n key: pkAttributeName,\n operation: KvsQueryOperationType.NotContains,\n valueA: KVS_SCOPE_DELIMITER,\n };\n}\n\n// A begins-with predicate on the partition key attribute, for enforcing scope\n// on operations that have no key condition (Scan / GetAll).\nexport function buildKvsScopeBeginsWithCondition(pkAttributeName: string, scope: string): KvsQueryCondition {\n validateScopeSegment(scope);\n\n return {\n key: pkAttributeName,\n operation: KvsQueryOperationType.BeginsWith,\n valueA: `${scope}${KVS_SCOPE_DELIMITER}`,\n };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AiQPQConfigSetting, ApplicationQPQConfigSetting, BackendBundleOptions, ClaudeAIQPQConfigSetting, DeployEventsQPQConfigSetting, EmailTemplates, EventBusQPQConfigSetting, FederatedModuleStoreQPQConfigSetting, FrontendBundleOptions, GraphDatabaseQPQConfigSetting, InlineFunctionQPQConfigSetting, JavascriptRuntimeQPQConfigSetting, KeyValueStoreQPQConfigSetting, NotifyErrorQPQConfigSetting, ParameterQPQConfigSetting, QPQConfig, QPQConfigSetting, QpqQueueProcessors, QueueQPQConfigSetting, ScheduleQPQConfigSetting, SecretQPQConfigSetting, StorageDriveQPQConfigSetting, UserDirectoryQPQConfigSetting, VirtualNetworkQPQConfigSetting } from './config';
|
|
1
|
+
import { AiQPQConfigSetting, ApplicationQPQConfigSetting, BackendBundleOptions, ClaudeAIQPQConfigSetting, CryptoKeyQPQConfigSetting, DeployEventsQPQConfigSetting, EmailTemplates, EventBusQPQConfigSetting, FederatedModuleStoreQPQConfigSetting, FrontendBundleOptions, GraphDatabaseQPQConfigSetting, InlineFunctionQPQConfigSetting, JavascriptRuntimeQPQConfigSetting, KeyValueStoreQPQConfigSetting, NotifyErrorQPQConfigSetting, ParameterQPQConfigSetting, QPQConfig, QPQConfigSetting, QpqQueueProcessors, QueueQPQConfigSetting, ScheduleQPQConfigSetting, SecretQPQConfigSetting, StorageDriveQPQConfigSetting, UserDirectoryQPQConfigSetting, VirtualNetworkQPQConfigSetting } from './config';
|
|
2
2
|
import { ConfigUrl, CrossServiceResourceName, CustomFullyQualifiedResource, FullyQualifiedResource, QpqFunctionRuntime, ResourceName } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* Flattens a QPQConfig array into a single array of QPQConfigSetting objects.
|
|
@@ -80,6 +80,9 @@ export declare const getSrcFilenameFromQpqFunctionRuntime: (qpqFunctionRuntime:
|
|
|
80
80
|
export declare const getSecretByName: (secretName: string, qpqConfig: QPQConfig) => SecretQPQConfigSetting;
|
|
81
81
|
export declare const getAllSecretConfigs: (qpqConfig: QPQConfig) => SecretQPQConfigSetting[];
|
|
82
82
|
export declare const getOwnedSecrets: (qpqConfig: QPQConfig) => SecretQPQConfigSetting[];
|
|
83
|
+
export declare const getCryptoKeyByName: (cryptoKeyName: string, qpqConfig: QPQConfig) => CryptoKeyQPQConfigSetting;
|
|
84
|
+
export declare const getAllCryptoKeyConfigs: (qpqConfig: QPQConfig) => CryptoKeyQPQConfigSetting[];
|
|
85
|
+
export declare const getOwnedCryptoKeys: (qpqConfig: QPQConfig) => CryptoKeyQPQConfigSetting[];
|
|
83
86
|
export declare const getGlobalConfigValue: <T>(qpqConfig: QPQConfig, name: string) => T;
|
|
84
87
|
export declare const resolveGlobalValue: <T>(qpqConfig: QPQConfig, functionGlobals: Record<string, unknown> | undefined, name: string) => T;
|
|
85
88
|
export declare const getUserDirectories: (configs: QPQConfig) => UserDirectoryQPQConfigSetting[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.getFullUrlFromConfigUrl = exports.isSameResource = exports.getKeyValueStoreFullyQualifiedResourceName = exports.getFullyQualifiedResourceName = exports.convertCustomFullyQualifiedResourceToGeneric = exports.getQueueQueueProcessors = exports.getQueueConfigSettingByName = exports.getUniqueKeyForSetting = exports.getFrontendBundleOptions = exports.getBackendBundleOptions = exports.getOwnedParameterConfigs = exports.getParameterConfig = exports.getAllParameterConfigs = exports.getUserDirectoryByName = exports.getOwnedUserDirectories = exports.getUserDirectories = exports.resolveGlobalValue = void 0;
|
|
3
|
+
exports.getCryptoKeyByName = exports.getOwnedSecrets = exports.getAllSecretConfigs = exports.getSecretByName = exports.getSrcFilenameFromQpqFunctionRuntime = exports.getApiBuildPath = exports.getAllSrcEntries = exports.getOwnedInlineFunctions = exports.getAllInlineFunctions = exports.getUserDirectorySrcEntries = exports.getQueueSrcEntries = exports.getOwnedScheduleEvents = exports.getScheduleEvents = exports.getUserDirectoryEmailTemplates = exports.getActionProcessorSources = exports.getKeyValueStoreByName = exports.resolveCrossServiceResourceName = exports.getOwnedStorageDrives = exports.getOwnedGraphDatabases = exports.getOwnedKeyValueStores = exports.getVirualNetworkConfigs = exports.getDeployEventConfigs = exports.getAllGraphDatabaseConfigs = exports.getAllKeyValueStores = exports.getOwnedItems = exports.getEventBusConfigByName = exports.getOwnedEventBusConfigs = exports.getAllClaudeAiConfigs = exports.getJavascriptRuntimeConfig = exports.getAllAiConfigs = exports.getAllEventBusConfigs = exports.getStorageDriveNames = exports.assertFifoQueueEventBusSubscriptionsAreValid = exports.getQueueByName = exports.getNotifyErrorConfigs = exports.getOwnedQueues = exports.getQueues = exports.getFederatedModuleStore = exports.getStorageDriveByName = exports.getStorageDrives = exports.getApplicationModuleEnvironment = exports.getConfigRoot = exports.getApplicationModuleFeature = exports.getApplicationName = exports.getApplicationConfigRoot = exports.getApplicationModuleName = exports.getApplicationConfigSetting = exports.getConfigSetting = exports.getConfigSettings = exports.flattenQpqConfig = void 0;
|
|
4
|
+
exports.getFullUrlFromConfigUrl = exports.isSameResource = exports.getKeyValueStoreFullyQualifiedResourceName = exports.getFullyQualifiedResourceName = exports.convertCustomFullyQualifiedResourceToGeneric = exports.getQueueQueueProcessors = exports.getQueueConfigSettingByName = exports.getUniqueKeyForSetting = exports.getFrontendBundleOptions = exports.getBackendBundleOptions = exports.getOwnedParameterConfigs = exports.getParameterConfig = exports.getAllParameterConfigs = exports.getUserDirectoryByName = exports.getOwnedUserDirectories = exports.getUserDirectories = exports.resolveGlobalValue = exports.getGlobalConfigValue = exports.getOwnedCryptoKeys = exports.getAllCryptoKeyConfigs = void 0;
|
|
5
5
|
const config_1 = require("./config");
|
|
6
6
|
const utils_1 = require("./utils");
|
|
7
7
|
/**
|
|
@@ -362,6 +362,25 @@ const getOwnedSecrets = (qpqConfig) => {
|
|
|
362
362
|
return (0, exports.getOwnedItems)(secrets, qpqConfig);
|
|
363
363
|
};
|
|
364
364
|
exports.getOwnedSecrets = getOwnedSecrets;
|
|
365
|
+
const getCryptoKeyByName = (cryptoKeyName, qpqConfig) => {
|
|
366
|
+
const cryptoKeys = (0, exports.getConfigSettings)(qpqConfig, config_1.QPQCoreConfigSettingType.cryptoKey);
|
|
367
|
+
const cryptoKey = cryptoKeys.find((k) => k.keyName === cryptoKeyName);
|
|
368
|
+
if (!cryptoKey) {
|
|
369
|
+
throw new Error(`Can not find crypto key [${cryptoKeyName}]`);
|
|
370
|
+
}
|
|
371
|
+
return cryptoKey;
|
|
372
|
+
};
|
|
373
|
+
exports.getCryptoKeyByName = getCryptoKeyByName;
|
|
374
|
+
const getAllCryptoKeyConfigs = (qpqConfig) => {
|
|
375
|
+
const cryptoKeys = (0, exports.getConfigSettings)(qpqConfig, config_1.QPQCoreConfigSettingType.cryptoKey);
|
|
376
|
+
return cryptoKeys;
|
|
377
|
+
};
|
|
378
|
+
exports.getAllCryptoKeyConfigs = getAllCryptoKeyConfigs;
|
|
379
|
+
const getOwnedCryptoKeys = (qpqConfig) => {
|
|
380
|
+
const cryptoKeys = (0, exports.getAllCryptoKeyConfigs)(qpqConfig);
|
|
381
|
+
return (0, exports.getOwnedItems)(cryptoKeys, qpqConfig);
|
|
382
|
+
};
|
|
383
|
+
exports.getOwnedCryptoKeys = getOwnedCryptoKeys;
|
|
365
384
|
const getGlobalConfigValue = (qpqConfig, name) => {
|
|
366
385
|
const global = (0, exports.getConfigSettings)(qpqConfig, config_1.QPQCoreConfigSettingType.global).find((g) => g.key === name);
|
|
367
386
|
if (!global) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qpqCoreUtils.js","sourceRoot":"","sources":["../../src/qpqCoreUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ActionProcessorsQPQConfigSetting,\n AiQPQConfigSetting,\n ApiBuildPathQPQConfigSetting,\n ApplicationQPQConfigSetting,\n BackendBundleOptions,\n BackendBundleOptionsQPQConfigSetting,\n ClaudeAIQPQConfigSetting,\n defineJavascriptRuntime,\n DeployEventsQPQConfigSetting,\n EmailTemplates,\n EnvironmentSettingsQPQConfigSetting,\n EventBusQPQConfigSetting,\n FederatedModuleStoreQPQConfigSetting,\n FrontendBundleOptions,\n FrontendBundleOptionsQPQConfigSetting,\n GlobalQPQConfigSetting,\n GraphDatabaseQPQConfigSetting,\n InlineFunctionQPQConfigSetting,\n JavascriptRuntimeQPQConfigSetting,\n KeyValueStoreQPQConfigSetting,\n ModuleQPQConfigSetting,\n NotifyErrorQPQConfigSetting,\n ParameterQPQConfigSetting,\n QPQConfig,\n QPQConfigItem,\n QPQConfigSetting,\n QPQCoreConfigSettingType,\n QpqQueueProcessors,\n QueueQPQConfigSetting,\n ScheduleQPQConfigSetting,\n SecretQPQConfigSetting,\n ServiceSettingsQPQConfigSetting,\n StorageDriveQPQConfigSetting,\n UserDirectoryQPQConfigSetting,\n VirtualNetworkQPQConfigSetting,\n} from './config';\nimport {\n ConfigUrl,\n CrossModuleOwner,\n CrossServiceResourceName,\n CustomFullyQualifiedResource,\n FullyQualifiedResource,\n KeyOf,\n QpqFunctionRuntime,\n ResourceName,\n} from './types';\nimport { isQpqFunctionRuntimeAdvanced } from './utils';\n\n/**\n * Flattens a QPQConfig array into a single array of QPQConfigSetting objects.\n * If a QPQConfigItem has a configSettingType of QPQCoreConfigSettingType.environmentSettings,\n * and its environment matches the current environment, its settings will be added to the flattened array.\n * @function\n * @param {QPQConfig} qpqConfig - The input QPQConfig array to be flattened.\n * @returns {QPQConfigSetting[]} - The flattened array of QPQConfigSetting objects\n */\nexport const flattenQpqConfig = (qpqConfig: QPQConfig): QPQConfigSetting[] => {\n let environment = 'development';\n let service: string | undefined;\n\n /**\n * A recursive helper function that flattens an array of QPQConfigItem objects.\n * @function\n * @param {QPQConfigItem[]} configItems - An array of QPQConfigItem objects to be flattened.\n * @param {QPQConfigSetting[]} accumulator - An accumulator array for storing the flattened QPQConfigSetting objects.\n * @returns {QPQConfigSetting[]} - The flattened array of QPQConfigSetting objects.\n */\n const flatten = (configItems: QPQConfigItem[], accumulator: QPQConfigSetting[] = []): QPQConfigSetting[] => {\n return configItems.reduce<QPQConfigSetting[]>((acc, item) => {\n if (Array.isArray(item)) {\n return flatten(item, acc);\n } else {\n // If its a appName config item, update the environment variable\n if (item.configSettingType === QPQCoreConfigSettingType.appName) {\n environment = (item as ApplicationQPQConfigSetting).environment || 'development';\n }\n\n // If its a moduleName config item, update the service variable\n else if (item.configSettingType === QPQCoreConfigSettingType.moduleName) {\n service = (item as ModuleQPQConfigSetting).moduleName;\n }\n\n // Otherwise if its an environmentSettings config item, flatten out the child settings\n // for the current environment, falling back to the '*' key if present.\n else if (item.configSettingType === QPQCoreConfigSettingType.environmentSettings) {\n const envSetting = item as EnvironmentSettingsQPQConfigSetting;\n const settings = envSetting.settingsByEnvironment[environment] ?? envSetting.settingsByEnvironment['*'] ?? [];\n\n return flatten(settings, acc);\n }\n\n // Otherwise if its a serviceSettings config item, flatten out the child settings\n // for the current service, falling back to the '*' key if present.\n else if (item.configSettingType === QPQCoreConfigSettingType.serviceSettings) {\n if (!service) {\n throw new Error('defineServiceSettings requires a module to be set first via defineModule (usually through defineApplicationModule)');\n }\n\n const svcSetting = item as ServiceSettingsQPQConfigSetting;\n const settings = svcSetting.settingsByService[service] ?? svcSetting.settingsByService['*'] ?? [];\n\n return flatten(settings, acc);\n }\n\n // Otherwise its just a regular config item, add it to the list\n return [...acc, item];\n }\n }, accumulator);\n };\n\n return flatten(qpqConfig);\n};\n\n/**\n * Filters and returns the config settings of a specific type from a QPQConfig array.\n * @function\n * @template T - The specific type of QPQConfigSetting to filter.\n * @param {QPQConfig} qpqConfig - The input QPQConfig array.\n * @param {string} configSettingType - The specific config setting type to filter.\n * @returns {T[]} - An array of filtered config settings of the specified type.\n */\nexport const getConfigSettings = <T extends QPQConfigSetting>(qpqConfig: QPQConfig, configSettingType: string): T[] => {\n const flatConfig = flattenQpqConfig(qpqConfig);\n return flatConfig.filter((c) => c.configSettingType === configSettingType) as T[];\n};\n\n/**\n * Retrieves a single config setting of a specific type from a QPQConfig array.\n * @function\n * @template T - The specific type of QPQConfigSetting to retrieve.\n * @param {QPQConfig} qpqConfig - The input QPQConfig array.\n * @param {string} serviceInfrastructureConfigType - The specific config setting type to retrieve.\n * @returns {T | undefined} - The found config setting of the specified type or undefined if not found.\n */\nexport const getConfigSetting = <T extends QPQConfigSetting>(qpqConfig: QPQConfig, serviceInfrastructureConfigType: string): T | undefined => {\n const [setting] = getConfigSettings<T>(qpqConfig, serviceInfrastructureConfigType);\n return setting;\n};\n\n/**\n * Retrieves the ApplicationModuleSetting from a QPQConfig array.\n * @function\n * @param {QPQConfig} qpqConfig - The input QPQConfig array.\n * @returns {ApplicationQPQConfigSetting} - The ApplicationQPQConfigSetting from the QPQConfig array.\n * @throws {Error} - If the ApplicationQPQConfigSetting is not found in the QPQConfig array.\n */\nexport const getApplicationConfigSetting = (qpqConfig: QPQConfig): ApplicationQPQConfigSetting => {\n const applicationModuleSetting = getConfigSetting<ApplicationQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.appName);\n\n if (!applicationModuleSetting) {\n throw new Error('please use defineApplication in your QPQ config');\n }\n\n return applicationModuleSetting;\n};\n\nexport const getApplicationModuleName = (qpqConfig: QPQConfig): string => {\n const moduleSetting = getConfigSetting<ModuleQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.moduleName);\n\n if (!moduleSetting) {\n throw new Error('please use defineModule in your QPQ config');\n }\n\n return moduleSetting.moduleName;\n};\n\nexport const getApplicationConfigRoot = (qpqConfig: QPQConfig): string => {\n const moduleSetting = getConfigSetting<ApplicationQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.appName);\n\n if (!moduleSetting) {\n throw new Error('please use defineApplication in your QPQ config');\n }\n\n return moduleSetting.configRoot;\n};\n\nexport const getApplicationName = (qpqConfig: QPQConfig): string => {\n return getApplicationConfigSetting(qpqConfig).applicationName;\n};\n\nexport const getApplicationModuleFeature = (qpqConfig: QPQConfig): string | undefined => {\n return getApplicationConfigSetting(qpqConfig).feature;\n};\n\nexport const getConfigRoot = (qpqConfig: QPQConfig): string => {\n return getApplicationConfigSetting(qpqConfig).configRoot;\n};\n\nexport const getApplicationModuleEnvironment = (qpqConfig: QPQConfig): string => {\n return getApplicationConfigSetting(qpqConfig).environment || 'production';\n};\n\nexport const getStorageDrives = (configs: QPQConfig): StorageDriveQPQConfigSetting[] => {\n return getConfigSettings<StorageDriveQPQConfigSetting>(configs, QPQCoreConfigSettingType.storageDrive);\n};\n\nexport const getStorageDriveByName = (storageDriveName: string, configs: QPQConfig): StorageDriveQPQConfigSetting | undefined => {\n return getStorageDrives(configs).find((sd) => sd.storageDrive === storageDriveName);\n};\n\nexport const getFederatedModuleStore = (qpqConfig: QPQConfig): FederatedModuleStoreQPQConfigSetting | undefined => {\n return getConfigSetting<FederatedModuleStoreQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.federatedModuleStore);\n};\n\nexport const getQueues = (configs: QPQConfig): QueueQPQConfigSetting[] => {\n return getConfigSettings<QueueQPQConfigSetting>(configs, QPQCoreConfigSettingType.queue);\n};\n\nexport const getOwnedQueues = (configs: QPQConfig): QueueQPQConfigSetting[] => {\n return getOwnedItems(getQueues(configs), configs);\n};\n\nexport const getNotifyErrorConfigs = (configs: QPQConfig): NotifyErrorQPQConfigSetting[] => {\n return getConfigSettings<NotifyErrorQPQConfigSetting>(configs, QPQCoreConfigSettingType.notifyError);\n};\n\nexport const getQueueByName = (configs: QPQConfig, name: string): QueueQPQConfigSetting | undefined => {\n return getQueues(configs).find((q) => q.name === name);\n};\n\n// A FIFO queue can only be fed by a FIFO event bus - standard SNS topics cannot deliver\n// to FIFO SQS queues at all. Called at deploy/startup time (the queue and bus are separate\n// settings, so defineQueue can't validate this on its own).\nexport const assertFifoQueueEventBusSubscriptionsAreValid = (qpqConfig: QPQConfig): void => {\n const invalidSubscriptions = getQueues(qpqConfig)\n .filter((queue) => queue.isFifo)\n .flatMap((queue) =>\n queue.eventBusSubscriptions\n .filter((eventBusName) => !getEventBusConfigByName(eventBusName, qpqConfig)?.isFifo)\n .map((eventBusName) => `queue [${queue.name}] -> event bus [${eventBusName}]`),\n );\n\n if (invalidSubscriptions.length > 0) {\n throw new Error(\n `FIFO queues can only subscribe to FIFO event buses (standard SNS topics cannot deliver to FIFO SQS queues): ${invalidSubscriptions.join(', ')}`,\n );\n }\n};\n\nexport const getStorageDriveNames = (configs: QPQConfig): string[] => {\n const storageDriveNames = getConfigSettings<StorageDriveQPQConfigSetting>(configs, QPQCoreConfigSettingType.storageDrive).map(\n (sd) => sd.storageDrive,\n );\n\n return storageDriveNames;\n};\n\nexport const getAllEventBusConfigs = (qpqConfig: QPQConfig): EventBusQPQConfigSetting[] => {\n const eventBuses = getConfigSettings<EventBusQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.eventBus);\n\n return eventBuses;\n};\n\nexport const getAllAiConfigs = (qpqConfig: QPQConfig): AiQPQConfigSetting[] => {\n return getConfigSettings<AiQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.ai);\n};\n\n// Always resolves - falls back to the defineJavascriptRuntime defaults when no setting is present\nexport const getJavascriptRuntimeConfig = (qpqConfig: QPQConfig): JavascriptRuntimeQPQConfigSetting => {\n return getConfigSetting<JavascriptRuntimeQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.javascriptRuntime) ?? defineJavascriptRuntime();\n};\n\nexport const getAllClaudeAiConfigs = (qpqConfig: QPQConfig): ClaudeAIQPQConfigSetting[] => {\n const claudeAis = getConfigSettings<ClaudeAIQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.claudeAi);\n\n return claudeAis;\n};\n\nexport const getOwnedEventBusConfigs = (qpqConfig: QPQConfig): EventBusQPQConfigSetting[] => {\n const ownedEventBusConfigs = getOwnedItems(getAllEventBusConfigs(qpqConfig), qpqConfig);\n\n return ownedEventBusConfigs;\n};\n\nexport const getEventBusConfigByName = (eventBusName: string, qpqConfig: QPQConfig): EventBusQPQConfigSetting | undefined => {\n const allConfigs = getAllEventBusConfigs(qpqConfig);\n\n const eventBusConfig = allConfigs.find((eb) => eb.owner?.resourceNameOverride === eventBusName);\n\n if (eventBusConfig) {\n return eventBusConfig;\n }\n\n return allConfigs.find((eb) => eb.name === eventBusName);\n};\n\nexport const getOwnedItems = <T extends QPQConfigSetting>(settings: T[], qpqConfig: QPQConfig): T[] => {\n const appModuleName = getApplicationModuleName(qpqConfig);\n const appName = getApplicationName(qpqConfig);\n const appFeature = getApplicationModuleFeature(qpqConfig);\n const appEnvironment = getApplicationModuleEnvironment(qpqConfig);\n\n return settings.filter(\n (s) =>\n !s.owner ||\n ((!s.owner.module || s.owner.module === appModuleName) &&\n (!s.owner.application || s.owner.application === appName) &&\n (s.owner.feature === undefined || (!s.owner.feature && !appFeature) || s.owner.feature === appFeature) &&\n (!s.owner.environment || s.owner.environment === appEnvironment)),\n );\n};\n\nexport const getAllKeyValueStores = <T extends object = any>(qpqConfig: QPQConfig): KeyValueStoreQPQConfigSetting<T>[] => {\n const keyValueStores = getConfigSettings<KeyValueStoreQPQConfigSetting<T>>(qpqConfig, QPQCoreConfigSettingType.keyValueStore);\n\n return keyValueStores;\n};\n\nexport const getAllGraphDatabaseConfigs = (qpqConfig: QPQConfig): GraphDatabaseQPQConfigSetting[] => {\n const graphDatabases = getConfigSettings<GraphDatabaseQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.graphDatabase);\n\n return graphDatabases;\n};\n\nexport const getDeployEventConfigs = (qpqConfig: QPQConfig): DeployEventsQPQConfigSetting[] => {\n const deployEvents = getConfigSettings<DeployEventsQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.deployEvent);\n\n return deployEvents;\n};\n\nexport const getVirualNetworkConfigs = (qpqConfig: QPQConfig): VirtualNetworkQPQConfigSetting[] => {\n return getConfigSettings<VirtualNetworkQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.virtualNetwork);\n};\n\nexport const getOwnedKeyValueStores = <T extends object = any>(qpqConfig: QPQConfig): KeyValueStoreQPQConfigSetting<T>[] => {\n return getOwnedItems(getAllKeyValueStores(qpqConfig), qpqConfig);\n};\n\nexport const getOwnedGraphDatabases = (qpqConfig: QPQConfig): GraphDatabaseQPQConfigSetting[] => {\n return getOwnedItems(getAllGraphDatabaseConfigs(qpqConfig), qpqConfig);\n};\n\nexport const getOwnedStorageDrives = (qpqConfig: QPQConfig): StorageDriveQPQConfigSetting[] => {\n return getOwnedItems(getStorageDrives(qpqConfig), qpqConfig);\n};\n\nexport const resolveCrossServiceResourceName = (resourceName: ResourceName): CrossServiceResourceName => {\n if (typeof resourceName === 'string') {\n return {\n name: resourceName,\n };\n }\n\n return resourceName;\n};\n\nexport const getKeyValueStoreByName = <T extends object = any>(\n qpqConfig: QPQConfig,\n kvsName: string,\n): KeyValueStoreQPQConfigSetting<T> | undefined => {\n const keyValueStore = getAllKeyValueStores<T>(qpqConfig).find((kvs) => kvs.keyValueStoreName === kvsName);\n\n return keyValueStore;\n};\n\nexport const getActionProcessorSources = (configs: QPQConfig): QpqFunctionRuntime[] => {\n const sources = getConfigSettings<ActionProcessorsQPQConfigSetting>(configs, QPQCoreConfigSettingType.actionProcessors).map((ap) => ap.runtime);\n\n return sources;\n};\n\nexport const getUserDirectoryEmailTemplates = (qpqConfig: QPQConfig): Record<string, EmailTemplates> => {\n const userDirectories = getConfigSettings<UserDirectoryQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.userDirectory);\n\n const record = userDirectories.reduce(\n (acc, ud) => ({\n ...acc,\n [ud.name]: ud.emailTemplates,\n }),\n {} as Record<string, EmailTemplates>,\n );\n\n return record;\n};\n\nexport const getScheduleEvents = (configs: QPQConfig): ScheduleQPQConfigSetting[] => {\n return getConfigSettings<ScheduleQPQConfigSetting>(configs, QPQCoreConfigSettingType.schedule);\n};\n\nexport const getOwnedScheduleEvents = (qpqConfig: QPQConfig): ScheduleQPQConfigSetting[] => {\n return getOwnedItems(getScheduleEvents(qpqConfig), qpqConfig);\n};\n\nexport const getQueueSrcEntries = (configs: QPQConfig): QpqFunctionRuntime[] => {\n const queueConfigs = getConfigSettings<QueueQPQConfigSetting>(configs, QPQCoreConfigSettingType.queue);\n\n return queueConfigs.reduce((acc, qc) => [...acc, ...Object.values(qc.qpqQueueProcessors)], [] as QpqFunctionRuntime[]);\n};\n\nexport const getUserDirectorySrcEntries = (qpqConfig: QPQConfig): QpqFunctionRuntime[] => {\n // We just want the ones this service owns.\n const userConfigs = getOwnedUserDirectories(qpqConfig);\n\n return userConfigs\n .reduce((acc, ud) => [...acc, ...Object.values(ud.emailTemplates), ...Object.values(ud.customAuthRuntime || {})], [] as QpqFunctionRuntime[])\n .filter((se) => !!se);\n};\n\nexport const getAllInlineFunctions = (qpqConfig: QPQConfig): InlineFunctionQPQConfigSetting[] => {\n return getConfigSettings<InlineFunctionQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.inlineFunction);\n};\n\nexport const getOwnedInlineFunctions = (qpqConfig: QPQConfig): InlineFunctionQPQConfigSetting[] => {\n return getOwnedItems(getAllInlineFunctions(qpqConfig), qpqConfig);\n};\n\n// Used in bundlers to know where and what to build and index\nexport const getAllSrcEntries = (qpqConfig: QPQConfig): QpqFunctionRuntime[] => {\n const result = [\n ...getActionProcessorSources(qpqConfig),\n ...getScheduleEvents(qpqConfig).map((r) => r.runtime),\n ...getQueueSrcEntries(qpqConfig),\n ...getUserDirectorySrcEntries(qpqConfig),\n ...getDeployEventConfigs(qpqConfig).map((r) => r.runtime),\n ...getStorageDrives(qpqConfig).flatMap((sd) => [sd.onEvent?.create, sd.onEvent?.delete].filter((r) => !!r) as QpqFunctionRuntime[]),\n ...getAllInlineFunctions(qpqConfig).map((f) => f.runtime),\n ];\n\n return result;\n};\n\nexport const getApiBuildPath = (qpqConfig: QPQConfig): string => {\n const [apiBuildPathConfig] = getConfigSettings<ApiBuildPathQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.apiBuildPath);\n\n if (!apiBuildPathConfig) {\n throw new Error(`Can not find app base path use defineApiBuildPath or defineApplicationModule`);\n }\n\n return apiBuildPathConfig.apiBuildPath;\n};\n\nexport const getSrcFilenameFromQpqFunctionRuntime = (qpqFunctionRuntime: QpqFunctionRuntime): string => {\n if (isQpqFunctionRuntimeAdvanced(qpqFunctionRuntime)) {\n return qpqFunctionRuntime.relativePath.split('/').pop() || '';\n }\n\n const [srcPath] = qpqFunctionRuntime.split('::');\n return srcPath.split('/').pop() || '';\n};\n\nexport const getSecretByName = (secretName: string, qpqConfig: QPQConfig): SecretQPQConfigSetting => {\n const secrets = getConfigSettings<SecretQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.secret);\n\n const secret = secrets.find((s) => s.key === secretName);\n\n if (!secret) {\n throw new Error(`Can not find secret [${secretName}]`);\n }\n\n return secret;\n};\n\nexport const getAllSecretConfigs = (qpqConfig: QPQConfig): SecretQPQConfigSetting[] => {\n const secrets = getConfigSettings<SecretQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.secret);\n\n return secrets;\n};\n\nexport const getOwnedSecrets = (qpqConfig: QPQConfig): SecretQPQConfigSetting[] => {\n const secrets = getAllSecretConfigs(qpqConfig);\n\n return getOwnedItems(secrets, qpqConfig);\n};\n\nexport const getGlobalConfigValue = <T>(qpqConfig: QPQConfig, name: string): T => {\n const global = getConfigSettings<GlobalQPQConfigSetting<T>>(qpqConfig, QPQCoreConfigSettingType.global).find((g) => g.key === name);\n\n if (!global) {\n throw new Error(`Global config ${name} not found`);\n }\n\n return global.value;\n};\n\n// Resolves a global by name, giving precedence to globals declared on the\n// executing function (functionGlobals) before falling back to the service-wide\n// config global. Throws (via getGlobalConfigValue) if the name is found in neither.\nexport const resolveGlobalValue = <T>(qpqConfig: QPQConfig, functionGlobals: Record<string, unknown> | undefined, name: string): T => {\n if (functionGlobals && Object.prototype.hasOwnProperty.call(functionGlobals, name)) {\n return functionGlobals[name] as T;\n }\n\n return getGlobalConfigValue<T>(qpqConfig, name);\n};\n\nexport const getUserDirectories = (configs: QPQConfig): UserDirectoryQPQConfigSetting[] => {\n const userDirectories = getConfigSettings<UserDirectoryQPQConfigSetting>(configs, QPQCoreConfigSettingType.userDirectory);\n\n return userDirectories;\n};\n\nexport const getOwnedUserDirectories = (qpqConifg: QPQConfig): UserDirectoryQPQConfigSetting[] => {\n const userDirectories = getUserDirectories(qpqConifg);\n\n return getOwnedItems(userDirectories, qpqConifg);\n};\n\nexport const getUserDirectoryByName = (userDirectoryName: string, qpqConifg: QPQConfig): UserDirectoryQPQConfigSetting => {\n const userDirectory = getUserDirectories(qpqConifg).find((ud) => ud.name === userDirectoryName);\n\n if (!userDirectory) {\n throw new Error(`UserDirectory not found: ${userDirectoryName}`);\n }\n\n return userDirectory;\n};\n\nexport const getAllParameterConfigs = (qpqConfig: QPQConfig): ParameterQPQConfigSetting[] => {\n const parameters = getConfigSettings<ParameterQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.parameter);\n\n return parameters;\n};\n\nexport const getParameterConfig = (name: string, qpqConfig: QPQConfig): ParameterQPQConfigSetting => {\n const parameters = getConfigSettings<ParameterQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.parameter);\n\n const param = parameters.find((p) => p.key === name);\n\n if (!param) {\n throw new Error(`Parameter ${name} not found`);\n }\n\n return param;\n};\n\nexport const getOwnedParameterConfigs = (qpqConfig: QPQConfig): ParameterQPQConfigSetting[] => {\n const parameters = getAllParameterConfigs(qpqConfig);\n\n return getOwnedItems(parameters, qpqConfig);\n};\n\n/**\n * Merges every `defineBackendBundleOptions` in the config into a single set of\n * bundler directives. Services compose config from many fragments, so each\n * fragment can declare the build quirks of its own dependencies.\n */\nexport const getBackendBundleOptions = (qpqConfig: QPQConfig): Required<BackendBundleOptions> => {\n const settings = getConfigSettings<BackendBundleOptionsQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.backendBundleOptions);\n\n return {\n externals: settings.flatMap((setting) => setting.externals),\n ignoreModules: settings.flatMap((setting) => setting.ignoreModules),\n ignoreWarnings: settings.flatMap((setting) => setting.ignoreWarnings),\n };\n};\n\n/**\n * Merges every `defineFrontendBundleOptions` in the config into a single set\n * of views-bundler directives.\n */\nexport const getFrontendBundleOptions = (qpqConfig: QPQConfig): Required<FrontendBundleOptions> => {\n const settings = getConfigSettings<FrontendBundleOptionsQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.frontendBundleOptions);\n\n return {\n sharedSingletons: settings.flatMap((setting) => setting.sharedSingletons),\n };\n};\n\nexport const getUniqueKeyForSetting = (setting: QPQConfigSetting) => {\n const type = setting.configSettingType.split('/').pop();\n const key = setting.uniqueKey;\n\n return `${type}${key}`;\n};\n\nexport const getQueueConfigSettingByName = (name: string, qpqConfig: QPQConfig): QueueQPQConfigSetting | undefined => {\n const queueConfigs = getConfigSettings<QueueQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.queue);\n\n return queueConfigs.find((c) => c.name === name);\n};\n\nexport const getQueueQueueProcessors = (name: string, qpqConfig: QPQConfig): QpqQueueProcessors => {\n return getQueueConfigSettingByName(name, qpqConfig)?.qpqQueueProcessors || {};\n};\n\nexport const convertCustomFullyQualifiedResourceToGeneric = <T extends string>(resource: CustomFullyQualifiedResource<T>): FullyQualifiedResource => {\n type KeyType = KeyOf<CustomFullyQualifiedResource<T>>;\n const key: KeyType = Array.from(Object.keys(resource)).find(\n (k) => k !== 'module' && k !== 'application' && k !== 'feature' && k !== 'environment',\n ) as any as KeyType;\n\n const resourceName = resource[key as T];\n\n return {\n module: resource.module,\n application: resource.application,\n feature: resource.feature,\n environment: resource.environment,\n resourceName: resourceName,\n };\n};\n\nexport const getFullyQualifiedResourceName = (qpqConfig: QPQConfig, resourceName: string, config?: QPQConfigSetting): FullyQualifiedResource => {\n const confApplication = getApplicationName(qpqConfig);\n const confEnvironment = getApplicationModuleEnvironment(qpqConfig);\n const confFeature = getApplicationModuleFeature(qpqConfig);\n const confModule = getApplicationModuleName(qpqConfig);\n\n return {\n resourceName: config?.owner?.resourceNameOverride || resourceName,\n\n application: config?.owner?.application || confApplication,\n environment: config?.owner?.environment || confEnvironment,\n module: config?.owner?.module || confModule,\n feature: config?.owner?.feature || confFeature || '',\n };\n};\n\n// Fully Qualified Resource Names\nexport const getKeyValueStoreFullyQualifiedResourceName = (kvsName: string, qpqConfig: QPQConfig): FullyQualifiedResource => {\n const storeConfig = getKeyValueStoreByName(qpqConfig, kvsName);\n\n return getFullyQualifiedResourceName(qpqConfig, kvsName, storeConfig);\n};\n\nexport const isSameResource = (resourceA: FullyQualifiedResource, resourceB: FullyQualifiedResource): boolean => {\n return (\n resourceA.application === resourceB.application &&\n resourceA.environment === resourceB.environment &&\n resourceA.feature === resourceB.feature &&\n resourceA.module === resourceB.module &&\n resourceA.resourceName === resourceB.resourceName\n );\n};\n\nexport const getFullUrlFromConfigUrl = (configUrl: ConfigUrl, qpqConfig: QPQConfig): string => {\n if (typeof configUrl === 'string') {\n return configUrl;\n }\n\n const confEnvironment = getApplicationModuleEnvironment(qpqConfig);\n const confFeature = getApplicationModuleFeature(qpqConfig);\n\n let fullUrl = `${configUrl.domain}`;\n\n if (confEnvironment !== 'production') {\n fullUrl = `${confEnvironment}.${fullUrl}`;\n }\n\n if (confFeature) {\n fullUrl = `${confFeature}.${fullUrl}`;\n }\n\n if (configUrl.module) {\n fullUrl = `${configUrl.module}.${fullUrl}`;\n }\n\n if (configUrl.path) {\n fullUrl = `${fullUrl}${configUrl.path}`;\n }\n\n fullUrl = `${configUrl.protocol}://${fullUrl}`;\n\n return fullUrl;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"qpqCoreUtils.js","sourceRoot":"","sources":["../../src/qpqCoreUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ActionProcessorsQPQConfigSetting,\n AiQPQConfigSetting,\n ApiBuildPathQPQConfigSetting,\n ApplicationQPQConfigSetting,\n BackendBundleOptions,\n BackendBundleOptionsQPQConfigSetting,\n ClaudeAIQPQConfigSetting,\n CryptoKeyQPQConfigSetting,\n defineJavascriptRuntime,\n DeployEventsQPQConfigSetting,\n EmailTemplates,\n EnvironmentSettingsQPQConfigSetting,\n EventBusQPQConfigSetting,\n FederatedModuleStoreQPQConfigSetting,\n FrontendBundleOptions,\n FrontendBundleOptionsQPQConfigSetting,\n GlobalQPQConfigSetting,\n GraphDatabaseQPQConfigSetting,\n InlineFunctionQPQConfigSetting,\n JavascriptRuntimeQPQConfigSetting,\n KeyValueStoreQPQConfigSetting,\n ModuleQPQConfigSetting,\n NotifyErrorQPQConfigSetting,\n ParameterQPQConfigSetting,\n QPQConfig,\n QPQConfigItem,\n QPQConfigSetting,\n QPQCoreConfigSettingType,\n QpqQueueProcessors,\n QueueQPQConfigSetting,\n ScheduleQPQConfigSetting,\n SecretQPQConfigSetting,\n ServiceSettingsQPQConfigSetting,\n StorageDriveQPQConfigSetting,\n UserDirectoryQPQConfigSetting,\n VirtualNetworkQPQConfigSetting,\n} from './config';\nimport {\n ConfigUrl,\n CrossModuleOwner,\n CrossServiceResourceName,\n CustomFullyQualifiedResource,\n FullyQualifiedResource,\n KeyOf,\n QpqFunctionRuntime,\n ResourceName,\n} from './types';\nimport { isQpqFunctionRuntimeAdvanced } from './utils';\n\n/**\n * Flattens a QPQConfig array into a single array of QPQConfigSetting objects.\n * If a QPQConfigItem has a configSettingType of QPQCoreConfigSettingType.environmentSettings,\n * and its environment matches the current environment, its settings will be added to the flattened array.\n * @function\n * @param {QPQConfig} qpqConfig - The input QPQConfig array to be flattened.\n * @returns {QPQConfigSetting[]} - The flattened array of QPQConfigSetting objects\n */\nexport const flattenQpqConfig = (qpqConfig: QPQConfig): QPQConfigSetting[] => {\n let environment = 'development';\n let service: string | undefined;\n\n /**\n * A recursive helper function that flattens an array of QPQConfigItem objects.\n * @function\n * @param {QPQConfigItem[]} configItems - An array of QPQConfigItem objects to be flattened.\n * @param {QPQConfigSetting[]} accumulator - An accumulator array for storing the flattened QPQConfigSetting objects.\n * @returns {QPQConfigSetting[]} - The flattened array of QPQConfigSetting objects.\n */\n const flatten = (configItems: QPQConfigItem[], accumulator: QPQConfigSetting[] = []): QPQConfigSetting[] => {\n return configItems.reduce<QPQConfigSetting[]>((acc, item) => {\n if (Array.isArray(item)) {\n return flatten(item, acc);\n } else {\n // If its a appName config item, update the environment variable\n if (item.configSettingType === QPQCoreConfigSettingType.appName) {\n environment = (item as ApplicationQPQConfigSetting).environment || 'development';\n }\n\n // If its a moduleName config item, update the service variable\n else if (item.configSettingType === QPQCoreConfigSettingType.moduleName) {\n service = (item as ModuleQPQConfigSetting).moduleName;\n }\n\n // Otherwise if its an environmentSettings config item, flatten out the child settings\n // for the current environment, falling back to the '*' key if present.\n else if (item.configSettingType === QPQCoreConfigSettingType.environmentSettings) {\n const envSetting = item as EnvironmentSettingsQPQConfigSetting;\n const settings = envSetting.settingsByEnvironment[environment] ?? envSetting.settingsByEnvironment['*'] ?? [];\n\n return flatten(settings, acc);\n }\n\n // Otherwise if its a serviceSettings config item, flatten out the child settings\n // for the current service, falling back to the '*' key if present.\n else if (item.configSettingType === QPQCoreConfigSettingType.serviceSettings) {\n if (!service) {\n throw new Error('defineServiceSettings requires a module to be set first via defineModule (usually through defineApplicationModule)');\n }\n\n const svcSetting = item as ServiceSettingsQPQConfigSetting;\n const settings = svcSetting.settingsByService[service] ?? svcSetting.settingsByService['*'] ?? [];\n\n return flatten(settings, acc);\n }\n\n // Otherwise its just a regular config item, add it to the list\n return [...acc, item];\n }\n }, accumulator);\n };\n\n return flatten(qpqConfig);\n};\n\n/**\n * Filters and returns the config settings of a specific type from a QPQConfig array.\n * @function\n * @template T - The specific type of QPQConfigSetting to filter.\n * @param {QPQConfig} qpqConfig - The input QPQConfig array.\n * @param {string} configSettingType - The specific config setting type to filter.\n * @returns {T[]} - An array of filtered config settings of the specified type.\n */\nexport const getConfigSettings = <T extends QPQConfigSetting>(qpqConfig: QPQConfig, configSettingType: string): T[] => {\n const flatConfig = flattenQpqConfig(qpqConfig);\n return flatConfig.filter((c) => c.configSettingType === configSettingType) as T[];\n};\n\n/**\n * Retrieves a single config setting of a specific type from a QPQConfig array.\n * @function\n * @template T - The specific type of QPQConfigSetting to retrieve.\n * @param {QPQConfig} qpqConfig - The input QPQConfig array.\n * @param {string} serviceInfrastructureConfigType - The specific config setting type to retrieve.\n * @returns {T | undefined} - The found config setting of the specified type or undefined if not found.\n */\nexport const getConfigSetting = <T extends QPQConfigSetting>(qpqConfig: QPQConfig, serviceInfrastructureConfigType: string): T | undefined => {\n const [setting] = getConfigSettings<T>(qpqConfig, serviceInfrastructureConfigType);\n return setting;\n};\n\n/**\n * Retrieves the ApplicationModuleSetting from a QPQConfig array.\n * @function\n * @param {QPQConfig} qpqConfig - The input QPQConfig array.\n * @returns {ApplicationQPQConfigSetting} - The ApplicationQPQConfigSetting from the QPQConfig array.\n * @throws {Error} - If the ApplicationQPQConfigSetting is not found in the QPQConfig array.\n */\nexport const getApplicationConfigSetting = (qpqConfig: QPQConfig): ApplicationQPQConfigSetting => {\n const applicationModuleSetting = getConfigSetting<ApplicationQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.appName);\n\n if (!applicationModuleSetting) {\n throw new Error('please use defineApplication in your QPQ config');\n }\n\n return applicationModuleSetting;\n};\n\nexport const getApplicationModuleName = (qpqConfig: QPQConfig): string => {\n const moduleSetting = getConfigSetting<ModuleQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.moduleName);\n\n if (!moduleSetting) {\n throw new Error('please use defineModule in your QPQ config');\n }\n\n return moduleSetting.moduleName;\n};\n\nexport const getApplicationConfigRoot = (qpqConfig: QPQConfig): string => {\n const moduleSetting = getConfigSetting<ApplicationQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.appName);\n\n if (!moduleSetting) {\n throw new Error('please use defineApplication in your QPQ config');\n }\n\n return moduleSetting.configRoot;\n};\n\nexport const getApplicationName = (qpqConfig: QPQConfig): string => {\n return getApplicationConfigSetting(qpqConfig).applicationName;\n};\n\nexport const getApplicationModuleFeature = (qpqConfig: QPQConfig): string | undefined => {\n return getApplicationConfigSetting(qpqConfig).feature;\n};\n\nexport const getConfigRoot = (qpqConfig: QPQConfig): string => {\n return getApplicationConfigSetting(qpqConfig).configRoot;\n};\n\nexport const getApplicationModuleEnvironment = (qpqConfig: QPQConfig): string => {\n return getApplicationConfigSetting(qpqConfig).environment || 'production';\n};\n\nexport const getStorageDrives = (configs: QPQConfig): StorageDriveQPQConfigSetting[] => {\n return getConfigSettings<StorageDriveQPQConfigSetting>(configs, QPQCoreConfigSettingType.storageDrive);\n};\n\nexport const getStorageDriveByName = (storageDriveName: string, configs: QPQConfig): StorageDriveQPQConfigSetting | undefined => {\n return getStorageDrives(configs).find((sd) => sd.storageDrive === storageDriveName);\n};\n\nexport const getFederatedModuleStore = (qpqConfig: QPQConfig): FederatedModuleStoreQPQConfigSetting | undefined => {\n return getConfigSetting<FederatedModuleStoreQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.federatedModuleStore);\n};\n\nexport const getQueues = (configs: QPQConfig): QueueQPQConfigSetting[] => {\n return getConfigSettings<QueueQPQConfigSetting>(configs, QPQCoreConfigSettingType.queue);\n};\n\nexport const getOwnedQueues = (configs: QPQConfig): QueueQPQConfigSetting[] => {\n return getOwnedItems(getQueues(configs), configs);\n};\n\nexport const getNotifyErrorConfigs = (configs: QPQConfig): NotifyErrorQPQConfigSetting[] => {\n return getConfigSettings<NotifyErrorQPQConfigSetting>(configs, QPQCoreConfigSettingType.notifyError);\n};\n\nexport const getQueueByName = (configs: QPQConfig, name: string): QueueQPQConfigSetting | undefined => {\n return getQueues(configs).find((q) => q.name === name);\n};\n\n// A FIFO queue can only be fed by a FIFO event bus - standard SNS topics cannot deliver\n// to FIFO SQS queues at all. Called at deploy/startup time (the queue and bus are separate\n// settings, so defineQueue can't validate this on its own).\nexport const assertFifoQueueEventBusSubscriptionsAreValid = (qpqConfig: QPQConfig): void => {\n const invalidSubscriptions = getQueues(qpqConfig)\n .filter((queue) => queue.isFifo)\n .flatMap((queue) =>\n queue.eventBusSubscriptions\n .filter((eventBusName) => !getEventBusConfigByName(eventBusName, qpqConfig)?.isFifo)\n .map((eventBusName) => `queue [${queue.name}] -> event bus [${eventBusName}]`),\n );\n\n if (invalidSubscriptions.length > 0) {\n throw new Error(\n `FIFO queues can only subscribe to FIFO event buses (standard SNS topics cannot deliver to FIFO SQS queues): ${invalidSubscriptions.join(', ')}`,\n );\n }\n};\n\nexport const getStorageDriveNames = (configs: QPQConfig): string[] => {\n const storageDriveNames = getConfigSettings<StorageDriveQPQConfigSetting>(configs, QPQCoreConfigSettingType.storageDrive).map(\n (sd) => sd.storageDrive,\n );\n\n return storageDriveNames;\n};\n\nexport const getAllEventBusConfigs = (qpqConfig: QPQConfig): EventBusQPQConfigSetting[] => {\n const eventBuses = getConfigSettings<EventBusQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.eventBus);\n\n return eventBuses;\n};\n\nexport const getAllAiConfigs = (qpqConfig: QPQConfig): AiQPQConfigSetting[] => {\n return getConfigSettings<AiQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.ai);\n};\n\n// Always resolves - falls back to the defineJavascriptRuntime defaults when no setting is present\nexport const getJavascriptRuntimeConfig = (qpqConfig: QPQConfig): JavascriptRuntimeQPQConfigSetting => {\n return getConfigSetting<JavascriptRuntimeQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.javascriptRuntime) ?? defineJavascriptRuntime();\n};\n\nexport const getAllClaudeAiConfigs = (qpqConfig: QPQConfig): ClaudeAIQPQConfigSetting[] => {\n const claudeAis = getConfigSettings<ClaudeAIQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.claudeAi);\n\n return claudeAis;\n};\n\nexport const getOwnedEventBusConfigs = (qpqConfig: QPQConfig): EventBusQPQConfigSetting[] => {\n const ownedEventBusConfigs = getOwnedItems(getAllEventBusConfigs(qpqConfig), qpqConfig);\n\n return ownedEventBusConfigs;\n};\n\nexport const getEventBusConfigByName = (eventBusName: string, qpqConfig: QPQConfig): EventBusQPQConfigSetting | undefined => {\n const allConfigs = getAllEventBusConfigs(qpqConfig);\n\n const eventBusConfig = allConfigs.find((eb) => eb.owner?.resourceNameOverride === eventBusName);\n\n if (eventBusConfig) {\n return eventBusConfig;\n }\n\n return allConfigs.find((eb) => eb.name === eventBusName);\n};\n\nexport const getOwnedItems = <T extends QPQConfigSetting>(settings: T[], qpqConfig: QPQConfig): T[] => {\n const appModuleName = getApplicationModuleName(qpqConfig);\n const appName = getApplicationName(qpqConfig);\n const appFeature = getApplicationModuleFeature(qpqConfig);\n const appEnvironment = getApplicationModuleEnvironment(qpqConfig);\n\n return settings.filter(\n (s) =>\n !s.owner ||\n ((!s.owner.module || s.owner.module === appModuleName) &&\n (!s.owner.application || s.owner.application === appName) &&\n (s.owner.feature === undefined || (!s.owner.feature && !appFeature) || s.owner.feature === appFeature) &&\n (!s.owner.environment || s.owner.environment === appEnvironment)),\n );\n};\n\nexport const getAllKeyValueStores = <T extends object = any>(qpqConfig: QPQConfig): KeyValueStoreQPQConfigSetting<T>[] => {\n const keyValueStores = getConfigSettings<KeyValueStoreQPQConfigSetting<T>>(qpqConfig, QPQCoreConfigSettingType.keyValueStore);\n\n return keyValueStores;\n};\n\nexport const getAllGraphDatabaseConfigs = (qpqConfig: QPQConfig): GraphDatabaseQPQConfigSetting[] => {\n const graphDatabases = getConfigSettings<GraphDatabaseQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.graphDatabase);\n\n return graphDatabases;\n};\n\nexport const getDeployEventConfigs = (qpqConfig: QPQConfig): DeployEventsQPQConfigSetting[] => {\n const deployEvents = getConfigSettings<DeployEventsQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.deployEvent);\n\n return deployEvents;\n};\n\nexport const getVirualNetworkConfigs = (qpqConfig: QPQConfig): VirtualNetworkQPQConfigSetting[] => {\n return getConfigSettings<VirtualNetworkQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.virtualNetwork);\n};\n\nexport const getOwnedKeyValueStores = <T extends object = any>(qpqConfig: QPQConfig): KeyValueStoreQPQConfigSetting<T>[] => {\n return getOwnedItems(getAllKeyValueStores(qpqConfig), qpqConfig);\n};\n\nexport const getOwnedGraphDatabases = (qpqConfig: QPQConfig): GraphDatabaseQPQConfigSetting[] => {\n return getOwnedItems(getAllGraphDatabaseConfigs(qpqConfig), qpqConfig);\n};\n\nexport const getOwnedStorageDrives = (qpqConfig: QPQConfig): StorageDriveQPQConfigSetting[] => {\n return getOwnedItems(getStorageDrives(qpqConfig), qpqConfig);\n};\n\nexport const resolveCrossServiceResourceName = (resourceName: ResourceName): CrossServiceResourceName => {\n if (typeof resourceName === 'string') {\n return {\n name: resourceName,\n };\n }\n\n return resourceName;\n};\n\nexport const getKeyValueStoreByName = <T extends object = any>(\n qpqConfig: QPQConfig,\n kvsName: string,\n): KeyValueStoreQPQConfigSetting<T> | undefined => {\n const keyValueStore = getAllKeyValueStores<T>(qpqConfig).find((kvs) => kvs.keyValueStoreName === kvsName);\n\n return keyValueStore;\n};\n\nexport const getActionProcessorSources = (configs: QPQConfig): QpqFunctionRuntime[] => {\n const sources = getConfigSettings<ActionProcessorsQPQConfigSetting>(configs, QPQCoreConfigSettingType.actionProcessors).map((ap) => ap.runtime);\n\n return sources;\n};\n\nexport const getUserDirectoryEmailTemplates = (qpqConfig: QPQConfig): Record<string, EmailTemplates> => {\n const userDirectories = getConfigSettings<UserDirectoryQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.userDirectory);\n\n const record = userDirectories.reduce(\n (acc, ud) => ({\n ...acc,\n [ud.name]: ud.emailTemplates,\n }),\n {} as Record<string, EmailTemplates>,\n );\n\n return record;\n};\n\nexport const getScheduleEvents = (configs: QPQConfig): ScheduleQPQConfigSetting[] => {\n return getConfigSettings<ScheduleQPQConfigSetting>(configs, QPQCoreConfigSettingType.schedule);\n};\n\nexport const getOwnedScheduleEvents = (qpqConfig: QPQConfig): ScheduleQPQConfigSetting[] => {\n return getOwnedItems(getScheduleEvents(qpqConfig), qpqConfig);\n};\n\nexport const getQueueSrcEntries = (configs: QPQConfig): QpqFunctionRuntime[] => {\n const queueConfigs = getConfigSettings<QueueQPQConfigSetting>(configs, QPQCoreConfigSettingType.queue);\n\n return queueConfigs.reduce((acc, qc) => [...acc, ...Object.values(qc.qpqQueueProcessors)], [] as QpqFunctionRuntime[]);\n};\n\nexport const getUserDirectorySrcEntries = (qpqConfig: QPQConfig): QpqFunctionRuntime[] => {\n // We just want the ones this service owns.\n const userConfigs = getOwnedUserDirectories(qpqConfig);\n\n return userConfigs\n .reduce((acc, ud) => [...acc, ...Object.values(ud.emailTemplates), ...Object.values(ud.customAuthRuntime || {})], [] as QpqFunctionRuntime[])\n .filter((se) => !!se);\n};\n\nexport const getAllInlineFunctions = (qpqConfig: QPQConfig): InlineFunctionQPQConfigSetting[] => {\n return getConfigSettings<InlineFunctionQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.inlineFunction);\n};\n\nexport const getOwnedInlineFunctions = (qpqConfig: QPQConfig): InlineFunctionQPQConfigSetting[] => {\n return getOwnedItems(getAllInlineFunctions(qpqConfig), qpqConfig);\n};\n\n// Used in bundlers to know where and what to build and index\nexport const getAllSrcEntries = (qpqConfig: QPQConfig): QpqFunctionRuntime[] => {\n const result = [\n ...getActionProcessorSources(qpqConfig),\n ...getScheduleEvents(qpqConfig).map((r) => r.runtime),\n ...getQueueSrcEntries(qpqConfig),\n ...getUserDirectorySrcEntries(qpqConfig),\n ...getDeployEventConfigs(qpqConfig).map((r) => r.runtime),\n ...getStorageDrives(qpqConfig).flatMap((sd) => [sd.onEvent?.create, sd.onEvent?.delete].filter((r) => !!r) as QpqFunctionRuntime[]),\n ...getAllInlineFunctions(qpqConfig).map((f) => f.runtime),\n ];\n\n return result;\n};\n\nexport const getApiBuildPath = (qpqConfig: QPQConfig): string => {\n const [apiBuildPathConfig] = getConfigSettings<ApiBuildPathQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.apiBuildPath);\n\n if (!apiBuildPathConfig) {\n throw new Error(`Can not find app base path use defineApiBuildPath or defineApplicationModule`);\n }\n\n return apiBuildPathConfig.apiBuildPath;\n};\n\nexport const getSrcFilenameFromQpqFunctionRuntime = (qpqFunctionRuntime: QpqFunctionRuntime): string => {\n if (isQpqFunctionRuntimeAdvanced(qpqFunctionRuntime)) {\n return qpqFunctionRuntime.relativePath.split('/').pop() || '';\n }\n\n const [srcPath] = qpqFunctionRuntime.split('::');\n return srcPath.split('/').pop() || '';\n};\n\nexport const getSecretByName = (secretName: string, qpqConfig: QPQConfig): SecretQPQConfigSetting => {\n const secrets = getConfigSettings<SecretQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.secret);\n\n const secret = secrets.find((s) => s.key === secretName);\n\n if (!secret) {\n throw new Error(`Can not find secret [${secretName}]`);\n }\n\n return secret;\n};\n\nexport const getAllSecretConfigs = (qpqConfig: QPQConfig): SecretQPQConfigSetting[] => {\n const secrets = getConfigSettings<SecretQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.secret);\n\n return secrets;\n};\n\nexport const getOwnedSecrets = (qpqConfig: QPQConfig): SecretQPQConfigSetting[] => {\n const secrets = getAllSecretConfigs(qpqConfig);\n\n return getOwnedItems(secrets, qpqConfig);\n};\n\nexport const getCryptoKeyByName = (cryptoKeyName: string, qpqConfig: QPQConfig): CryptoKeyQPQConfigSetting => {\n const cryptoKeys = getConfigSettings<CryptoKeyQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.cryptoKey);\n\n const cryptoKey = cryptoKeys.find((k) => k.keyName === cryptoKeyName);\n\n if (!cryptoKey) {\n throw new Error(`Can not find crypto key [${cryptoKeyName}]`);\n }\n\n return cryptoKey;\n};\n\nexport const getAllCryptoKeyConfigs = (qpqConfig: QPQConfig): CryptoKeyQPQConfigSetting[] => {\n const cryptoKeys = getConfigSettings<CryptoKeyQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.cryptoKey);\n\n return cryptoKeys;\n};\n\nexport const getOwnedCryptoKeys = (qpqConfig: QPQConfig): CryptoKeyQPQConfigSetting[] => {\n const cryptoKeys = getAllCryptoKeyConfigs(qpqConfig);\n\n return getOwnedItems(cryptoKeys, qpqConfig);\n};\n\nexport const getGlobalConfigValue = <T>(qpqConfig: QPQConfig, name: string): T => {\n const global = getConfigSettings<GlobalQPQConfigSetting<T>>(qpqConfig, QPQCoreConfigSettingType.global).find((g) => g.key === name);\n\n if (!global) {\n throw new Error(`Global config ${name} not found`);\n }\n\n return global.value;\n};\n\n// Resolves a global by name, giving precedence to globals declared on the\n// executing function (functionGlobals) before falling back to the service-wide\n// config global. Throws (via getGlobalConfigValue) if the name is found in neither.\nexport const resolveGlobalValue = <T>(qpqConfig: QPQConfig, functionGlobals: Record<string, unknown> | undefined, name: string): T => {\n if (functionGlobals && Object.prototype.hasOwnProperty.call(functionGlobals, name)) {\n return functionGlobals[name] as T;\n }\n\n return getGlobalConfigValue<T>(qpqConfig, name);\n};\n\nexport const getUserDirectories = (configs: QPQConfig): UserDirectoryQPQConfigSetting[] => {\n const userDirectories = getConfigSettings<UserDirectoryQPQConfigSetting>(configs, QPQCoreConfigSettingType.userDirectory);\n\n return userDirectories;\n};\n\nexport const getOwnedUserDirectories = (qpqConifg: QPQConfig): UserDirectoryQPQConfigSetting[] => {\n const userDirectories = getUserDirectories(qpqConifg);\n\n return getOwnedItems(userDirectories, qpqConifg);\n};\n\nexport const getUserDirectoryByName = (userDirectoryName: string, qpqConifg: QPQConfig): UserDirectoryQPQConfigSetting => {\n const userDirectory = getUserDirectories(qpqConifg).find((ud) => ud.name === userDirectoryName);\n\n if (!userDirectory) {\n throw new Error(`UserDirectory not found: ${userDirectoryName}`);\n }\n\n return userDirectory;\n};\n\nexport const getAllParameterConfigs = (qpqConfig: QPQConfig): ParameterQPQConfigSetting[] => {\n const parameters = getConfigSettings<ParameterQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.parameter);\n\n return parameters;\n};\n\nexport const getParameterConfig = (name: string, qpqConfig: QPQConfig): ParameterQPQConfigSetting => {\n const parameters = getConfigSettings<ParameterQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.parameter);\n\n const param = parameters.find((p) => p.key === name);\n\n if (!param) {\n throw new Error(`Parameter ${name} not found`);\n }\n\n return param;\n};\n\nexport const getOwnedParameterConfigs = (qpqConfig: QPQConfig): ParameterQPQConfigSetting[] => {\n const parameters = getAllParameterConfigs(qpqConfig);\n\n return getOwnedItems(parameters, qpqConfig);\n};\n\n/**\n * Merges every `defineBackendBundleOptions` in the config into a single set of\n * bundler directives. Services compose config from many fragments, so each\n * fragment can declare the build quirks of its own dependencies.\n */\nexport const getBackendBundleOptions = (qpqConfig: QPQConfig): Required<BackendBundleOptions> => {\n const settings = getConfigSettings<BackendBundleOptionsQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.backendBundleOptions);\n\n return {\n externals: settings.flatMap((setting) => setting.externals),\n ignoreModules: settings.flatMap((setting) => setting.ignoreModules),\n ignoreWarnings: settings.flatMap((setting) => setting.ignoreWarnings),\n };\n};\n\n/**\n * Merges every `defineFrontendBundleOptions` in the config into a single set\n * of views-bundler directives.\n */\nexport const getFrontendBundleOptions = (qpqConfig: QPQConfig): Required<FrontendBundleOptions> => {\n const settings = getConfigSettings<FrontendBundleOptionsQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.frontendBundleOptions);\n\n return {\n sharedSingletons: settings.flatMap((setting) => setting.sharedSingletons),\n };\n};\n\nexport const getUniqueKeyForSetting = (setting: QPQConfigSetting) => {\n const type = setting.configSettingType.split('/').pop();\n const key = setting.uniqueKey;\n\n return `${type}${key}`;\n};\n\nexport const getQueueConfigSettingByName = (name: string, qpqConfig: QPQConfig): QueueQPQConfigSetting | undefined => {\n const queueConfigs = getConfigSettings<QueueQPQConfigSetting>(qpqConfig, QPQCoreConfigSettingType.queue);\n\n return queueConfigs.find((c) => c.name === name);\n};\n\nexport const getQueueQueueProcessors = (name: string, qpqConfig: QPQConfig): QpqQueueProcessors => {\n return getQueueConfigSettingByName(name, qpqConfig)?.qpqQueueProcessors || {};\n};\n\nexport const convertCustomFullyQualifiedResourceToGeneric = <T extends string>(resource: CustomFullyQualifiedResource<T>): FullyQualifiedResource => {\n type KeyType = KeyOf<CustomFullyQualifiedResource<T>>;\n const key: KeyType = Array.from(Object.keys(resource)).find(\n (k) => k !== 'module' && k !== 'application' && k !== 'feature' && k !== 'environment',\n ) as any as KeyType;\n\n const resourceName = resource[key as T];\n\n return {\n module: resource.module,\n application: resource.application,\n feature: resource.feature,\n environment: resource.environment,\n resourceName: resourceName,\n };\n};\n\nexport const getFullyQualifiedResourceName = (qpqConfig: QPQConfig, resourceName: string, config?: QPQConfigSetting): FullyQualifiedResource => {\n const confApplication = getApplicationName(qpqConfig);\n const confEnvironment = getApplicationModuleEnvironment(qpqConfig);\n const confFeature = getApplicationModuleFeature(qpqConfig);\n const confModule = getApplicationModuleName(qpqConfig);\n\n return {\n resourceName: config?.owner?.resourceNameOverride || resourceName,\n\n application: config?.owner?.application || confApplication,\n environment: config?.owner?.environment || confEnvironment,\n module: config?.owner?.module || confModule,\n feature: config?.owner?.feature || confFeature || '',\n };\n};\n\n// Fully Qualified Resource Names\nexport const getKeyValueStoreFullyQualifiedResourceName = (kvsName: string, qpqConfig: QPQConfig): FullyQualifiedResource => {\n const storeConfig = getKeyValueStoreByName(qpqConfig, kvsName);\n\n return getFullyQualifiedResourceName(qpqConfig, kvsName, storeConfig);\n};\n\nexport const isSameResource = (resourceA: FullyQualifiedResource, resourceB: FullyQualifiedResource): boolean => {\n return (\n resourceA.application === resourceB.application &&\n resourceA.environment === resourceB.environment &&\n resourceA.feature === resourceB.feature &&\n resourceA.module === resourceB.module &&\n resourceA.resourceName === resourceB.resourceName\n );\n};\n\nexport const getFullUrlFromConfigUrl = (configUrl: ConfigUrl, qpqConfig: QPQConfig): string => {\n if (typeof configUrl === 'string') {\n return configUrl;\n }\n\n const confEnvironment = getApplicationModuleEnvironment(qpqConfig);\n const confFeature = getApplicationModuleFeature(qpqConfig);\n\n let fullUrl = `${configUrl.domain}`;\n\n if (confEnvironment !== 'production') {\n fullUrl = `${confEnvironment}.${fullUrl}`;\n }\n\n if (confFeature) {\n fullUrl = `${confFeature}.${fullUrl}`;\n }\n\n if (configUrl.module) {\n fullUrl = `${configUrl.module}.${fullUrl}`;\n }\n\n if (configUrl.path) {\n fullUrl = `${fullUrl}${configUrl.path}`;\n }\n\n fullUrl = `${configUrl.protocol}://${fullUrl}`;\n\n return fullUrl;\n};\n"]}
|
|
@@ -54,6 +54,9 @@ export declare const qpqCoreUtils: {
|
|
|
54
54
|
getSecretByName: (secretName: string, qpqConfig: import("./config").QPQConfig) => import("./config").SecretQPQConfigSetting;
|
|
55
55
|
getAllSecretConfigs: (qpqConfig: import("./config").QPQConfig) => import("./config").SecretQPQConfigSetting[];
|
|
56
56
|
getOwnedSecrets: (qpqConfig: import("./config").QPQConfig) => import("./config").SecretQPQConfigSetting[];
|
|
57
|
+
getCryptoKeyByName: (cryptoKeyName: string, qpqConfig: import("./config").QPQConfig) => import("./config").CryptoKeyQPQConfigSetting;
|
|
58
|
+
getAllCryptoKeyConfigs: (qpqConfig: import("./config").QPQConfig) => import("./config").CryptoKeyQPQConfigSetting[];
|
|
59
|
+
getOwnedCryptoKeys: (qpqConfig: import("./config").QPQConfig) => import("./config").CryptoKeyQPQConfigSetting[];
|
|
57
60
|
getGlobalConfigValue: <T>(qpqConfig: import("./config").QPQConfig, name: string) => T;
|
|
58
61
|
resolveGlobalValue: <T>(qpqConfig: import("./config").QPQConfig, functionGlobals: Record<string, unknown> | undefined, name: string) => T;
|
|
59
62
|
getUserDirectories: (configs: import("./config").QPQConfig) => import("./config").UserDirectoryQPQConfigSetting[];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare enum KvsStreamEventType {
|
|
2
|
+
Insert = "Insert",
|
|
3
|
+
Modify = "Modify",
|
|
4
|
+
Remove = "Remove"
|
|
5
|
+
}
|
|
6
|
+
export type KvsStreamRecord<TItem extends object = any> = {
|
|
7
|
+
keyValueStoreName: string;
|
|
8
|
+
eventType: KvsStreamEventType;
|
|
9
|
+
scope?: string;
|
|
10
|
+
keys: Record<string, unknown>;
|
|
11
|
+
newImage?: TItem;
|
|
12
|
+
oldImage?: TItem;
|
|
13
|
+
};
|
|
14
|
+
export type KvsStreamEventResponse = void;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KvsStreamEventType = void 0;
|
|
4
|
+
// One change to a key-value store item, delivered by the store's stream (see
|
|
5
|
+
// defineKeyValueStore's `onStream`).
|
|
6
|
+
//
|
|
7
|
+
// The images are plain objects, not the storage layer's wire format: the action processor
|
|
8
|
+
// unmarshals them, so a stream handler is ordinary story code and never sees a DynamoDB
|
|
9
|
+
// AttributeValue. That also keeps handlers portable to a non-DynamoDB store.
|
|
10
|
+
var KvsStreamEventType;
|
|
11
|
+
(function (KvsStreamEventType) {
|
|
12
|
+
KvsStreamEventType["Insert"] = "Insert";
|
|
13
|
+
KvsStreamEventType["Modify"] = "Modify";
|
|
14
|
+
KvsStreamEventType["Remove"] = "Remove";
|
|
15
|
+
})(KvsStreamEventType || (exports.KvsStreamEventType = KvsStreamEventType = {}));
|
|
16
|
+
//# sourceMappingURL=KvsStreamEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KvsStreamEvent.js","sourceRoot":"","sources":["../../../src/types/KvsStreamEvent.ts"],"names":[],"mappings":";;;AAAA,6EAA6E;AAC7E,qCAAqC;AACrC,EAAE;AACF,0FAA0F;AAC1F,wFAAwF;AACxF,6EAA6E;AAC7E,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,uCAAiB,CAAA;IACjB,uCAAiB,CAAA;IACjB,uCAAiB,CAAA;AACnB,CAAC,EAJW,kBAAkB,kCAAlB,kBAAkB,QAI7B","sourcesContent":["// One change to a key-value store item, delivered by the store's stream (see\n// defineKeyValueStore's `onStream`).\n//\n// The images are plain objects, not the storage layer's wire format: the action processor\n// unmarshals them, so a stream handler is ordinary story code and never sees a DynamoDB\n// AttributeValue. That also keeps handlers portable to a non-DynamoDB store.\nexport enum KvsStreamEventType {\n Insert = 'Insert',\n Modify = 'Modify',\n Remove = 'Remove',\n}\n\nexport type KvsStreamRecord<TItem extends object = any> = {\n keyValueStoreName: string;\n\n eventType: KvsStreamEventType;\n\n // The storage scope the item was written under; absent for an unscoped row.\n //\n // Scope is composed INTO the partition key value on the way to storage, so the raw stored\n // key carries it. Every other read path hides that (the scoped translator strips it before\n // a consumer ever sees it), and a stream record is the one place it would otherwise leak.\n // Handing it back as its own field keeps that promise: a consumer re-enters the scope by\n // reading this, instead of having to know the composition format and remember to undo it.\n // Forgetting to would mean acting on one tenant's data while pointed at another's.\n scope?: string;\n\n // The item's key attributes only — always present, including on Remove. RAW: the scope has\n // been stripped back out of the partition key, so these are the values the caller wrote.\n keys: Record<string, unknown>;\n\n // The item after the change, scope stripped like `keys`. Absent on Remove.\n newImage?: TItem;\n\n // The item before the change, scope stripped like `keys`. Absent on Insert.\n oldImage?: TItem;\n};\n\n// Handlers are invoked per record, mirroring how storage drive and queue events are\n// dispatched. Ordering is guaranteed per partition key; records for different partition\n// keys may be processed concurrently.\nexport type KvsStreamEventResponse = void;\n"]}
|
|
@@ -72,6 +72,7 @@ export declare enum QpqRuntimeType {
|
|
|
72
72
|
WEBSOCKET_EVENT = "WEBSOCKET_EVENT",
|
|
73
73
|
DEPLOY_EVENT = "DEPLOY_EVENT",
|
|
74
74
|
STORAGEDRIVE_EVENT = "STORAGEDRIVE_EVENT",
|
|
75
|
+
KVS_STREAM_EVENT = "KVS_STREAM_EVENT",
|
|
75
76
|
CLOUD_FLARE_DEPLOY = "CLOUD_FLARE_DEPLOY",
|
|
76
77
|
UNIT_TEST = "UNIT_TEST",
|
|
77
78
|
UI = "UI",
|
|
@@ -13,6 +13,7 @@ var QpqRuntimeType;
|
|
|
13
13
|
QpqRuntimeType["WEBSOCKET_EVENT"] = "WEBSOCKET_EVENT";
|
|
14
14
|
QpqRuntimeType["DEPLOY_EVENT"] = "DEPLOY_EVENT";
|
|
15
15
|
QpqRuntimeType["STORAGEDRIVE_EVENT"] = "STORAGEDRIVE_EVENT";
|
|
16
|
+
QpqRuntimeType["KVS_STREAM_EVENT"] = "KVS_STREAM_EVENT";
|
|
16
17
|
QpqRuntimeType["CLOUD_FLARE_DEPLOY"] = "CLOUD_FLARE_DEPLOY";
|
|
17
18
|
QpqRuntimeType["UNIT_TEST"] = "UNIT_TEST";
|
|
18
19
|
QpqRuntimeType["UI"] = "UI";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorySession.js","sourceRoot":"","sources":["../../../src/types/StorySession.ts"],"names":[],"mappings":";;;AA8GA,IAAY,
|
|
1
|
+
{"version":3,"file":"StorySession.js","sourceRoot":"","sources":["../../../src/types/StorySession.ts"],"names":[],"mappings":";;;AA8GA,IAAY,cAsBX;AAtBD,WAAY,cAAc;IACxB,6BAAW,CAAA;IACX,iDAA+B,CAAA;IAC/B,+EAA6D,CAAA;IAC7D,2DAAyC,CAAA;IACzC,6CAA2B,CAAA;IAC3B,+CAA6B,CAAA;IAC7B,+DAA6C,CAAA;IAC7C,qDAAmC,CAAA;IACnC,+CAA6B,CAAA;IAC7B,2DAAyC,CAAA;IACzC,uDAAqC,CAAA;IACrC,2DAAyC,CAAA;IAEzC,yCAAuB,CAAA;IACvB,2BAAS,CAAA;IAET,uDAAqC,CAAA;IAErC,2EAAyD,CAAA;IACzD,2EAAyD,CAAA;IACzD,2EAAyD,CAAA;AAC3D,CAAC,EAtBW,cAAc,8BAAd,cAAc,QAsBzB","sourcesContent":["import { Action } from './Action';\nimport { QPQError } from './ErrorTypeEnum';\nimport { QpqContext } from './QpqContextIdentifier';\nimport { QpqFunctionRuntime } from './QpqFunctionRuntime';\n\nexport interface DecodedAccessToken {\n userId: string;\n username: string;\n // Unix timestamp (number of seconds since January 1, 1970 UTC).\n exp: number;\n roles?: string[];\n\n userDirectory: string;\n wasValid: boolean;\n}\n\nexport interface StorySession {\n correlation?: string;\n depth: number;\n\n // This token is never transfer cross storys\n // can't access it via events or anything\n accessToken?: string;\n\n // Decoded access token + roles token\n decodedAccessToken?: DecodedAccessToken;\n\n // Context\n context: QpqContext<any>;\n\n // Service-local context, this is never transferred across a service boundary\n // (queue / event bus / service function), but does flow to in-process sub-runtimes.\n localContext?: QpqContext<any>;\n\n // Globals declared on the executing function's QpqFunctionRuntimeAdvanced.\n // Set per-runtime from qpqFunctionRuntimeInfo; never inherited from the caller.\n functionGlobals?: Record<string, unknown>;\n}\n\nexport type StorySessionUpdater = (newSession: Partial<StorySession>) => void;\n\nexport type AskResponse<T> = Generator<Action<any>, T, any>;\n\nexport type Story<TArgs extends any[], R> = (...args: TArgs) => AskResponse<R>;\nexport type StoryResolver = <S extends Story<any, any>>(story: S) => (...args: Parameters<S>) => Promise<AskResponseReturnType<ReturnType<S>>>;\n\n// function* test(msg: string): AskResponse<number> {\n// return parseInt(msg);\n// }\n\n// function DoThing<S extends Story<any, any>>(story: S): (...args: Parameters<S>) => AskResponseReturnType<ReturnType<S>> {\n// return (...args: Parameters<S>) => {\n// return (() => {}) as any;\n// };\n// }\n\n// const runTest = DoThing(test);\n// const num = runTest('a');\n\n/**\n * Utility Type: ExtractGeneratorReturnType\n *\n * This utility type is designed to extract the return type of a Generator without\n * conflating it with the types of values it may yield. Generators in TypeScript are\n * annotated as Generator<YieldType, ReturnType, NextType>, where YieldType is the\n * type of values yielded by the generator, ReturnType is the type the generator returns\n * when it's done, and NextType is the type of the value passed to the generator's `next` method.\n *\n * By leveraging TypeScript's conditional types and the `infer` keyword, ExtractGeneratorReturnType\n * can precisely capture and extract just the ReturnType of any given Generator, providing a clean,\n * type-safe way to understand what a generator ultimately returns upon completion.\n *\n * Usage of `infer` in Conditional Types:\n * The `infer` keyword is used here to declare a type variable R within the conditional type\n * expression. TypeScript will then infer the type R as the generator's ReturnType when the\n * condition `T extends Generator<any, infer R, any>` is met. This inference is based on the\n * actual type passed to ExtractGeneratorReturnType, allowing us to \"pull out\" the ReturnType\n * from within the Generator type.\n *\n * This approach is particularly useful because it directly targets the ReturnType without\n * having to manually sift through or exclude the types of values that might be yielded by\n * the generator, which can often be diverse and not relevant to the final return type we're\n * interested in capturing.\n *\n * The ExtractGeneratorReturnType utility type simplifies the extraction process and ensures\n * that types dependent on the return value of generators are accurately typed, enhancing\n * code readability and maintainability.\n */\n\nexport type ExtractGeneratorReturnType<T extends Generator> = T extends Generator<any, infer R, any> ? R : never;\n\n// Directly extracting the generator's return type for any given AskResponse.\n// By applying ExtractGeneratorReturnType to an AskResponse, we can determine the\n// precise type that the AskResponse generator returns, bypassing the complexities\n// of its yield types. This is particularly useful in scenarios where the return type\n// is distinct from the types of actions or values yielded by the generator, allowing\n// for clear type inference and usage in TypeScript codebases.\nexport type AskResponseReturnType<T extends AskResponse<any>> = ExtractGeneratorReturnType<T>;\n\n// Any generator function that returns an AskResponse\n// qpq runtimes are built on stories\nexport type qpqStory = <T = any>(...args: any[]) => AskResponse<T>;\n\nexport interface ActionHistory<P = any, R = any> {\n act: Action<P>;\n res: R;\n startedAt: string;\n finishedAt: string;\n}\n\nexport enum QpqRuntimeType {\n API = 'API',\n EXECUTE_STORY = 'EXECUTE_STORY',\n EXECUTE_IMPLEMENTATION_STORY = 'EXECUTE_IMPLEMENTATION_STORY',\n RECURRING_SCHEDULE = 'RECURRING_SCHEDULE',\n QUEUE_EVENT = 'QUEUE_EVENT',\n EVENT_SEO_OR = 'EVENT_SEO_OR',\n SERVICE_FUNCTION_EXE = 'SERVICE_FUNCTION_EXE',\n WEBSOCKET_EVENT = 'WEBSOCKET_EVENT',\n DEPLOY_EVENT = 'DEPLOY_EVENT',\n STORAGEDRIVE_EVENT = 'STORAGEDRIVE_EVENT',\n KVS_STREAM_EVENT = 'KVS_STREAM_EVENT',\n CLOUD_FLARE_DEPLOY = 'CLOUD_FLARE_DEPLOY',\n\n UNIT_TEST = 'UNIT_TEST',\n UI = 'UI',\n\n SEND_EMAIL_EVENT = 'SEND_EMAIL_EVENT',\n\n AUTH_DEFINE_AUTH_CHALLENGE = 'AUTH_DEFINE_AUTH_CHALLENGE',\n AUTH_CREATE_AUTH_CHALLENGE = 'AUTH_CREATE_AUTH_CHALLENGE',\n AUTH_VERIFY_AUTH_CHALLENGE = 'AUTH_VERIFY_AUTH_CHALLENGE',\n}\n\nexport interface qpqConsoleLog {\n t: string;\n a: any[];\n}\n\nexport interface StoryResult<TArgs extends Array<any>, TResult = any> {\n // Params to story\n input: TArgs;\n\n // Story Session Data\n session: StorySession;\n\n // History of actions\n history: ActionHistory[];\n\n // When the story started / finished\n startedAt: string;\n finishedAt: string;\n\n // correlationGuid from the calling story\n fromCorrelation?: string;\n\n // correlation for this story (correlates all actions together)\n correlation: string;\n\n // For logging, tags to help identify the story\n tags: string[];\n moduleName: string;\n\n // Result of the story result or error not both\n result?: TResult;\n error?: QPQError;\n\n // User specified runtime type\n runtimeType: QpqRuntimeType;\n\n // Impure Logs\n logs?: qpqConsoleLog[];\n\n // What was the function runtime that this was executed against\n qpqFunctionRuntimeInfo?: QpqFunctionRuntime;\n}\n\nexport type StoryResultMetadata = {\n correlation: string;\n fromCorrelation?: string;\n\n moduleName: string;\n runtimeType: QpqRuntimeType;\n\n startedAt: string;\n\n generic: string;\n\n error?: string;\n\n executionTimeMs: number;\n\n userInfo?: string;\n\n qpqFunctionRuntimeInfo?: QpqFunctionRuntime;\n};\n\nexport type StoryResultMetadataWithChildren = StoryResultMetadata & {\n children: StoryResultMetadataWithChildren[];\n};\n"]}
|
|
@@ -13,6 +13,7 @@ export * from './EventMessage';
|
|
|
13
13
|
export * from './ExcludeKeys';
|
|
14
14
|
export * from './FullyQualifiedResource';
|
|
15
15
|
export * from './KeyOf';
|
|
16
|
+
export * from './KvsStreamEvent';
|
|
16
17
|
export * from './LogLevelEnum';
|
|
17
18
|
export * from './Lookup';
|
|
18
19
|
export * from './NotifyErrorQueueEvent';
|
|
@@ -29,6 +29,7 @@ __exportStar(require("./EventMessage"), exports);
|
|
|
29
29
|
__exportStar(require("./ExcludeKeys"), exports);
|
|
30
30
|
__exportStar(require("./FullyQualifiedResource"), exports);
|
|
31
31
|
__exportStar(require("./KeyOf"), exports);
|
|
32
|
+
__exportStar(require("./KvsStreamEvent"), exports);
|
|
32
33
|
__exportStar(require("./LogLevelEnum"), exports);
|
|
33
34
|
__exportStar(require("./Lookup"), exports);
|
|
34
35
|
__exportStar(require("./NotifyErrorQueueEvent"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,kDAAgC;AAChC,oDAAkC;AAClC,wDAAsC;AACtC,uDAAqC;AACrC,qDAAmC;AACnC,6DAA2C;AAC3C,qDAAmC;AACnC,gDAA8B;AAC9B,wDAAsC;AACtC,kDAAgC;AAChC,iDAA+B;AAC/B,gDAA8B;AAC9B,2DAAyC;AACzC,0CAAwB;AACxB,iDAA+B;AAC/B,2CAAyB;AACzB,0DAAwC;AACxC,6CAA2B;AAC3B,kDAAgC;AAChC,yDAAuC;AACvC,sDAAoC;AACpC,uDAAqC;AACrC,mDAAiC;AACjC,8CAA4B;AAC5B,iDAA+B;AAC/B,+CAA6B;AAC7B,gDAA8B;AAC9B,mDAAiC;AACjC,iDAA+B;AAC/B,mDAAiC;AACjC,sDAAoC;AACpC,wDAAsC;AACtC,0CAAwB","sourcesContent":["export * from './Action';\nexport * from './authChallenge';\nexport * from './BoundLogicStory';\nexport * from './ConfigUrlDefinition';\nexport * from './CrossModuleMessage';\nexport * from './CrossModuleOwner';\nexport * from './CrossServiceResourceName';\nexport * from './DecomposedString';\nexport * from './DeployEvent';\nexport * from './DynamicModuleLoader';\nexport * from './ErrorTypeEnum';\nexport * from './EventMessage';\nexport * from './ExcludeKeys';\nexport * from './FullyQualifiedResource';\nexport * from './KeyOf';\nexport * from './LogLevelEnum';\nexport * from './Lookup';\nexport * from './NotifyErrorQueueEvent';\nexport * from './Nullable';\nexport * from './QPQBinaryData';\nexport * from './QpqContextIdentifier';\nexport * from './QpqExecutionTrace';\nexport * from './QpqFunctionRuntime';\nexport * from './QpqIsoDateTime';\nexport * from './QpqLogger';\nexport * from './QpqPagedData';\nexport * from './QueueEvent';\nexport * from './Readonlyify';\nexport * from './ScheduledEvent';\nexport * from './StorySession';\nexport * from './StreamRegistry';\nexport * from './UnboundLogicStory';\nexport * from './UnionToIntersection';\nexport * from './utils';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,kDAAgC;AAChC,oDAAkC;AAClC,wDAAsC;AACtC,uDAAqC;AACrC,qDAAmC;AACnC,6DAA2C;AAC3C,qDAAmC;AACnC,gDAA8B;AAC9B,wDAAsC;AACtC,kDAAgC;AAChC,iDAA+B;AAC/B,gDAA8B;AAC9B,2DAAyC;AACzC,0CAAwB;AACxB,mDAAiC;AACjC,iDAA+B;AAC/B,2CAAyB;AACzB,0DAAwC;AACxC,6CAA2B;AAC3B,kDAAgC;AAChC,yDAAuC;AACvC,sDAAoC;AACpC,uDAAqC;AACrC,mDAAiC;AACjC,8CAA4B;AAC5B,iDAA+B;AAC/B,+CAA6B;AAC7B,gDAA8B;AAC9B,mDAAiC;AACjC,iDAA+B;AAC/B,mDAAiC;AACjC,sDAAoC;AACpC,wDAAsC;AACtC,0CAAwB","sourcesContent":["export * from './Action';\nexport * from './authChallenge';\nexport * from './BoundLogicStory';\nexport * from './ConfigUrlDefinition';\nexport * from './CrossModuleMessage';\nexport * from './CrossModuleOwner';\nexport * from './CrossServiceResourceName';\nexport * from './DecomposedString';\nexport * from './DeployEvent';\nexport * from './DynamicModuleLoader';\nexport * from './ErrorTypeEnum';\nexport * from './EventMessage';\nexport * from './ExcludeKeys';\nexport * from './FullyQualifiedResource';\nexport * from './KeyOf';\nexport * from './KvsStreamEvent';\nexport * from './LogLevelEnum';\nexport * from './Lookup';\nexport * from './NotifyErrorQueueEvent';\nexport * from './Nullable';\nexport * from './QPQBinaryData';\nexport * from './QpqContextIdentifier';\nexport * from './QpqExecutionTrace';\nexport * from './QpqFunctionRuntime';\nexport * from './QpqIsoDateTime';\nexport * from './QpqLogger';\nexport * from './QpqPagedData';\nexport * from './QueueEvent';\nexport * from './Readonlyify';\nexport * from './ScheduledEvent';\nexport * from './StorySession';\nexport * from './StreamRegistry';\nexport * from './UnboundLogicStory';\nexport * from './UnionToIntersection';\nexport * from './utils';\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export var CryptoActionType;
|
|
2
|
+
(function (CryptoActionType) {
|
|
3
|
+
CryptoActionType["Encrypt"] = "@quidproquo-core/Crypto/Encrypt";
|
|
4
|
+
CryptoActionType["Decrypt"] = "@quidproquo-core/Crypto/Decrypt";
|
|
5
|
+
})(CryptoActionType || (CryptoActionType = {}));
|
|
6
|
+
//# sourceMappingURL=CryptoActionType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CryptoActionType.js","sourceRoot":"","sources":["../../../../src/actions/crypto/CryptoActionType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,+DAA2C,CAAA;IAC3C,+DAA2C,CAAA;AAC7C,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B","sourcesContent":["export enum CryptoActionType {\n Encrypt = '@quidproquo-core/Crypto/Encrypt',\n Decrypt = '@quidproquo-core/Crypto/Decrypt',\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type CryptoContext = Record<string, string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CryptoContext.js","sourceRoot":"","sources":["../../../../src/actions/crypto/CryptoContext.ts"],"names":[],"mappings":"","sourcesContent":["// Opaque additional-authenticated-data for crypto operations: the same pairs\n// must be supplied at encrypt and decrypt or decryption fails. Values are NOT\n// encrypted and NOT secret (they appear in provider audit logs in the clear).\nexport type CryptoContext = Record<string, string>;\n"]}
|