@nlabs/reaktor 1.9.1 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/docs/GENERATION.md +86 -0
- package/lib/actions/contentGeneration.d.ts +22 -1
- package/lib/actions/contentGeneration.js +84 -16
- package/lib/actions/databaseAccounts.d.ts +14 -0
- package/lib/actions/databaseAccounts.js +211 -0
- package/lib/actions/databaseProvisioningLease.d.ts +6 -0
- package/lib/actions/databaseProvisioningLease.js +166 -0
- package/lib/actions/higgsfield.d.ts +2 -0
- package/lib/actions/higgsfield.js +7 -1
- package/lib/actions/imageGeneration.d.ts +5 -1
- package/lib/actions/imageGeneration.js +13 -2
- package/lib/actions/index.d.ts +2 -0
- package/lib/actions/index.js +3 -1
- package/lib/actions/videoGeneration.d.ts +5 -1
- package/lib/actions/videoGeneration.js +13 -2
- package/lib/adapters/higgsfieldAdapter.d.ts +21 -15
- package/lib/adapters/higgsfieldAdapter.js +24 -11
- package/lib/adapters/higgsfieldModelCatalog.d.ts +10 -0
- package/lib/adapters/higgsfieldModelCatalog.js +5363 -0
- package/lib/adapters/higgsfieldModels.d.ts +2 -0
- package/lib/adapters/higgsfieldModels.js +37 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.js +4 -1
- package/lib/objectTypes/contentGeneration.js +26 -3
- package/lib/objectTypes/imageGeneration.js +3 -2
- package/lib/objectTypes/videoGeneration.js +2 -1
- package/lib/types/databaseCredentials.types.d.ts +30 -0
- package/lib/types/databaseCredentials.types.js +3 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.js +2 -1
- package/lib/utils/databaseCredentials.d.ts +5 -0
- package/lib/utils/databaseCredentials.js +100 -0
- package/lib/utils/generationCallback.d.ts +23 -0
- package/lib/utils/generationCallback.js +49 -0
- package/lib/utils/index.d.ts +3 -0
- package/lib/utils/index.js +4 -1
- package/lib/utils/secretDatabase.d.ts +8 -0
- package/lib/utils/secretDatabase.js +153 -0
- package/lib/utils/testUtils.js +10 -2
- package/package.json +12 -10
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Ajv } from 'ajv';
|
|
2
|
+
import { getHiggsfieldModel } from './higgsfieldModelCatalog.js';
|
|
3
|
+
const validator = new Ajv({
|
|
4
|
+
allErrors: true,
|
|
5
|
+
strict: false
|
|
6
|
+
});
|
|
7
|
+
validator.addFormat('uri', (value)=>{
|
|
8
|
+
try {
|
|
9
|
+
new URL(value);
|
|
10
|
+
return true;
|
|
11
|
+
} catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
validator.addFormat('uuid', /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i);
|
|
16
|
+
validator.addFormat('float', {
|
|
17
|
+
type: 'number',
|
|
18
|
+
validate: Number.isFinite
|
|
19
|
+
});
|
|
20
|
+
const compiled = new Map();
|
|
21
|
+
/** Validates the documented schema, including conditional and nested model options. */ export const validateHiggsfieldModelInput = (modelId, input)=>{
|
|
22
|
+
const model = getHiggsfieldModel(modelId);
|
|
23
|
+
let validate = compiled.get(modelId);
|
|
24
|
+
if (!validate) {
|
|
25
|
+
validate = validator.compile({
|
|
26
|
+
...model.schema,
|
|
27
|
+
additionalProperties: false
|
|
28
|
+
});
|
|
29
|
+
compiled.set(modelId, validate);
|
|
30
|
+
}
|
|
31
|
+
if (!validate(input)) {
|
|
32
|
+
throw new Error(`Invalid ${model.name} options: ${validator.errorsText(validate.errors)}`);
|
|
33
|
+
}
|
|
34
|
+
return structuredClone(input);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWRhcHRlcnMvaGlnZ3NmaWVsZE1vZGVscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fqdn0gZnJvbSAnYWp2JztcblxuaW1wb3J0IHtnZXRIaWdnc2ZpZWxkTW9kZWx9IGZyb20gJy4vaGlnZ3NmaWVsZE1vZGVsQ2F0YWxvZy5qcyc7XG5cbmltcG9ydCB0eXBlIHtWYWxpZGF0ZUZ1bmN0aW9ufSBmcm9tICdhanYnO1xuXG5jb25zdCB2YWxpZGF0b3IgPSBuZXcgQWp2KHthbGxFcnJvcnM6IHRydWUsIHN0cmljdDogZmFsc2V9KTtcbnZhbGlkYXRvci5hZGRGb3JtYXQoJ3VyaScsICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIHRyeSB7XG4gICAgbmV3IFVSTCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2h7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59KTtcbnZhbGlkYXRvci5hZGRGb3JtYXQoJ3V1aWQnLCAvXlswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQvaSk7XG52YWxpZGF0b3IuYWRkRm9ybWF0KCdmbG9hdCcsIHt0eXBlOiAnbnVtYmVyJywgdmFsaWRhdGU6IE51bWJlci5pc0Zpbml0ZX0pO1xuY29uc3QgY29tcGlsZWQgPSBuZXcgTWFwPHN0cmluZywgVmFsaWRhdGVGdW5jdGlvbj4oKTtcblxuLyoqIFZhbGlkYXRlcyB0aGUgZG9jdW1lbnRlZCBzY2hlbWEsIGluY2x1ZGluZyBjb25kaXRpb25hbCBhbmQgbmVzdGVkIG1vZGVsIG9wdGlvbnMuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVIaWdnc2ZpZWxkTW9kZWxJbnB1dCA9IChtb2RlbElkOiBzdHJpbmcsIGlucHV0OiB1bmtub3duKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCBtb2RlbCA9IGdldEhpZ2dzZmllbGRNb2RlbChtb2RlbElkKTtcbiAgbGV0IHZhbGlkYXRlID0gY29tcGlsZWQuZ2V0KG1vZGVsSWQpO1xuICBpZighdmFsaWRhdGUpIHtcbiAgICB2YWxpZGF0ZSA9IHZhbGlkYXRvci5jb21waWxlKHsuLi5tb2RlbC5zY2hlbWEsIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZX0pO1xuICAgIGNvbXBpbGVkLnNldChtb2RlbElkLCB2YWxpZGF0ZSk7XG4gIH1cbiAgaWYoIXZhbGlkYXRlKGlucHV0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCAke21vZGVsLm5hbWV9IG9wdGlvbnM6ICR7dmFsaWRhdG9yLmVycm9yc1RleHQodmFsaWRhdGUuZXJyb3JzKX1gKTtcbiAgfVxuICByZXR1cm4gc3RydWN0dXJlZENsb25lKGlucHV0KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn07XG4iXSwibmFtZXMiOlsiQWp2IiwiZ2V0SGlnZ3NmaWVsZE1vZGVsIiwidmFsaWRhdG9yIiwiYWxsRXJyb3JzIiwic3RyaWN0IiwiYWRkRm9ybWF0IiwidmFsdWUiLCJVUkwiLCJ0eXBlIiwidmFsaWRhdGUiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNvbXBpbGVkIiwiTWFwIiwidmFsaWRhdGVIaWdnc2ZpZWxkTW9kZWxJbnB1dCIsIm1vZGVsSWQiLCJpbnB1dCIsIm1vZGVsIiwiZ2V0IiwiY29tcGlsZSIsInNjaGVtYSIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwic2V0IiwiRXJyb3IiLCJuYW1lIiwiZXJyb3JzVGV4dCIsImVycm9ycyIsInN0cnVjdHVyZWRDbG9uZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsR0FBRyxRQUFPLE1BQU07QUFFeEIsU0FBUUMsa0JBQWtCLFFBQU8sOEJBQThCO0FBSS9ELE1BQU1DLFlBQVksSUFBSUYsSUFBSTtJQUFDRyxXQUFXO0lBQU1DLFFBQVE7QUFBSztBQUN6REYsVUFBVUcsU0FBUyxDQUFDLE9BQU8sQ0FBQ0M7SUFDMUIsSUFBSTtRQUNGLElBQUlDLElBQUlEO1FBQ1IsT0FBTztJQUNULEVBQUUsT0FBSztRQUNMLE9BQU87SUFDVDtBQUNGO0FBQ0FKLFVBQVVHLFNBQVMsQ0FBQyxRQUFRO0FBQzVCSCxVQUFVRyxTQUFTLENBQUMsU0FBUztJQUFDRyxNQUFNO0lBQVVDLFVBQVVDLE9BQU9DLFFBQVE7QUFBQTtBQUN2RSxNQUFNQyxXQUFXLElBQUlDO0FBRXJCLHFGQUFxRixHQUNyRixPQUFPLE1BQU1DLCtCQUErQixDQUFDQyxTQUFpQkM7SUFDNUQsTUFBTUMsUUFBUWhCLG1CQUFtQmM7SUFDakMsSUFBSU4sV0FBV0csU0FBU00sR0FBRyxDQUFDSDtJQUM1QixJQUFHLENBQUNOLFVBQVU7UUFDWkEsV0FBV1AsVUFBVWlCLE9BQU8sQ0FBQztZQUFDLEdBQUdGLE1BQU1HLE1BQU07WUFBRUMsc0JBQXNCO1FBQUs7UUFDMUVULFNBQVNVLEdBQUcsQ0FBQ1AsU0FBU047SUFDeEI7SUFDQSxJQUFHLENBQUNBLFNBQVNPLFFBQVE7UUFDbkIsTUFBTSxJQUFJTyxNQUFNLENBQUMsUUFBUSxFQUFFTixNQUFNTyxJQUFJLENBQUMsVUFBVSxFQUFFdEIsVUFBVXVCLFVBQVUsQ0FBQ2hCLFNBQVNpQixNQUFNLEdBQUc7SUFDM0Y7SUFDQSxPQUFPQyxnQkFBZ0JYO0FBQ3pCLEVBQUUifQ==
|
package/lib/index.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export { schemaComposer } from 'graphql-compose';
|
|
|
9
9
|
export * from './actions/index.js';
|
|
10
10
|
export * from './adapters/index.js';
|
|
11
11
|
export * from './config.js';
|
|
12
|
+
export type { DatabaseConnectionMetadata, DatabaseCredentialIdentity, DatabaseCredentialRequest, DatabaseCredentialSecret, DatabaseEnvironment, DatabaseProvisioningLease } from './types/databaseCredentials.types.js';
|
|
13
|
+
export { getAppDatabaseName, getDatabaseCredentialIdentity, parseDatabaseCredentialSecret, toDatabaseConnectionMetadata } from './utils/databaseCredentials.js';
|
|
12
14
|
export { COLLECTIONS, ConnectionType as ConnectionTypes, DEFAULT_DOCUMENT_COLLECTIONS, DEFAULT_EDGE_COLLECTIONS, EDGES, PrivacyLevel, ReactionType } from './constants/collections.js';
|
|
13
15
|
export type { ConnectionTypeType as ConnectionTypeValue, PrivacyLevelType, ReactionTypeType } from './constants/collections.js';
|
|
14
16
|
export { notifyUser } from './lambdas/actions/websockets.js';
|
|
@@ -24,3 +26,5 @@ export * from './utils/index.js';
|
|
|
24
26
|
export * from './videoProcessing.js';
|
|
25
27
|
export declare const reaktorSchema = "";
|
|
26
28
|
export declare const reaktorResolvers: import("graphql-compose/lib/SchemaComposer.js").GraphQLToolsResolveMethods<any>;
|
|
29
|
+
export * from './adapters/higgsfieldModelCatalog.js';
|
|
30
|
+
export * from './adapters/higgsfieldModels.js';
|
package/lib/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export { schemaComposer } from 'graphql-compose';
|
|
|
7
7
|
export * from './actions/index.js';
|
|
8
8
|
export * from './adapters/index.js';
|
|
9
9
|
export * from './config.js';
|
|
10
|
+
export { getAppDatabaseName, getDatabaseCredentialIdentity, parseDatabaseCredentialSecret, toDatabaseConnectionMetadata } from './utils/databaseCredentials.js';
|
|
10
11
|
export { COLLECTIONS, ConnectionType as ConnectionTypes, DEFAULT_DOCUMENT_COLLECTIONS, DEFAULT_EDGE_COLLECTIONS, EDGES, PrivacyLevel, ReactionType } from './constants/collections.js';
|
|
11
12
|
export { notifyUser } from './lambdas/actions/websockets.js';
|
|
12
13
|
export * from './handlers/graphqlHandler.js';
|
|
@@ -21,5 +22,7 @@ export * from './utils/index.js';
|
|
|
21
22
|
export * from './videoProcessing.js';
|
|
22
23
|
export const reaktorSchema = ''; // printSchema(schemaComposer.buildSchema());
|
|
23
24
|
export const reaktorResolvers = schemaComposer.getResolveMethods();
|
|
25
|
+
export * from './adapters/higgsfieldModelCatalog.js';
|
|
26
|
+
export * from './adapters/higgsfieldModels.js';
|
|
24
27
|
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmV4cG9ydCB7XG4gIGdyYXBocWwsIEdyYXBoUUxCb29sZWFuLFxuICBHcmFwaFFMRmxvYXQsXG4gIEdyYXBoUUxJRCxcbiAgR3JhcGhRTEludCxcbiAgR3JhcGhRTExpc3QsIEdyYXBoUUxOb25OdWxsLCBHcmFwaFFMT2JqZWN0VHlwZSwgR3JhcGhRTFN0cmluZywgZ3JhcGhxbFN5bmMsXG4gIHByaW50U2NoZW1hXG59IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHtzY2hlbWFDb21wb3Nlcn0gZnJvbSAnZ3JhcGhxbC1jb21wb3NlJztcblxuXG5leHBvcnQgdHlwZSB7RXhlY3V0aW9uUmVzdWx0fSBmcm9tICdncmFwaHFsJztcbmV4cG9ydCB0eXBlIHtJbnB1dFR5cGVDb21wb3NlciwgT2JqZWN0VHlwZUNvbXBvc2VyfSBmcm9tICdncmFwaHFsLWNvbXBvc2UnO1xuXG5leHBvcnQge3NjaGVtYUNvbXBvc2VyfSBmcm9tICdncmFwaHFsLWNvbXBvc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zL2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYWRhcHRlcnMvaW5kZXguanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcuanMnO1xuZXhwb3J0IHR5cGUge0RhdGFiYXNlQ29ubmVjdGlvbk1ldGFkYXRhLCBEYXRhYmFzZUNyZWRlbnRpYWxJZGVudGl0eSwgRGF0YWJhc2VDcmVkZW50aWFsUmVxdWVzdCwgRGF0YWJhc2VDcmVkZW50aWFsU2VjcmV0LCBEYXRhYmFzZUVudmlyb25tZW50LCBEYXRhYmFzZVByb3Zpc2lvbmluZ0xlYXNlfSBmcm9tICcuL3R5cGVzL2RhdGFiYXNlQ3JlZGVudGlhbHMudHlwZXMuanMnO1xuZXhwb3J0IHtnZXRBcHBEYXRhYmFzZU5hbWUsIGdldERhdGFiYXNlQ3JlZGVudGlhbElkZW50aXR5LCBwYXJzZURhdGFiYXNlQ3JlZGVudGlhbFNlY3JldCwgdG9EYXRhYmFzZUNvbm5lY3Rpb25NZXRhZGF0YX0gZnJvbSAnLi91dGlscy9kYXRhYmFzZUNyZWRlbnRpYWxzLmpzJztcbmV4cG9ydCB7XG4gIENPTExFQ1RJT05TLFxuICBDb25uZWN0aW9uVHlwZSBhcyBDb25uZWN0aW9uVHlwZXMsXG4gIERFRkFVTFRfRE9DVU1FTlRfQ09MTEVDVElPTlMsXG4gIERFRkFVTFRfRURHRV9DT0xMRUNUSU9OUyxcbiAgRURHRVMsXG4gIFByaXZhY3lMZXZlbCxcbiAgUmVhY3Rpb25UeXBlXG59IGZyb20gJy4vY29uc3RhbnRzL2NvbGxlY3Rpb25zLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29ubmVjdGlvblR5cGVUeXBlIGFzIENvbm5lY3Rpb25UeXBlVmFsdWUsXG4gIFByaXZhY3lMZXZlbFR5cGUsXG4gIFJlYWN0aW9uVHlwZVR5cGVcbn0gZnJvbSAnLi9jb25zdGFudHMvY29sbGVjdGlvbnMuanMnO1xuZXhwb3J0IHtub3RpZnlVc2VyfSBmcm9tICcuL2xhbWJkYXMvYWN0aW9ucy93ZWJzb2NrZXRzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vaGFuZGxlcnMvZ3JhcGhxbEhhbmRsZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9sYW1iZGFzL2F1dGhvcml6ZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9sYW1iZGFzL2Nvbm5lY3Rpb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9tdXRhdGlvbnMvaW5kZXguanMnO1xuZXhwb3J0ICogZnJvbSAnLi9vYmplY3RUeXBlcy9pbmRleC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXJpZXMvaW5kZXguanMnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9pbmRleC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3VwbG9hZC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlkZW9Qcm9jZXNzaW5nLmpzJztcblxuZXhwb3J0IGNvbnN0IHJlYWt0b3JTY2hlbWEgPSAnJzsvLyBwcmludFNjaGVtYShzY2hlbWFDb21wb3Nlci5idWlsZFNjaGVtYSgpKTtcbmV4cG9ydCBjb25zdCByZWFrdG9yUmVzb2x2ZXJzID0gc2NoZW1hQ29tcG9zZXIuZ2V0UmVzb2x2ZU1ldGhvZHMoKTtcblxuZXhwb3J0ICogZnJvbSAnLi9hZGFwdGVycy9oaWdnc2ZpZWxkTW9kZWxDYXRhbG9nLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYWRhcHRlcnMvaGlnZ3NmaWVsZE1vZGVscy5qcyc7XG4iXSwibmFtZXMiOlsiZ3JhcGhxbCIsIkdyYXBoUUxCb29sZWFuIiwiR3JhcGhRTEZsb2F0IiwiR3JhcGhRTElEIiwiR3JhcGhRTEludCIsIkdyYXBoUUxMaXN0IiwiR3JhcGhRTE5vbk51bGwiLCJHcmFwaFFMT2JqZWN0VHlwZSIsIkdyYXBoUUxTdHJpbmciLCJncmFwaHFsU3luYyIsInByaW50U2NoZW1hIiwic2NoZW1hQ29tcG9zZXIiLCJnZXRBcHBEYXRhYmFzZU5hbWUiLCJnZXREYXRhYmFzZUNyZWRlbnRpYWxJZGVudGl0eSIsInBhcnNlRGF0YWJhc2VDcmVkZW50aWFsU2VjcmV0IiwidG9EYXRhYmFzZUNvbm5lY3Rpb25NZXRhZGF0YSIsIkNPTExFQ1RJT05TIiwiQ29ubmVjdGlvblR5cGUiLCJDb25uZWN0aW9uVHlwZXMiLCJERUZBVUxUX0RPQ1VNRU5UX0NPTExFQ1RJT05TIiwiREVGQVVMVF9FREdFX0NPTExFQ1RJT05TIiwiRURHRVMiLCJQcml2YWN5TGV2ZWwiLCJSZWFjdGlvblR5cGUiLCJub3RpZnlVc2VyIiwicmVha3RvclNjaGVtYSIsInJlYWt0b3JSZXNvbHZlcnMiLCJnZXRSZXNvbHZlTWV0aG9kcyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FDRUEsT0FBTyxFQUFFQyxjQUFjLEVBQ3ZCQyxZQUFZLEVBQ1pDLFNBQVMsRUFDVEMsVUFBVSxFQUNWQyxXQUFXLEVBQUVDLGNBQWMsRUFBRUMsaUJBQWlCLEVBQUVDLGFBQWEsRUFBRUMsV0FBVyxFQUMxRUMsV0FBVyxRQUNOLFVBQVU7QUFDakIsU0FBUUMsY0FBYyxRQUFPLGtCQUFrQjtBQU0vQyxTQUFRQSxjQUFjLFFBQU8sa0JBQWtCO0FBQy9DLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsc0JBQXNCO0FBQ3BDLGNBQWMsY0FBYztBQUU1QixTQUFRQyxrQkFBa0IsRUFBRUMsNkJBQTZCLEVBQUVDLDZCQUE2QixFQUFFQyw0QkFBNEIsUUFBTyxpQ0FBaUM7QUFDOUosU0FDRUMsV0FBVyxFQUNYQyxrQkFBa0JDLGVBQWUsRUFDakNDLDRCQUE0QixFQUM1QkMsd0JBQXdCLEVBQ3hCQyxLQUFLLEVBQ0xDLFlBQVksRUFDWkMsWUFBWSxRQUNQLDZCQUE2QjtBQU1wQyxTQUFRQyxVQUFVLFFBQU8sa0NBQWtDO0FBQzNELGNBQWMsK0JBQStCO0FBQzdDLGNBQWMsMEJBQTBCO0FBQ3hDLGNBQWMsMEJBQTBCO0FBQ3hDLGNBQWMsdUJBQXVCO0FBQ3JDLGNBQWMseUJBQXlCO0FBQ3ZDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsbUJBQW1CO0FBQ2pDLGNBQWMsY0FBYztBQUM1QixjQUFjLG1CQUFtQjtBQUNqQyxjQUFjLHVCQUF1QjtBQUVyQyxPQUFPLE1BQU1DLGdCQUFnQixHQUFHLENBQUEsNkNBQTZDO0FBQzdFLE9BQU8sTUFBTUMsbUJBQW1CZixlQUFlZ0IsaUJBQWlCLEdBQUc7QUFFbkUsY0FBYyx1Q0FBdUM7QUFDckQsY0FBYyxpQ0FBaUMifQ==
|
|
@@ -1,12 +1,35 @@
|
|
|
1
1
|
import { schemaComposer } from 'graphql-compose';
|
|
2
|
+
const messageInputType = schemaComposer.createInputTC({
|
|
3
|
+
fields: {
|
|
4
|
+
content: 'String!',
|
|
5
|
+
role: 'String!'
|
|
6
|
+
},
|
|
7
|
+
name: 'ContentGenerationMessageInput'
|
|
8
|
+
});
|
|
9
|
+
const responseFormatInputType = schemaComposer.createInputTC({
|
|
10
|
+
fields: {
|
|
11
|
+
description: 'String',
|
|
12
|
+
name: 'String',
|
|
13
|
+
schema: 'JSON',
|
|
14
|
+
strict: 'Boolean',
|
|
15
|
+
type: 'String!'
|
|
16
|
+
},
|
|
17
|
+
name: 'ContentGenerationResponseFormatInput'
|
|
18
|
+
});
|
|
2
19
|
export const contentGenerationInputType = schemaComposer.createInputTC({
|
|
3
20
|
fields: {
|
|
4
21
|
maxTokens: 'Int',
|
|
22
|
+
messages: [
|
|
23
|
+
messageInputType.NonNull
|
|
24
|
+
],
|
|
5
25
|
model: 'String',
|
|
6
|
-
prompt: 'String
|
|
26
|
+
prompt: 'String',
|
|
7
27
|
provider: 'String!',
|
|
28
|
+
reasoningEffort: 'String',
|
|
29
|
+
responseFormat: responseFormatInputType,
|
|
8
30
|
search: 'Boolean',
|
|
9
|
-
system: 'String'
|
|
31
|
+
system: 'String',
|
|
32
|
+
timeoutMs: 'Int'
|
|
10
33
|
},
|
|
11
34
|
name: 'ContentGenerationInput'
|
|
12
35
|
});
|
|
@@ -27,4 +50,4 @@ export const generatedContentType = schemaComposer.createObjectTC({
|
|
|
27
50
|
name: 'GeneratedContent'
|
|
28
51
|
});
|
|
29
52
|
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvb2JqZWN0VHlwZXMvY29udGVudEdlbmVyYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzY2hlbWFDb21wb3Nlcn0gZnJvbSAnZ3JhcGhxbC1jb21wb3NlJztcblxuY29uc3QgbWVzc2FnZUlucHV0VHlwZSA9IHNjaGVtYUNvbXBvc2VyLmNyZWF0ZUlucHV0VEMoe1xuICBmaWVsZHM6IHtjb250ZW50OiAnU3RyaW5nIScsIHJvbGU6ICdTdHJpbmchJ30sXG4gIG5hbWU6ICdDb250ZW50R2VuZXJhdGlvbk1lc3NhZ2VJbnB1dCdcbn0pO1xuY29uc3QgcmVzcG9uc2VGb3JtYXRJbnB1dFR5cGUgPSBzY2hlbWFDb21wb3Nlci5jcmVhdGVJbnB1dFRDKHtcbiAgZmllbGRzOiB7ZGVzY3JpcHRpb246ICdTdHJpbmcnLCBuYW1lOiAnU3RyaW5nJywgc2NoZW1hOiAnSlNPTicsIHN0cmljdDogJ0Jvb2xlYW4nLCB0eXBlOiAnU3RyaW5nISd9LFxuICBuYW1lOiAnQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUZvcm1hdElucHV0J1xufSk7XG5cbmV4cG9ydCBjb25zdCBjb250ZW50R2VuZXJhdGlvbklucHV0VHlwZSA9IHNjaGVtYUNvbXBvc2VyLmNyZWF0ZUlucHV0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBtYXhUb2tlbnM6ICdJbnQnLFxuICAgIG1lc3NhZ2VzOiBbbWVzc2FnZUlucHV0VHlwZS5Ob25OdWxsXSxcbiAgICBtb2RlbDogJ1N0cmluZycsXG4gICAgcHJvbXB0OiAnU3RyaW5nJyxcbiAgICBwcm92aWRlcjogJ1N0cmluZyEnLFxuICAgIHJlYXNvbmluZ0VmZm9ydDogJ1N0cmluZycsXG4gICAgcmVzcG9uc2VGb3JtYXQ6IHJlc3BvbnNlRm9ybWF0SW5wdXRUeXBlLFxuICAgIHNlYXJjaDogJ0Jvb2xlYW4nLFxuICAgIHN5c3RlbTogJ1N0cmluZycsXG4gICAgdGltZW91dE1zOiAnSW50J1xuICB9LFxuICBuYW1lOiAnQ29udGVudEdlbmVyYXRpb25JbnB1dCdcbn0pO1xuY29uc3Qgc291cmNlVHlwZSA9IHNjaGVtYUNvbXBvc2VyLmNyZWF0ZU9iamVjdFRDKHtcbiAgZmllbGRzOiB7dGl0bGU6ICdTdHJpbmchJywgdXJsOiAnU3RyaW5nISd9LFxuICBuYW1lOiAnR2VuZXJhdGVkQ29udGVudFNvdXJjZSdcbn0pO1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlZENvbnRlbnRUeXBlID0gc2NoZW1hQ29tcG9zZXIuY3JlYXRlT2JqZWN0VEMoe1xuICBmaWVsZHM6IHtzb3VyY2VzOiBbc291cmNlVHlwZV0sIHRleHQ6ICdTdHJpbmchJ30sXG4gIG5hbWU6ICdHZW5lcmF0ZWRDb250ZW50J1xufSk7XG4iXSwibmFtZXMiOlsic2NoZW1hQ29tcG9zZXIiLCJtZXNzYWdlSW5wdXRUeXBlIiwiY3JlYXRlSW5wdXRUQyIsImZpZWxkcyIsImNvbnRlbnQiLCJyb2xlIiwibmFtZSIsInJlc3BvbnNlRm9ybWF0SW5wdXRUeXBlIiwiZGVzY3JpcHRpb24iLCJzY2hlbWEiLCJzdHJpY3QiLCJ0eXBlIiwiY29udGVudEdlbmVyYXRpb25JbnB1dFR5cGUiLCJtYXhUb2tlbnMiLCJtZXNzYWdlcyIsIk5vbk51bGwiLCJtb2RlbCIsInByb21wdCIsInByb3ZpZGVyIiwicmVhc29uaW5nRWZmb3J0IiwicmVzcG9uc2VGb3JtYXQiLCJzZWFyY2giLCJzeXN0ZW0iLCJ0aW1lb3V0TXMiLCJzb3VyY2VUeXBlIiwiY3JlYXRlT2JqZWN0VEMiLCJ0aXRsZSIsInVybCIsImdlbmVyYXRlZENvbnRlbnRUeXBlIiwic291cmNlcyIsInRleHQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLGNBQWMsUUFBTyxrQkFBa0I7QUFFL0MsTUFBTUMsbUJBQW1CRCxlQUFlRSxhQUFhLENBQUM7SUFDcERDLFFBQVE7UUFBQ0MsU0FBUztRQUFXQyxNQUFNO0lBQVM7SUFDNUNDLE1BQU07QUFDUjtBQUNBLE1BQU1DLDBCQUEwQlAsZUFBZUUsYUFBYSxDQUFDO0lBQzNEQyxRQUFRO1FBQUNLLGFBQWE7UUFBVUYsTUFBTTtRQUFVRyxRQUFRO1FBQVFDLFFBQVE7UUFBV0MsTUFBTTtJQUFTO0lBQ2xHTCxNQUFNO0FBQ1I7QUFFQSxPQUFPLE1BQU1NLDZCQUE2QlosZUFBZUUsYUFBYSxDQUFDO0lBQ3JFQyxRQUFRO1FBQ05VLFdBQVc7UUFDWEMsVUFBVTtZQUFDYixpQkFBaUJjLE9BQU87U0FBQztRQUNwQ0MsT0FBTztRQUNQQyxRQUFRO1FBQ1JDLFVBQVU7UUFDVkMsaUJBQWlCO1FBQ2pCQyxnQkFBZ0JiO1FBQ2hCYyxRQUFRO1FBQ1JDLFFBQVE7UUFDUkMsV0FBVztJQUNiO0lBQ0FqQixNQUFNO0FBQ1IsR0FBRztBQUNILE1BQU1rQixhQUFheEIsZUFBZXlCLGNBQWMsQ0FBQztJQUMvQ3RCLFFBQVE7UUFBQ3VCLE9BQU87UUFBV0MsS0FBSztJQUFTO0lBQ3pDckIsTUFBTTtBQUNSO0FBQ0EsT0FBTyxNQUFNc0IsdUJBQXVCNUIsZUFBZXlCLGNBQWMsQ0FBQztJQUNoRXRCLFFBQVE7UUFBQzBCLFNBQVM7WUFBQ0w7U0FBVztRQUFFTSxNQUFNO0lBQVM7SUFDL0N4QixNQUFNO0FBQ1IsR0FBRyJ9
|
|
@@ -6,8 +6,9 @@ export const imageGenerationInputType = schemaComposer.createInputTC({
|
|
|
6
6
|
enhancePrompt: 'Boolean',
|
|
7
7
|
imageUrls: '[String!]',
|
|
8
8
|
model: 'String',
|
|
9
|
+
modelInput: 'JSON',
|
|
9
10
|
presetId: 'String',
|
|
10
|
-
prompt: 'String
|
|
11
|
+
prompt: 'String',
|
|
11
12
|
provider: 'String!',
|
|
12
13
|
quality: 'String',
|
|
13
14
|
resolution: 'String',
|
|
@@ -30,4 +31,4 @@ export const imageGenerationResultType = schemaComposer.createObjectTC({
|
|
|
30
31
|
name: 'ImageGenerationResult'
|
|
31
32
|
});
|
|
32
33
|
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvb2JqZWN0VHlwZXMvaW1hZ2VHZW5lcmF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2NoZW1hQ29tcG9zZXJ9IGZyb20gJ2dyYXBocWwtY29tcG9zZSc7XG5cbmV4cG9ydCBjb25zdCBpbWFnZUdlbmVyYXRpb25JbnB1dFR5cGUgPSBzY2hlbWFDb21wb3Nlci5jcmVhdGVJbnB1dFRDKHtcbiAgZmllbGRzOiB7XG4gICAgYXNwZWN0UmF0aW86ICdTdHJpbmcnLCBiYXRjaFNpemU6ICdJbnQnLCBlbmhhbmNlUHJvbXB0OiAnQm9vbGVhbicsIGltYWdlVXJsczogJ1tTdHJpbmchXScsXG4gICAgbW9kZWw6ICdTdHJpbmcnLCBtb2RlbElucHV0OiAnSlNPTicsIHByZXNldElkOiAnU3RyaW5nJywgcHJvbXB0OiAnU3RyaW5nJywgcHJvdmlkZXI6ICdTdHJpbmchJywgcXVhbGl0eTogJ1N0cmluZycsXG4gICAgcmVzb2x1dGlvbjogJ1N0cmluZycsIHNlZWQ6ICdJbnQnLCBzaXplOiAnU3RyaW5nJywgc3R5bGVJZDogJ1N0cmluZydcbiAgfSxcbiAgbmFtZTogJ0ltYWdlR2VuZXJhdGlvbklucHV0J1xufSk7XG5cbmV4cG9ydCBjb25zdCBpbWFnZUdlbmVyYXRpb25SZXN1bHRUeXBlID0gc2NoZW1hQ29tcG9zZXIuY3JlYXRlT2JqZWN0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBjYW5jZWxVcmw6ICdTdHJpbmcnLCBpbWFnZUJhc2U2NDogJ1N0cmluZycsIG1pbWVUeXBlOiAnU3RyaW5nJywgcHJvdmlkZXI6ICdTdHJpbmchJywgcmVxdWVzdElkOiAnSUQhJywgc3RhdHVzOiAnU3RyaW5nIScsIHN0YXR1c1VybDogJ1N0cmluZydcbiAgfSxcbiAgbmFtZTogJ0ltYWdlR2VuZXJhdGlvblJlc3VsdCdcbn0pO1xuIl0sIm5hbWVzIjpbInNjaGVtYUNvbXBvc2VyIiwiaW1hZ2VHZW5lcmF0aW9uSW5wdXRUeXBlIiwiY3JlYXRlSW5wdXRUQyIsImZpZWxkcyIsImFzcGVjdFJhdGlvIiwiYmF0Y2hTaXplIiwiZW5oYW5jZVByb21wdCIsImltYWdlVXJscyIsIm1vZGVsIiwibW9kZWxJbnB1dCIsInByZXNldElkIiwicHJvbXB0IiwicHJvdmlkZXIiLCJxdWFsaXR5IiwicmVzb2x1dGlvbiIsInNlZWQiLCJzaXplIiwic3R5bGVJZCIsIm5hbWUiLCJpbWFnZUdlbmVyYXRpb25SZXN1bHRUeXBlIiwiY3JlYXRlT2JqZWN0VEMiLCJjYW5jZWxVcmwiLCJpbWFnZUJhc2U2NCIsIm1pbWVUeXBlIiwicmVxdWVzdElkIiwic3RhdHVzIiwic3RhdHVzVXJsIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxjQUFjLFFBQU8sa0JBQWtCO0FBRS9DLE9BQU8sTUFBTUMsMkJBQTJCRCxlQUFlRSxhQUFhLENBQUM7SUFDbkVDLFFBQVE7UUFDTkMsYUFBYTtRQUFVQyxXQUFXO1FBQU9DLGVBQWU7UUFBV0MsV0FBVztRQUM5RUMsT0FBTztRQUFVQyxZQUFZO1FBQVFDLFVBQVU7UUFBVUMsUUFBUTtRQUFVQyxVQUFVO1FBQVdDLFNBQVM7UUFDekdDLFlBQVk7UUFBVUMsTUFBTTtRQUFPQyxNQUFNO1FBQVVDLFNBQVM7SUFDOUQ7SUFDQUMsTUFBTTtBQUNSLEdBQUc7QUFFSCxPQUFPLE1BQU1DLDRCQUE0Qm5CLGVBQWVvQixjQUFjLENBQUM7SUFDckVqQixRQUFRO1FBQ05rQixXQUFXO1FBQVVDLGFBQWE7UUFBVUMsVUFBVTtRQUFVWCxVQUFVO1FBQVdZLFdBQVc7UUFBT0MsUUFBUTtRQUFXQyxXQUFXO0lBQ3ZJO0lBQ0FSLE1BQU07QUFDUixHQUFHIn0=
|
|
@@ -9,6 +9,7 @@ export const videoGenerationInputType = schemaComposer.createInputTC({
|
|
|
9
9
|
imageUrl: 'String',
|
|
10
10
|
imageUrls: '[String!]',
|
|
11
11
|
model: 'String',
|
|
12
|
+
modelInput: 'JSON',
|
|
12
13
|
outputFormat: 'String',
|
|
13
14
|
prompt: 'String',
|
|
14
15
|
provider: 'String',
|
|
@@ -28,4 +29,4 @@ export const videoGenerationResultType = schemaComposer.createObjectTC({
|
|
|
28
29
|
name: 'VideoGenerationResult'
|
|
29
30
|
});
|
|
30
31
|
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvb2JqZWN0VHlwZXMvdmlkZW9HZW5lcmF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2NoZW1hQ29tcG9zZXJ9IGZyb20gJ2dyYXBocWwtY29tcG9zZSc7XG5cbmV4cG9ydCBjb25zdCB2aWRlb0dlbmVyYXRpb25JbnB1dFR5cGUgPSBzY2hlbWFDb21wb3Nlci5jcmVhdGVJbnB1dFRDKHtcbiAgZmllbGRzOiB7XG4gICAgYXNwZWN0UmF0aW86ICdTdHJpbmcnLFxuICAgIGF1ZGlvVXJsczogJ1tTdHJpbmchXScsXG4gICAgZHVyYXRpb246ICdJbnQnLFxuICAgIGVuZEltYWdlVXJsOiAnU3RyaW5nJyxcbiAgICBnZW5lcmF0ZUF1ZGlvOiAnQm9vbGVhbicsXG4gICAgaW1hZ2VVcmw6ICdTdHJpbmcnLFxuICAgIGltYWdlVXJsczogJ1tTdHJpbmchXScsXG4gICAgbW9kZWw6ICdTdHJpbmcnLCBtb2RlbElucHV0OiAnSlNPTicsIG91dHB1dEZvcm1hdDogJ1N0cmluZycsXG4gICAgcHJvbXB0OiAnU3RyaW5nJyxcbiAgICBwcm92aWRlcjogJ1N0cmluZycsXG4gICAgcmVzb2x1dGlvbjogJ1N0cmluZycsXG4gICAgdmlkZW9VcmxzOiAnW1N0cmluZyFdJ1xuICB9LFxuICBuYW1lOiAnVmlkZW9HZW5lcmF0aW9uSW5wdXQnXG59KTtcbmV4cG9ydCBjb25zdCB2aWRlb0dlbmVyYXRpb25SZXN1bHRUeXBlID0gc2NoZW1hQ29tcG9zZXIuY3JlYXRlT2JqZWN0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBjYW5jZWxVcmw6ICdTdHJpbmcnLFxuICAgIHByb3ZpZGVyOiAnU3RyaW5nIScsXG4gICAgcmVxdWVzdElkOiAnU3RyaW5nIScsXG4gICAgc3RhdHVzOiAnU3RyaW5nIScsXG4gICAgc3RhdHVzVXJsOiAnU3RyaW5nISdcbiAgfSxcbiAgbmFtZTogJ1ZpZGVvR2VuZXJhdGlvblJlc3VsdCdcbn0pO1xuIl0sIm5hbWVzIjpbInNjaGVtYUNvbXBvc2VyIiwidmlkZW9HZW5lcmF0aW9uSW5wdXRUeXBlIiwiY3JlYXRlSW5wdXRUQyIsImZpZWxkcyIsImFzcGVjdFJhdGlvIiwiYXVkaW9VcmxzIiwiZHVyYXRpb24iLCJlbmRJbWFnZVVybCIsImdlbmVyYXRlQXVkaW8iLCJpbWFnZVVybCIsImltYWdlVXJscyIsIm1vZGVsIiwibW9kZWxJbnB1dCIsIm91dHB1dEZvcm1hdCIsInByb21wdCIsInByb3ZpZGVyIiwicmVzb2x1dGlvbiIsInZpZGVvVXJscyIsIm5hbWUiLCJ2aWRlb0dlbmVyYXRpb25SZXN1bHRUeXBlIiwiY3JlYXRlT2JqZWN0VEMiLCJjYW5jZWxVcmwiLCJyZXF1ZXN0SWQiLCJzdGF0dXMiLCJzdGF0dXNVcmwiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLGNBQWMsUUFBTyxrQkFBa0I7QUFFL0MsT0FBTyxNQUFNQywyQkFBMkJELGVBQWVFLGFBQWEsQ0FBQztJQUNuRUMsUUFBUTtRQUNOQyxhQUFhO1FBQ2JDLFdBQVc7UUFDWEMsVUFBVTtRQUNWQyxhQUFhO1FBQ2JDLGVBQWU7UUFDZkMsVUFBVTtRQUNWQyxXQUFXO1FBQ1hDLE9BQU87UUFBVUMsWUFBWTtRQUFRQyxjQUFjO1FBQ25EQyxRQUFRO1FBQ1JDLFVBQVU7UUFDVkMsWUFBWTtRQUNaQyxXQUFXO0lBQ2I7SUFDQUMsTUFBTTtBQUNSLEdBQUc7QUFDSCxPQUFPLE1BQU1DLDRCQUE0Qm5CLGVBQWVvQixjQUFjLENBQUM7SUFDckVqQixRQUFRO1FBQ05rQixXQUFXO1FBQ1hOLFVBQVU7UUFDVk8sV0FBVztRQUNYQyxRQUFRO1FBQ1JDLFdBQVc7SUFDYjtJQUNBTixNQUFNO0FBQ1IsR0FBRyJ9
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type DatabaseEnvironment = 'development' | 'production';
|
|
2
|
+
export type DatabaseCredentialRequest = Readonly<{
|
|
3
|
+
appId: string;
|
|
4
|
+
environment: DatabaseEnvironment;
|
|
5
|
+
}>;
|
|
6
|
+
export type DatabaseCredentialIdentity = Readonly<DatabaseCredentialRequest & {
|
|
7
|
+
databaseName: string;
|
|
8
|
+
secretName: string;
|
|
9
|
+
username: string;
|
|
10
|
+
}>;
|
|
11
|
+
export type DatabaseCredentialSecret = Readonly<DatabaseCredentialIdentity & {
|
|
12
|
+
host: string;
|
|
13
|
+
password: string;
|
|
14
|
+
port: number;
|
|
15
|
+
schemaVersion: 1;
|
|
16
|
+
}>;
|
|
17
|
+
export type DatabaseConnectionMetadata = Readonly<DatabaseCredentialIdentity & {
|
|
18
|
+
host: string;
|
|
19
|
+
port: number;
|
|
20
|
+
secretArn?: string;
|
|
21
|
+
status: 'not-configured' | 'provisioning' | 'ready' | 'conflict' | 'failed';
|
|
22
|
+
}>;
|
|
23
|
+
export type DatabaseConnectionCredential = Readonly<DatabaseConnectionMetadata & {
|
|
24
|
+
password: string;
|
|
25
|
+
}>;
|
|
26
|
+
export type DatabaseProvisioningLease = Readonly<{
|
|
27
|
+
key: string;
|
|
28
|
+
owner: string;
|
|
29
|
+
expiresAt: number;
|
|
30
|
+
}>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { };
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdHlwZXMvZGF0YWJhc2VDcmVkZW50aWFscy50eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBEYXRhYmFzZUVudmlyb25tZW50ID0gJ2RldmVsb3BtZW50JyB8ICdwcm9kdWN0aW9uJztcblxuZXhwb3J0IHR5cGUgRGF0YWJhc2VDcmVkZW50aWFsUmVxdWVzdCA9IFJlYWRvbmx5PHtcbiAgYXBwSWQ6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IERhdGFiYXNlRW52aXJvbm1lbnQ7XG59PjtcblxuZXhwb3J0IHR5cGUgRGF0YWJhc2VDcmVkZW50aWFsSWRlbnRpdHkgPSBSZWFkb25seTxEYXRhYmFzZUNyZWRlbnRpYWxSZXF1ZXN0ICYge1xuICBkYXRhYmFzZU5hbWU6IHN0cmluZztcbiAgc2VjcmV0TmFtZTogc3RyaW5nO1xuICB1c2VybmFtZTogc3RyaW5nO1xufT47XG5cbmV4cG9ydCB0eXBlIERhdGFiYXNlQ3JlZGVudGlhbFNlY3JldCA9IFJlYWRvbmx5PERhdGFiYXNlQ3JlZGVudGlhbElkZW50aXR5ICYge1xuICBob3N0OiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG4gIHBvcnQ6IG51bWJlcjtcbiAgc2NoZW1hVmVyc2lvbjogMTtcbn0+O1xuXG5leHBvcnQgdHlwZSBEYXRhYmFzZUNvbm5lY3Rpb25NZXRhZGF0YSA9IFJlYWRvbmx5PERhdGFiYXNlQ3JlZGVudGlhbElkZW50aXR5ICYge1xuICBob3N0OiBzdHJpbmc7XG4gIHBvcnQ6IG51bWJlcjtcbiAgc2VjcmV0QXJuPzogc3RyaW5nO1xuICBzdGF0dXM6ICdub3QtY29uZmlndXJlZCcgfCAncHJvdmlzaW9uaW5nJyB8ICdyZWFkeScgfCAnY29uZmxpY3QnIHwgJ2ZhaWxlZCc7XG59PjtcblxuLy8gT25seSByZXR1cm5lZCBieSB0aGUgbXV0YXRpb24gdGhhdCBqdXN0IGNyZWF0ZWQgb3Igcm90YXRlZCB0aGUgcGFzc3dvcmQ7IG5ldmVyIHBlcnNpc3RlZCBvciByZWFkIGJhY2suXG5leHBvcnQgdHlwZSBEYXRhYmFzZUNvbm5lY3Rpb25DcmVkZW50aWFsID0gUmVhZG9ubHk8RGF0YWJhc2VDb25uZWN0aW9uTWV0YWRhdGEgJiB7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG59PjtcblxuZXhwb3J0IHR5cGUgRGF0YWJhc2VQcm92aXNpb25pbmdMZWFzZSA9IFJlYWRvbmx5PHtcbiAga2V5OiBzdHJpbmc7XG4gIG93bmVyOiBzdHJpbmc7XG4gIGV4cGlyZXNBdDogbnVtYmVyO1xufT47XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0NBLFdBSUcifQ==
|
package/lib/types/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * from './connections.types.js';
|
|
|
10
10
|
export * from './content.types.js';
|
|
11
11
|
export * from './conversations.types.js';
|
|
12
12
|
export * from './crm.types.js';
|
|
13
|
+
export * from './databaseCredentials.types.js';
|
|
13
14
|
export * from './email.types.js';
|
|
14
15
|
export * from './error.types.js';
|
|
15
16
|
export * from './files.types.js';
|
package/lib/types/index.js
CHANGED
|
@@ -9,6 +9,7 @@ export * from './connections.types.js';
|
|
|
9
9
|
export * from './content.types.js';
|
|
10
10
|
export * from './conversations.types.js';
|
|
11
11
|
export * from './crm.types.js';
|
|
12
|
+
export * from './databaseCredentials.types.js';
|
|
12
13
|
export * from './email.types.js';
|
|
13
14
|
export * from './error.types.js';
|
|
14
15
|
export * from './files.types.js';
|
|
@@ -29,4 +30,4 @@ export * from './users.types.js';
|
|
|
29
30
|
export * from './videos.types.js';
|
|
30
31
|
export * from './websockets.types.js';
|
|
31
32
|
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdHlwZXMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vYXBwcy50eXBlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FuYWx5dGljcy50eXBlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FyYW5nb2RiLnR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC50eXBlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2Nvbm5lY3Rpb25zLnR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGVudC50eXBlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnZlcnNhdGlvbnMudHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jcm0udHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhYmFzZUNyZWRlbnRpYWxzLnR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZW1haWwudHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvci50eXBlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGVzLnR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZmxhZ3MudHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9nb29nbGUudHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9ncm91cHMudHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbWFnZXMudHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2NhdGlvbnMudHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdlcy50eXBlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbnMudHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXltZW50cy50eXBlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3Bvc3RzLnR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcnVtLnR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGVyc29uYXMudHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGF0aXN0aWNzLnR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdGFncy50eXBlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXJzLnR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlkZW9zLnR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vd2Vic29ja2V0cy50eXBlcy5qcyc7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsY0FBYyxrQkFBa0I7QUFDaEMsY0FBYyx1QkFBdUI7QUFDckMsY0FBYyxzQkFBc0I7QUFDcEMsY0FBYyxrQkFBa0I7QUFDaEMsY0FBYyx5QkFBeUI7QUFDdkMsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYywyQkFBMkI7QUFDekMsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxpQ0FBaUM7QUFDL0MsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxvQkFBb0I7QUFDbEMsY0FBYyxvQkFBb0I7QUFDbEMsY0FBYyxvQkFBb0I7QUFDbEMsY0FBYyx1QkFBdUI7QUFDckMsY0FBYyxzQkFBc0I7QUFDcEMsY0FBYywyQkFBMkI7QUFDekMsY0FBYyxzQkFBc0I7QUFDcEMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxzQkFBc0I7QUFDcEMsY0FBYyx3QkFBd0I7QUFDdEMsY0FBYyxrQkFBa0I7QUFDaEMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxvQkFBb0I7QUFDbEMsY0FBYyx3QkFBd0IifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DatabaseConnectionMetadata, DatabaseCredentialIdentity, DatabaseCredentialSecret, DatabaseEnvironment } from '../types/databaseCredentials.types.js';
|
|
2
|
+
export declare const getAppDatabaseName: (appId: string, environment?: DatabaseEnvironment) => string;
|
|
3
|
+
export declare const getDatabaseCredentialIdentity: (input: unknown) => DatabaseCredentialIdentity;
|
|
4
|
+
export declare const parseDatabaseCredentialSecret: (value: unknown, expected: DatabaseCredentialIdentity) => DatabaseCredentialSecret;
|
|
5
|
+
export declare const toDatabaseConnectionMetadata: (secret: DatabaseCredentialSecret, secretArn: string) => DatabaseConnectionMetadata;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
export const getAppDatabaseName = (appId, environment = 'production')=>{
|
|
3
|
+
if (environment !== 'development' && environment !== 'production') {
|
|
4
|
+
throw new Error('invalid_database_environment');
|
|
5
|
+
}
|
|
6
|
+
const databaseName = `${appId.replaceAll('-', '_')}${environment === 'development' ? '-dev' : ''}`;
|
|
7
|
+
if (databaseName.length <= 64) {
|
|
8
|
+
return databaseName;
|
|
9
|
+
}
|
|
10
|
+
const suffix = createHash('sha256').update(`${appId}:${environment}`).digest('hex').slice(0, 12);
|
|
11
|
+
return `${databaseName.slice(0, 51)}_${suffix}`;
|
|
12
|
+
};
|
|
13
|
+
export const getDatabaseCredentialIdentity = (input)=>{
|
|
14
|
+
if (!input || typeof input !== 'object' || Array.isArray(input)) {
|
|
15
|
+
throw new Error('invalid_app_id');
|
|
16
|
+
}
|
|
17
|
+
const { appId, environment } = input;
|
|
18
|
+
if (typeof appId !== 'string' || !/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u.test(appId)) {
|
|
19
|
+
throw new Error('invalid_app_id');
|
|
20
|
+
}
|
|
21
|
+
if (environment !== 'development' && environment !== 'production') {
|
|
22
|
+
throw new Error('invalid_database_environment');
|
|
23
|
+
}
|
|
24
|
+
const databaseName = getAppDatabaseName(appId, environment);
|
|
25
|
+
return {
|
|
26
|
+
appId,
|
|
27
|
+
databaseName,
|
|
28
|
+
environment,
|
|
29
|
+
secretName: `reaktor/apps/${appId}/${environment}/arangodb`,
|
|
30
|
+
// Matches databaseName's own collision-safe naming, so the ArangoDB username reads as the app ID.
|
|
31
|
+
username: databaseName
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export const parseDatabaseCredentialSecret = (value, expected)=>{
|
|
35
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
36
|
+
throw new Error('invalid_database_credential_secret');
|
|
37
|
+
}
|
|
38
|
+
const secret = value;
|
|
39
|
+
for (const key of [
|
|
40
|
+
'appId',
|
|
41
|
+
'databaseName',
|
|
42
|
+
'environment',
|
|
43
|
+
'secretName',
|
|
44
|
+
'username'
|
|
45
|
+
]){
|
|
46
|
+
if (secret[key] !== expected[key]) {
|
|
47
|
+
throw new Error('invalid_database_credential_identity');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const allowed = new Set([
|
|
51
|
+
'appId',
|
|
52
|
+
'databaseName',
|
|
53
|
+
'environment',
|
|
54
|
+
'secretName',
|
|
55
|
+
'username',
|
|
56
|
+
'host',
|
|
57
|
+
'password',
|
|
58
|
+
'port',
|
|
59
|
+
'schemaVersion'
|
|
60
|
+
]);
|
|
61
|
+
if (Reflect.ownKeys(secret).some((key)=>typeof key !== 'string' || !allowed.has(key))) {
|
|
62
|
+
throw new Error('invalid_database_credential_secret');
|
|
63
|
+
}
|
|
64
|
+
if (typeof secret.host !== 'string' || typeof secret.password !== 'string' || secret.password.length === 0 || typeof secret.port !== 'number' || !Number.isInteger(secret.port) || secret.port < 1 || secret.port > 65535 || secret.schemaVersion !== 1) {
|
|
65
|
+
throw new Error('invalid_database_credential_secret');
|
|
66
|
+
}
|
|
67
|
+
let url;
|
|
68
|
+
try {
|
|
69
|
+
url = new URL(secret.host);
|
|
70
|
+
} catch {
|
|
71
|
+
throw new Error('invalid_database_credential_secret');
|
|
72
|
+
}
|
|
73
|
+
if (url.protocol !== 'https:' && url.protocol !== 'http:' || url.hostname.length === 0 || url.username || url.password || url.port || secret.host !== url.origin) {
|
|
74
|
+
throw new Error('invalid_database_credential_secret');
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
appId: expected.appId,
|
|
78
|
+
databaseName: expected.databaseName,
|
|
79
|
+
environment: expected.environment,
|
|
80
|
+
host: secret.host,
|
|
81
|
+
password: secret.password,
|
|
82
|
+
port: secret.port,
|
|
83
|
+
schemaVersion: 1,
|
|
84
|
+
secretName: expected.secretName,
|
|
85
|
+
username: expected.username
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
export const toDatabaseConnectionMetadata = (secret, secretArn)=>({
|
|
89
|
+
appId: secret.appId,
|
|
90
|
+
databaseName: secret.databaseName,
|
|
91
|
+
environment: secret.environment,
|
|
92
|
+
host: secret.host,
|
|
93
|
+
port: secret.port,
|
|
94
|
+
secretArn,
|
|
95
|
+
secretName: secret.secretName,
|
|
96
|
+
status: 'ready',
|
|
97
|
+
username: secret.username
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvZGF0YWJhc2VDcmVkZW50aWFscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NyZWF0ZUhhc2h9IGZyb20gJ25vZGU6Y3J5cHRvJztcblxuaW1wb3J0IHR5cGUge0RhdGFiYXNlQ29ubmVjdGlvbk1ldGFkYXRhLCBEYXRhYmFzZUNyZWRlbnRpYWxJZGVudGl0eSwgRGF0YWJhc2VDcmVkZW50aWFsU2VjcmV0LCBEYXRhYmFzZUVudmlyb25tZW50fSBmcm9tICcuLi90eXBlcy9kYXRhYmFzZUNyZWRlbnRpYWxzLnR5cGVzLmpzJztcblxuZXhwb3J0IGNvbnN0IGdldEFwcERhdGFiYXNlTmFtZSA9IChhcHBJZDogc3RyaW5nLCBlbnZpcm9ubWVudDogRGF0YWJhc2VFbnZpcm9ubWVudCA9ICdwcm9kdWN0aW9uJyk6IHN0cmluZyA9PiB7XG4gIGlmKGVudmlyb25tZW50ICE9PSAnZGV2ZWxvcG1lbnQnICYmIGVudmlyb25tZW50ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWRfZGF0YWJhc2VfZW52aXJvbm1lbnQnKTtcbiAgfVxuICBjb25zdCBkYXRhYmFzZU5hbWUgPSBgJHthcHBJZC5yZXBsYWNlQWxsKCctJywgJ18nKX0ke2Vudmlyb25tZW50ID09PSAnZGV2ZWxvcG1lbnQnID8gJy1kZXYnIDogJyd9YDtcbiAgaWYoZGF0YWJhc2VOYW1lLmxlbmd0aCA8PSA2NCkge1xuICAgIHJldHVybiBkYXRhYmFzZU5hbWU7XG4gIH1cbiAgY29uc3Qgc3VmZml4ID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGAke2FwcElkfToke2Vudmlyb25tZW50fWApLmRpZ2VzdCgnaGV4Jykuc2xpY2UoMCwgMTIpO1xuICByZXR1cm4gYCR7ZGF0YWJhc2VOYW1lLnNsaWNlKDAsIDUxKX1fJHtzdWZmaXh9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhYmFzZUNyZWRlbnRpYWxJZGVudGl0eSA9IChpbnB1dDogdW5rbm93bik6IERhdGFiYXNlQ3JlZGVudGlhbElkZW50aXR5ID0+IHtcbiAgaWYoIWlucHV0IHx8IHR5cGVvZiBpbnB1dCAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWRfYXBwX2lkJyk7XG4gIH1cbiAgY29uc3Qge2FwcElkLCBlbnZpcm9ubWVudH0gPSBpbnB1dCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgaWYodHlwZW9mIGFwcElkICE9PSAnc3RyaW5nJyB8fCAhL15bYS16XVthLXowLTldKig/Oi1bYS16MC05XSspKiQvdS50ZXN0KGFwcElkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZF9hcHBfaWQnKTtcbiAgfVxuICBpZihlbnZpcm9ubWVudCAhPT0gJ2RldmVsb3BtZW50JyAmJiBlbnZpcm9ubWVudCAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkX2RhdGFiYXNlX2Vudmlyb25tZW50Jyk7XG4gIH1cbiAgY29uc3QgZGF0YWJhc2VOYW1lID0gZ2V0QXBwRGF0YWJhc2VOYW1lKGFwcElkLCBlbnZpcm9ubWVudCk7XG4gIHJldHVybiB7XG4gICAgYXBwSWQsXG4gICAgZGF0YWJhc2VOYW1lLFxuICAgIGVudmlyb25tZW50LFxuICAgIHNlY3JldE5hbWU6IGByZWFrdG9yL2FwcHMvJHthcHBJZH0vJHtlbnZpcm9ubWVudH0vYXJhbmdvZGJgLFxuICAgIC8vIE1hdGNoZXMgZGF0YWJhc2VOYW1lJ3Mgb3duIGNvbGxpc2lvbi1zYWZlIG5hbWluZywgc28gdGhlIEFyYW5nb0RCIHVzZXJuYW1lIHJlYWRzIGFzIHRoZSBhcHAgSUQuXG4gICAgdXNlcm5hbWU6IGRhdGFiYXNlTmFtZVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlRGF0YWJhc2VDcmVkZW50aWFsU2VjcmV0ID0gKFxuICB2YWx1ZTogdW5rbm93bixcbiAgZXhwZWN0ZWQ6IERhdGFiYXNlQ3JlZGVudGlhbElkZW50aXR5XG4pOiBEYXRhYmFzZUNyZWRlbnRpYWxTZWNyZXQgPT4ge1xuICBpZighdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZF9kYXRhYmFzZV9jcmVkZW50aWFsX3NlY3JldCcpO1xuICB9XG4gIGNvbnN0IHNlY3JldCA9IHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBmb3IoY29uc3Qga2V5IG9mIFsnYXBwSWQnLCAnZGF0YWJhc2VOYW1lJywgJ2Vudmlyb25tZW50JywgJ3NlY3JldE5hbWUnLCAndXNlcm5hbWUnXSBhcyBjb25zdCkge1xuICAgIGlmKHNlY3JldFtrZXldICE9PSBleHBlY3RlZFtrZXldKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWRfZGF0YWJhc2VfY3JlZGVudGlhbF9pZGVudGl0eScpO1xuICAgIH1cbiAgfVxuICBjb25zdCBhbGxvd2VkID0gbmV3IFNldChbJ2FwcElkJywgJ2RhdGFiYXNlTmFtZScsICdlbnZpcm9ubWVudCcsICdzZWNyZXROYW1lJywgJ3VzZXJuYW1lJywgJ2hvc3QnLCAncGFzc3dvcmQnLCAncG9ydCcsICdzY2hlbWFWZXJzaW9uJ10pO1xuICBpZihSZWZsZWN0Lm93bktleXMoc2VjcmV0KS5zb21lKChrZXkpID0+IHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnIHx8ICFhbGxvd2VkLmhhcyhrZXkpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZF9kYXRhYmFzZV9jcmVkZW50aWFsX3NlY3JldCcpO1xuICB9XG4gIGlmKHR5cGVvZiBzZWNyZXQuaG9zdCAhPT0gJ3N0cmluZycgfHwgdHlwZW9mIHNlY3JldC5wYXNzd29yZCAhPT0gJ3N0cmluZycgfHwgc2VjcmV0LnBhc3N3b3JkLmxlbmd0aCA9PT0gMFxuICAgIHx8IHR5cGVvZiBzZWNyZXQucG9ydCAhPT0gJ251bWJlcicgfHwgIU51bWJlci5pc0ludGVnZXIoc2VjcmV0LnBvcnQpIHx8IHNlY3JldC5wb3J0IDwgMSB8fCBzZWNyZXQucG9ydCA+IDY1NTM1XG4gICAgfHwgc2VjcmV0LnNjaGVtYVZlcnNpb24gIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWRfZGF0YWJhc2VfY3JlZGVudGlhbF9zZWNyZXQnKTtcbiAgfVxuICBsZXQgdXJsOiBVUkw7XG4gIHRyeSB7XG4gICAgdXJsID0gbmV3IFVSTChzZWNyZXQuaG9zdCk7XG4gIH0gY2F0Y2h7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkX2RhdGFiYXNlX2NyZWRlbnRpYWxfc2VjcmV0Jyk7XG4gIH1cbiAgaWYoKHVybC5wcm90b2NvbCAhPT0gJ2h0dHBzOicgJiYgdXJsLnByb3RvY29sICE9PSAnaHR0cDonKSB8fCB1cmwuaG9zdG5hbWUubGVuZ3RoID09PSAwIHx8IHVybC51c2VybmFtZSB8fCB1cmwucGFzc3dvcmQgfHwgdXJsLnBvcnQgfHwgc2VjcmV0Lmhvc3QgIT09IHVybC5vcmlnaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWRfZGF0YWJhc2VfY3JlZGVudGlhbF9zZWNyZXQnKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGFwcElkOiBleHBlY3RlZC5hcHBJZCxcbiAgICBkYXRhYmFzZU5hbWU6IGV4cGVjdGVkLmRhdGFiYXNlTmFtZSxcbiAgICBlbnZpcm9ubWVudDogZXhwZWN0ZWQuZW52aXJvbm1lbnQsXG4gICAgaG9zdDogc2VjcmV0Lmhvc3QsXG4gICAgcGFzc3dvcmQ6IHNlY3JldC5wYXNzd29yZCxcbiAgICBwb3J0OiBzZWNyZXQucG9ydCxcbiAgICBzY2hlbWFWZXJzaW9uOiAxLFxuICAgIHNlY3JldE5hbWU6IGV4cGVjdGVkLnNlY3JldE5hbWUsXG4gICAgdXNlcm5hbWU6IGV4cGVjdGVkLnVzZXJuYW1lXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9EYXRhYmFzZUNvbm5lY3Rpb25NZXRhZGF0YSA9IChcbiAgc2VjcmV0OiBEYXRhYmFzZUNyZWRlbnRpYWxTZWNyZXQsXG4gIHNlY3JldEFybjogc3RyaW5nXG4pOiBEYXRhYmFzZUNvbm5lY3Rpb25NZXRhZGF0YSA9PiAoe1xuICBhcHBJZDogc2VjcmV0LmFwcElkLFxuICBkYXRhYmFzZU5hbWU6IHNlY3JldC5kYXRhYmFzZU5hbWUsXG4gIGVudmlyb25tZW50OiBzZWNyZXQuZW52aXJvbm1lbnQsXG4gIGhvc3Q6IHNlY3JldC5ob3N0LFxuICBwb3J0OiBzZWNyZXQucG9ydCxcbiAgc2VjcmV0QXJuLFxuICBzZWNyZXROYW1lOiBzZWNyZXQuc2VjcmV0TmFtZSxcbiAgc3RhdHVzOiAncmVhZHknLFxuICB1c2VybmFtZTogc2VjcmV0LnVzZXJuYW1lXG59KTtcbiJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwiZ2V0QXBwRGF0YWJhc2VOYW1lIiwiYXBwSWQiLCJlbnZpcm9ubWVudCIsIkVycm9yIiwiZGF0YWJhc2VOYW1lIiwicmVwbGFjZUFsbCIsImxlbmd0aCIsInN1ZmZpeCIsInVwZGF0ZSIsImRpZ2VzdCIsInNsaWNlIiwiZ2V0RGF0YWJhc2VDcmVkZW50aWFsSWRlbnRpdHkiLCJpbnB1dCIsIkFycmF5IiwiaXNBcnJheSIsInRlc3QiLCJzZWNyZXROYW1lIiwidXNlcm5hbWUiLCJwYXJzZURhdGFiYXNlQ3JlZGVudGlhbFNlY3JldCIsInZhbHVlIiwiZXhwZWN0ZWQiLCJzZWNyZXQiLCJrZXkiLCJhbGxvd2VkIiwiU2V0IiwiUmVmbGVjdCIsIm93bktleXMiLCJzb21lIiwiaGFzIiwiaG9zdCIsInBhc3N3b3JkIiwicG9ydCIsIk51bWJlciIsImlzSW50ZWdlciIsInNjaGVtYVZlcnNpb24iLCJ1cmwiLCJVUkwiLCJwcm90b2NvbCIsImhvc3RuYW1lIiwib3JpZ2luIiwidG9EYXRhYmFzZUNvbm5lY3Rpb25NZXRhZGF0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
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface GenerationCallbackEvent {
|
|
2
|
+
eventId: string;
|
|
3
|
+
provider: 'higgsfield';
|
|
4
|
+
requestId: string;
|
|
5
|
+
status: 'completed' | 'failed' | 'nsfw';
|
|
6
|
+
}
|
|
7
|
+
export interface GenerationCallbackParseOptions {
|
|
8
|
+
maxBytes?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Verifies an application-issued per-job capability, not a provider signature.
|
|
12
|
+
* Persist its hash and expiry before submission. Scope lookup to the owning job.
|
|
13
|
+
* Keep valid duplicates acceptable; durable event deduplication belongs to the caller.
|
|
14
|
+
*/
|
|
15
|
+
export declare const verifyGenerationCallbackToken: (token: unknown, expectedHash: string, expiresAt: number, now?: number) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Parses a bounded callback into a reconciliation hint, deliberately excluding media/error payloads.
|
|
18
|
+
* This is not authentication. Verify the per-job capability first, then confirm the request with
|
|
19
|
+
* the provider's authenticated status API before retaining media or changing paid accounting.
|
|
20
|
+
* eventId is stable across redelivery; persist it transactionally before returning a 2xx response.
|
|
21
|
+
* Protocol: https://docs.higgsfield.ai/docs/how-to/webhooks
|
|
22
|
+
*/
|
|
23
|
+
export declare const parseGenerationCallback: (provider: string, rawBody: Buffer | string, options?: GenerationCallbackParseOptions) => GenerationCallbackEvent;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { timingSafeEqual } from 'node:crypto';
|
|
2
|
+
import { parseHiggsfieldWebhookPayload } from '../adapters/higgsfieldAdapter.js';
|
|
3
|
+
import { hashOpaqueToken, isOpaqueToken } from './opaqueToken.js';
|
|
4
|
+
/**
|
|
5
|
+
* Verifies an application-issued per-job capability, not a provider signature.
|
|
6
|
+
* Persist its hash and expiry before submission. Scope lookup to the owning job.
|
|
7
|
+
* Keep valid duplicates acceptable; durable event deduplication belongs to the caller.
|
|
8
|
+
*/ export const verifyGenerationCallbackToken = (token, expectedHash, expiresAt, now = Date.now())=>{
|
|
9
|
+
if (!isOpaqueToken(token) || !/^[a-f0-9]{64}$/.test(expectedHash) || !Number.isFinite(expiresAt) || !Number.isFinite(now) || expiresAt <= now) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
return timingSafeEqual(Buffer.from(hashOpaqueToken(token), 'hex'), Buffer.from(expectedHash, 'hex'));
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Parses a bounded callback into a reconciliation hint, deliberately excluding media/error payloads.
|
|
16
|
+
* This is not authentication. Verify the per-job capability first, then confirm the request with
|
|
17
|
+
* the provider's authenticated status API before retaining media or changing paid accounting.
|
|
18
|
+
* eventId is stable across redelivery; persist it transactionally before returning a 2xx response.
|
|
19
|
+
* Protocol: https://docs.higgsfield.ai/docs/how-to/webhooks
|
|
20
|
+
*/ export const parseGenerationCallback = (provider, rawBody, options = {})=>{
|
|
21
|
+
if (provider !== 'higgsfield') {
|
|
22
|
+
throw new Error('Unsupported generation callback provider.');
|
|
23
|
+
}
|
|
24
|
+
const maxBytes = options.maxBytes ?? 64 * 1024;
|
|
25
|
+
if (!Number.isSafeInteger(maxBytes) || maxBytes < 1 || maxBytes > 1024 * 1024) {
|
|
26
|
+
throw new Error('Invalid generation callback body limit.');
|
|
27
|
+
}
|
|
28
|
+
if (typeof rawBody !== 'string' && !Buffer.isBuffer(rawBody) || Buffer.byteLength(rawBody) === 0 || Buffer.byteLength(rawBody) > maxBytes) {
|
|
29
|
+
throw new Error('Invalid generation callback body size.');
|
|
30
|
+
}
|
|
31
|
+
let body;
|
|
32
|
+
try {
|
|
33
|
+
const json = typeof rawBody === 'string' ? rawBody : new TextDecoder('utf-8', {
|
|
34
|
+
fatal: true
|
|
35
|
+
}).decode(rawBody);
|
|
36
|
+
body = JSON.parse(json);
|
|
37
|
+
} catch {
|
|
38
|
+
throw new Error('Invalid generation callback JSON.');
|
|
39
|
+
}
|
|
40
|
+
const { request_id: requestId, status } = parseHiggsfieldWebhookPayload(body);
|
|
41
|
+
return {
|
|
42
|
+
eventId: `${provider}:${requestId}:${status}`,
|
|
43
|
+
provider,
|
|
44
|
+
requestId,
|
|
45
|
+
status
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvZ2VuZXJhdGlvbkNhbGxiYWNrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGltaW5nU2FmZUVxdWFsfSBmcm9tICdub2RlOmNyeXB0byc7XG5cbmltcG9ydCB7cGFyc2VIaWdnc2ZpZWxkV2ViaG9va1BheWxvYWR9IGZyb20gJy4uL2FkYXB0ZXJzL2hpZ2dzZmllbGRBZGFwdGVyLmpzJztcbmltcG9ydCB7aGFzaE9wYXF1ZVRva2VuLCBpc09wYXF1ZVRva2VufSBmcm9tICcuL29wYXF1ZVRva2VuLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0aW9uQ2FsbGJhY2tFdmVudCB7XG4gIGV2ZW50SWQ6IHN0cmluZztcbiAgcHJvdmlkZXI6ICdoaWdnc2ZpZWxkJztcbiAgcmVxdWVzdElkOiBzdHJpbmc7XG4gIHN0YXR1czogJ2NvbXBsZXRlZCcgfCAnZmFpbGVkJyB8ICduc2Z3Jztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGlvbkNhbGxiYWNrUGFyc2VPcHRpb25zIHttYXhCeXRlcz86IG51bWJlcn1cblxuLyoqXG4gKiBWZXJpZmllcyBhbiBhcHBsaWNhdGlvbi1pc3N1ZWQgcGVyLWpvYiBjYXBhYmlsaXR5LCBub3QgYSBwcm92aWRlciBzaWduYXR1cmUuXG4gKiBQZXJzaXN0IGl0cyBoYXNoIGFuZCBleHBpcnkgYmVmb3JlIHN1Ym1pc3Npb24uIFNjb3BlIGxvb2t1cCB0byB0aGUgb3duaW5nIGpvYi5cbiAqIEtlZXAgdmFsaWQgZHVwbGljYXRlcyBhY2NlcHRhYmxlOyBkdXJhYmxlIGV2ZW50IGRlZHVwbGljYXRpb24gYmVsb25ncyB0byB0aGUgY2FsbGVyLlxuICovXG5leHBvcnQgY29uc3QgdmVyaWZ5R2VuZXJhdGlvbkNhbGxiYWNrVG9rZW4gPSAoXG4gIHRva2VuOiB1bmtub3duLCBleHBlY3RlZEhhc2g6IHN0cmluZywgZXhwaXJlc0F0OiBudW1iZXIsIG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKVxuKTogYm9vbGVhbiA9PiB7XG4gIGlmKCFpc09wYXF1ZVRva2VuKHRva2VuKSB8fCAhL15bYS1mMC05XXs2NH0kLy50ZXN0KGV4cGVjdGVkSGFzaClcbiAgICB8fCAhTnVtYmVyLmlzRmluaXRlKGV4cGlyZXNBdCkgfHwgIU51bWJlci5pc0Zpbml0ZShub3cpIHx8IGV4cGlyZXNBdCA8PSBub3cpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRpbWluZ1NhZmVFcXVhbChCdWZmZXIuZnJvbShoYXNoT3BhcXVlVG9rZW4odG9rZW4pLCAnaGV4JyksIEJ1ZmZlci5mcm9tKGV4cGVjdGVkSGFzaCwgJ2hleCcpKTtcbn07XG5cbi8qKlxuICogUGFyc2VzIGEgYm91bmRlZCBjYWxsYmFjayBpbnRvIGEgcmVjb25jaWxpYXRpb24gaGludCwgZGVsaWJlcmF0ZWx5IGV4Y2x1ZGluZyBtZWRpYS9lcnJvciBwYXlsb2Fkcy5cbiAqIFRoaXMgaXMgbm90IGF1dGhlbnRpY2F0aW9uLiBWZXJpZnkgdGhlIHBlci1qb2IgY2FwYWJpbGl0eSBmaXJzdCwgdGhlbiBjb25maXJtIHRoZSByZXF1ZXN0IHdpdGhcbiAqIHRoZSBwcm92aWRlcidzIGF1dGhlbnRpY2F0ZWQgc3RhdHVzIEFQSSBiZWZvcmUgcmV0YWluaW5nIG1lZGlhIG9yIGNoYW5naW5nIHBhaWQgYWNjb3VudGluZy5cbiAqIGV2ZW50SWQgaXMgc3RhYmxlIGFjcm9zcyByZWRlbGl2ZXJ5OyBwZXJzaXN0IGl0IHRyYW5zYWN0aW9uYWxseSBiZWZvcmUgcmV0dXJuaW5nIGEgMnh4IHJlc3BvbnNlLlxuICogUHJvdG9jb2w6IGh0dHBzOi8vZG9jcy5oaWdnc2ZpZWxkLmFpL2RvY3MvaG93LXRvL3dlYmhvb2tzXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZUdlbmVyYXRpb25DYWxsYmFjayA9IChcbiAgcHJvdmlkZXI6IHN0cmluZywgcmF3Qm9keTogQnVmZmVyIHwgc3RyaW5nLCBvcHRpb25zOiBHZW5lcmF0aW9uQ2FsbGJhY2tQYXJzZU9wdGlvbnMgPSB7fVxuKTogR2VuZXJhdGlvbkNhbGxiYWNrRXZlbnQgPT4ge1xuICBpZihwcm92aWRlciAhPT0gJ2hpZ2dzZmllbGQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBnZW5lcmF0aW9uIGNhbGxiYWNrIHByb3ZpZGVyLicpO1xuICB9XG4gIGNvbnN0IG1heEJ5dGVzID0gb3B0aW9ucy5tYXhCeXRlcyA/PyA2NCAqIDEwMjQ7XG4gIGlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihtYXhCeXRlcykgfHwgbWF4Qnl0ZXMgPCAxIHx8IG1heEJ5dGVzID4gMTAyNCAqIDEwMjQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZ2VuZXJhdGlvbiBjYWxsYmFjayBib2R5IGxpbWl0LicpO1xuICB9XG4gIGlmKCh0eXBlb2YgcmF3Qm9keSAhPT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0J1ZmZlcihyYXdCb2R5KSlcbiAgICB8fCBCdWZmZXIuYnl0ZUxlbmd0aChyYXdCb2R5KSA9PT0gMCB8fCBCdWZmZXIuYnl0ZUxlbmd0aChyYXdCb2R5KSA+IG1heEJ5dGVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGdlbmVyYXRpb24gY2FsbGJhY2sgYm9keSBzaXplLicpO1xuICB9XG4gIGxldCBib2R5OiB1bmtub3duO1xuICB0cnkge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlb2YgcmF3Qm9keSA9PT0gJ3N0cmluZycgPyByYXdCb2R5IDogbmV3IFRleHREZWNvZGVyKCd1dGYtOCcsIHtmYXRhbDogdHJ1ZX0pLmRlY29kZShyYXdCb2R5KTtcbiAgICBib2R5ID0gSlNPTi5wYXJzZShqc29uKTtcbiAgfSBjYXRjaHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZ2VuZXJhdGlvbiBjYWxsYmFjayBKU09OLicpO1xuICB9XG4gIGNvbnN0IHtyZXF1ZXN0X2lkOiByZXF1ZXN0SWQsIHN0YXR1c30gPSBwYXJzZUhpZ2dzZmllbGRXZWJob29rUGF5bG9hZChib2R5KTtcbiAgcmV0dXJuIHtldmVudElkOiBgJHtwcm92aWRlcn06JHtyZXF1ZXN0SWR9OiR7c3RhdHVzfWAsIHByb3ZpZGVyLCByZXF1ZXN0SWQsIHN0YXR1c307XG59O1xuIl0sIm5hbWVzIjpbInRpbWluZ1NhZmVFcXVhbCIsInBhcnNlSGlnZ3NmaWVsZFdlYmhvb2tQYXlsb2FkIiwiaGFzaE9wYXF1ZVRva2VuIiwiaXNPcGFxdWVUb2tlbiIsInZlcmlmeUdlbmVyYXRpb25DYWxsYmFja1Rva2VuIiwidG9rZW4iLCJleHBlY3RlZEhhc2giLCJleHBpcmVzQXQiLCJub3ciLCJEYXRlIiwidGVzdCIsIk51bWJlciIsImlzRmluaXRlIiwiQnVmZmVyIiwiZnJvbSIsInBhcnNlR2VuZXJhdGlvbkNhbGxiYWNrIiwicHJvdmlkZXIiLCJyYXdCb2R5Iiwib3B0aW9ucyIsIkVycm9yIiwibWF4Qnl0ZXMiLCJpc1NhZmVJbnRlZ2VyIiwiaXNCdWZmZXIiLCJieXRlTGVuZ3RoIiwiYm9keSIsImpzb24iLCJUZXh0RGVjb2RlciIsImZhdGFsIiwiZGVjb2RlIiwiSlNPTiIsInBhcnNlIiwicmVxdWVzdF9pZCIsInJlcXVlc3RJZCIsInN0YXR1cyIsImV2ZW50SWQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLGVBQWUsUUFBTyxjQUFjO0FBRTVDLFNBQVFDLDZCQUE2QixRQUFPLG1DQUFtQztBQUMvRSxTQUFRQyxlQUFlLEVBQUVDLGFBQWEsUUFBTyxtQkFBbUI7QUFVaEU7Ozs7Q0FJQyxHQUNELE9BQU8sTUFBTUMsZ0NBQWdDLENBQzNDQyxPQUFnQkMsY0FBc0JDLFdBQW1CQyxNQUFjQyxLQUFLRCxHQUFHLEVBQUU7SUFFakYsSUFBRyxDQUFDTCxjQUFjRSxVQUFVLENBQUMsaUJBQWlCSyxJQUFJLENBQUNKLGlCQUM5QyxDQUFDSyxPQUFPQyxRQUFRLENBQUNMLGNBQWMsQ0FBQ0ksT0FBT0MsUUFBUSxDQUFDSixRQUFRRCxhQUFhQyxLQUFLO1FBQzdFLE9BQU87SUFDVDtJQUNBLE9BQU9SLGdCQUFnQmEsT0FBT0MsSUFBSSxDQUFDWixnQkFBZ0JHLFFBQVEsUUFBUVEsT0FBT0MsSUFBSSxDQUFDUixjQUFjO0FBQy9GLEVBQUU7QUFFRjs7Ozs7O0NBTUMsR0FDRCxPQUFPLE1BQU1TLDBCQUEwQixDQUNyQ0MsVUFBa0JDLFNBQTBCQyxVQUEwQyxDQUFDLENBQUM7SUFFeEYsSUFBR0YsYUFBYSxjQUFjO1FBQzVCLE1BQU0sSUFBSUcsTUFBTTtJQUNsQjtJQUNBLE1BQU1DLFdBQVdGLFFBQVFFLFFBQVEsSUFBSSxLQUFLO0lBQzFDLElBQUcsQ0FBQ1QsT0FBT1UsYUFBYSxDQUFDRCxhQUFhQSxXQUFXLEtBQUtBLFdBQVcsT0FBTyxNQUFNO1FBQzVFLE1BQU0sSUFBSUQsTUFBTTtJQUNsQjtJQUNBLElBQUcsQUFBQyxPQUFPRixZQUFZLFlBQVksQ0FBQ0osT0FBT1MsUUFBUSxDQUFDTCxZQUMvQ0osT0FBT1UsVUFBVSxDQUFDTixhQUFhLEtBQUtKLE9BQU9VLFVBQVUsQ0FBQ04sV0FBV0csVUFBVTtRQUM5RSxNQUFNLElBQUlELE1BQU07SUFDbEI7SUFDQSxJQUFJSztJQUNKLElBQUk7UUFDRixNQUFNQyxPQUFPLE9BQU9SLFlBQVksV0FBV0EsVUFBVSxJQUFJUyxZQUFZLFNBQVM7WUFBQ0MsT0FBTztRQUFJLEdBQUdDLE1BQU0sQ0FBQ1g7UUFDcEdPLE9BQU9LLEtBQUtDLEtBQUssQ0FBQ0w7SUFDcEIsRUFBRSxPQUFLO1FBQ0wsTUFBTSxJQUFJTixNQUFNO0lBQ2xCO0lBQ0EsTUFBTSxFQUFDWSxZQUFZQyxTQUFTLEVBQUVDLE1BQU0sRUFBQyxHQUFHaEMsOEJBQThCdUI7SUFDdEUsT0FBTztRQUFDVSxTQUFTLEdBQUdsQixTQUFTLENBQUMsRUFBRWdCLFVBQVUsQ0FBQyxFQUFFQyxRQUFRO1FBQUVqQjtRQUFVZ0I7UUFBV0M7SUFBTTtBQUNwRixFQUFFIn0=
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -8,15 +8,18 @@ export * from './arangodbUtils.js';
|
|
|
8
8
|
export * from './authUtils.js';
|
|
9
9
|
export * from './contextUtils.js';
|
|
10
10
|
export * from './dbI18n.js';
|
|
11
|
+
export * from './databaseCredentials.js';
|
|
11
12
|
export * from './googleTranslate.js';
|
|
12
13
|
export * from './graphqlUtils.js';
|
|
13
14
|
export * from './languageDetection.js';
|
|
14
15
|
export * from './localeUtils.js';
|
|
15
16
|
export * from './middlewareUtils.js';
|
|
16
17
|
export * from './schemaUtils.js';
|
|
18
|
+
export * from './secretDatabase.js';
|
|
17
19
|
export * from './sessionUtils.js';
|
|
18
20
|
export * from './templateUtils.js';
|
|
19
21
|
export * from './translationQueue.js';
|
|
20
22
|
export * from './mediaAccess.js';
|
|
21
23
|
export * from './nodeRealtime.js';
|
|
22
24
|
export * from './opaqueToken.js';
|
|
25
|
+
export * from './generationCallback.js';
|
package/lib/utils/index.js
CHANGED
|
@@ -7,17 +7,20 @@ export * from './arangodbUtils.js';
|
|
|
7
7
|
export * from './authUtils.js';
|
|
8
8
|
export * from './contextUtils.js';
|
|
9
9
|
export * from './dbI18n.js';
|
|
10
|
+
export * from './databaseCredentials.js';
|
|
10
11
|
export * from './googleTranslate.js';
|
|
11
12
|
export * from './graphqlUtils.js';
|
|
12
13
|
export * from './languageDetection.js';
|
|
13
14
|
export * from './localeUtils.js';
|
|
14
15
|
export * from './middlewareUtils.js';
|
|
15
16
|
export * from './schemaUtils.js';
|
|
17
|
+
export * from './secretDatabase.js';
|
|
16
18
|
export * from './sessionUtils.js';
|
|
17
19
|
export * from './templateUtils.js';
|
|
18
20
|
export * from './translationQueue.js';
|
|
19
21
|
export * from './mediaAccess.js';
|
|
20
22
|
export * from './nodeRealtime.js';
|
|
21
23
|
export * from './opaqueToken.js';
|
|
24
|
+
export * from './generationCallback.js';
|
|
22
25
|
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vYWRhcHRlclV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYW5hbHl0aWNzVXRpbHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hcmFuZ29kYlV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aFV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dFV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZGJJMThuLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YWJhc2VDcmVkZW50aWFscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2dvb2dsZVRyYW5zbGF0ZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2dyYXBocWxVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2xhbmd1YWdlRGV0ZWN0aW9uLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxlVXRpbHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9taWRkbGV3YXJlVXRpbHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWFVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3NlY3JldERhdGFiYXNlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vc2Vzc2lvblV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdGVtcGxhdGVVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zbGF0aW9uUXVldWUuanMnO1xuXG5leHBvcnQgKiBmcm9tICcuL21lZGlhQWNjZXNzLmpzJztcblxuZXhwb3J0ICogZnJvbSAnLi9ub2RlUmVhbHRpbWUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9vcGFxdWVUb2tlbi5qcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZ2VuZXJhdGlvbkNhbGxiYWNrLmpzJztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxjQUFjLG9CQUFvQjtBQUNsQyxjQUFjLHNCQUFzQjtBQUNwQyxjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLGlCQUFpQjtBQUMvQixjQUFjLG9CQUFvQjtBQUNsQyxjQUFjLGNBQWM7QUFDNUIsY0FBYywyQkFBMkI7QUFDekMsY0FBYyx1QkFBdUI7QUFDckMsY0FBYyxvQkFBb0I7QUFDbEMsY0FBYyx5QkFBeUI7QUFDdkMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyx1QkFBdUI7QUFDckMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxzQkFBc0I7QUFDcEMsY0FBYyxvQkFBb0I7QUFDbEMsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYyx3QkFBd0I7QUFFdEMsY0FBYyxtQkFBbUI7QUFFakMsY0FBYyxvQkFBb0I7QUFDbEMsY0FBYyxtQkFBbUI7QUFFakMsY0FBYywwQkFBMEIifQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Database } from 'arangojs';
|
|
2
|
+
import type { DatabaseCredentialIdentity } from '../types/databaseCredentials.types.js';
|
|
3
|
+
export declare const invalidateSecretDatabase: (secretArn: string) => void;
|
|
4
|
+
export declare const getSecretDatabase: (options: Readonly<{
|
|
5
|
+
secretArn?: string;
|
|
6
|
+
identity: DatabaseCredentialIdentity;
|
|
7
|
+
refresh?: boolean;
|
|
8
|
+
}>) => Promise<Database>;
|