@versori/run 0.0.1-alpha.1 → 0.0.1-alpha.2
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/esm/src/dsl/http/default.d.ts +23 -0
- package/esm/src/dsl/http/default.d.ts.map +1 -0
- package/esm/src/dsl/http/default.js +25 -0
- package/esm/src/dsl/http/types.d.ts +53 -0
- package/esm/src/dsl/http/types.d.ts.map +1 -0
- package/esm/src/dsl/http/types.js +2 -0
- package/esm/src/dsl/http/versori/configloader.d.ts +12 -0
- package/esm/src/dsl/http/versori/configloader.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/configloader.js +14 -0
- package/esm/src/dsl/http/versori/connectapi.d.ts +11 -0
- package/esm/src/dsl/http/versori/connectapi.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/connectapi.js +57 -0
- package/esm/src/dsl/http/versori/credentials/client.d.ts +10 -0
- package/esm/src/dsl/http/versori/credentials/client.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/credentials/client.js +30 -0
- package/esm/src/dsl/http/versori/credentials/credentials.d.ts +42 -0
- package/esm/src/dsl/http/versori/credentials/credentials.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/credentials/credentials.js +34 -0
- package/esm/src/dsl/http/versori/credentials/mod.d.ts +2 -0
- package/esm/src/dsl/http/versori/credentials/mod.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/credentials/mod.js +1 -0
- package/esm/src/dsl/http/versori/credentials/oauth2/v1/token_pb.d.ts +10 -0
- package/esm/src/dsl/http/versori/credentials/oauth2/v1/token_pb.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/credentials/oauth2/v1/token_pb.js +14 -0
- package/esm/src/dsl/http/versori/credentials/oauth2/v1/token_service_pb.d.ts +69 -0
- package/esm/src/dsl/http/versori/credentials/oauth2/v1/token_service_pb.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/credentials/oauth2/v1/token_service_pb.js +76 -0
- package/esm/src/dsl/http/versori/credentials/tokens/v1/token_pb.d.ts +10 -0
- package/esm/src/dsl/http/versori/credentials/tokens/v1/token_pb.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/credentials/tokens/v1/token_pb.js +14 -0
- package/esm/src/dsl/http/versori/credentials/tokens/v1/token_service_pb.d.ts +34 -0
- package/esm/src/dsl/http/versori/credentials/tokens/v1/token_service_pb.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/credentials/tokens/v1/token_service_pb.js +40 -0
- package/esm/src/dsl/http/versori/credentials/v1alpha1/credential_pb.d.ts +165 -0
- package/esm/src/dsl/http/versori/credentials/v1alpha1/credential_pb.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/credentials/v1alpha1/credential_pb.js +155 -0
- package/esm/src/dsl/http/versori/internalauth.d.ts +10 -0
- package/esm/src/dsl/http/versori/internalauth.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/internalauth.js +67 -0
- package/esm/src/dsl/http/versori/roundtripper.d.ts +31 -0
- package/esm/src/dsl/http/versori/roundtripper.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/roundtripper.js +218 -0
- package/esm/src/interpreter/memory/MemoryInterpreter.d.ts +2 -0
- package/esm/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
- package/esm/src/interpreter/memory/MemoryInterpreter.js +10 -0
- package/esm/src/interpreter/memory/ObservableCompiler.d.ts +2 -0
- package/esm/src/interpreter/memory/ObservableCompiler.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/http.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/http.js +3 -1
- package/package.json +4 -1
- package/script/src/dsl/http/default.d.ts +23 -0
- package/script/src/dsl/http/default.d.ts.map +1 -0
- package/script/src/dsl/http/default.js +29 -0
- package/script/src/dsl/http/types.d.ts +53 -0
- package/script/src/dsl/http/types.d.ts.map +1 -0
- package/script/src/dsl/http/types.js +3 -0
- package/script/src/dsl/http/versori/configloader.d.ts +12 -0
- package/script/src/dsl/http/versori/configloader.d.ts.map +1 -0
- package/script/src/dsl/http/versori/configloader.js +40 -0
- package/script/src/dsl/http/versori/connectapi.d.ts +11 -0
- package/script/src/dsl/http/versori/connectapi.d.ts.map +1 -0
- package/script/src/dsl/http/versori/connectapi.js +61 -0
- package/script/src/dsl/http/versori/credentials/client.d.ts +10 -0
- package/script/src/dsl/http/versori/credentials/client.d.ts.map +1 -0
- package/script/src/dsl/http/versori/credentials/client.js +32 -0
- package/script/src/dsl/http/versori/credentials/credentials.d.ts +42 -0
- package/script/src/dsl/http/versori/credentials/credentials.d.ts.map +1 -0
- package/script/src/dsl/http/versori/credentials/credentials.js +38 -0
- package/script/src/dsl/http/versori/credentials/mod.d.ts +2 -0
- package/script/src/dsl/http/versori/credentials/mod.d.ts.map +1 -0
- package/script/src/dsl/http/versori/credentials/mod.js +5 -0
- package/script/src/dsl/http/versori/credentials/oauth2/v1/token_pb.d.ts +10 -0
- package/script/src/dsl/http/versori/credentials/oauth2/v1/token_pb.d.ts.map +1 -0
- package/script/src/dsl/http/versori/credentials/oauth2/v1/token_pb.js +17 -0
- package/script/src/dsl/http/versori/credentials/oauth2/v1/token_service_pb.d.ts +69 -0
- package/script/src/dsl/http/versori/credentials/oauth2/v1/token_service_pb.d.ts.map +1 -0
- package/script/src/dsl/http/versori/credentials/oauth2/v1/token_service_pb.js +79 -0
- package/script/src/dsl/http/versori/credentials/tokens/v1/token_pb.d.ts +10 -0
- package/script/src/dsl/http/versori/credentials/tokens/v1/token_pb.d.ts.map +1 -0
- package/script/src/dsl/http/versori/credentials/tokens/v1/token_pb.js +17 -0
- package/script/src/dsl/http/versori/credentials/tokens/v1/token_service_pb.d.ts +34 -0
- package/script/src/dsl/http/versori/credentials/tokens/v1/token_service_pb.d.ts.map +1 -0
- package/script/src/dsl/http/versori/credentials/tokens/v1/token_service_pb.js +43 -0
- package/script/src/dsl/http/versori/credentials/v1alpha1/credential_pb.d.ts +165 -0
- package/script/src/dsl/http/versori/credentials/v1alpha1/credential_pb.d.ts.map +1 -0
- package/script/src/dsl/http/versori/credentials/v1alpha1/credential_pb.js +158 -0
- package/script/src/dsl/http/versori/internalauth.d.ts +10 -0
- package/script/src/dsl/http/versori/internalauth.d.ts.map +1 -0
- package/script/src/dsl/http/versori/internalauth.js +94 -0
- package/script/src/dsl/http/versori/roundtripper.d.ts +31 -0
- package/script/src/dsl/http/versori/roundtripper.d.ts.map +1 -0
- package/script/src/dsl/http/versori/roundtripper.js +246 -0
- package/script/src/interpreter/memory/MemoryInterpreter.d.ts +2 -0
- package/script/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
- package/script/src/interpreter/memory/MemoryInterpreter.js +10 -0
- package/script/src/interpreter/memory/ObservableCompiler.d.ts +2 -0
- package/script/src/interpreter/memory/ObservableCompiler.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/http.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/http.js +3 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// @generated by protoc-gen-es v2.2.3
|
|
3
|
+
// @generated from file versori/credential/v1alpha1/credential.proto (package versori.credential.v1alpha1, syntax proto3)
|
|
4
|
+
/* eslint-disable */
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CredentialDataJWTBearerSchema = exports.CredentialDataOAuth2ResourceOwnerSchema = exports.CredentialDataOAuth2Client_Flow = exports.CredentialDataOAuth2Client_FlowSchema = exports.CredentialDataOAuth2Client_AuthStyle = exports.CredentialDataOAuth2Client_AuthStyleSchema = exports.CredentialDataOAuth2Client_ParameterConfig_From = exports.CredentialDataOAuth2Client_ParameterConfig_FromSchema = exports.CredentialDataOAuth2Client_ParameterConfig_Location = exports.CredentialDataOAuth2Client_ParameterConfig_LocationSchema = exports.CredentialDataOAuth2Client_ParameterConfigSchema = exports.CredentialDataOAuth2ClientSchema = exports.CredentialDataCertificateSchema = exports.CredentialDataBasicAuthSchema = exports.HTTPRefreshConfig_Selector_BodySelector_GvalExpressionSchema = exports.HTTPRefreshConfig_Selector_BodySelectorSchema = exports.HTTPRefreshConfig_SelectorSchema = exports.HTTPRefreshConfig_RequestTemplate_CredentialTarget_HeaderSchema = exports.HTTPRefreshConfig_RequestTemplate_CredentialTarget_BodySchema = exports.HTTPRefreshConfig_RequestTemplate_CredentialTargetSchema = exports.HTTPRefreshConfig_RequestTemplate_HeaderValueSchema = exports.HTTPRefreshConfig_RequestTemplateSchema = exports.HTTPRefreshConfigSchema = exports.CredentialCustomFunctionSchema = exports.CredentialHTTPRefreshConfigSchema = exports.CredentialHTTPRefreshDataSchema = exports.CredentialDataRawSchema = exports.CredentialDataOAuth2TokenSchema = exports.Credential_Type = exports.Credential_TypeSchema = exports.CredentialSchema = exports.file_versori_credential_v1alpha1_credential = void 0;
|
|
7
|
+
const codegenv1_1 = require("@bufbuild/protobuf/codegenv1");
|
|
8
|
+
const wkt_1 = require("@bufbuild/protobuf/wkt");
|
|
9
|
+
// import { file_validate_validate } from "../../../validate/validate_pb";
|
|
10
|
+
/**
|
|
11
|
+
* Describes the file versori/credential/v1alpha1/credential.proto.
|
|
12
|
+
*/
|
|
13
|
+
exports.file_versori_credential_v1alpha1_credential = (0, codegenv1_1.fileDesc)("Cix2ZXJzb3JpL2NyZWRlbnRpYWwvdjFhbHBoYTEvY3JlZGVudGlhbC5wcm90bxIbdmVyc29yaS5jcmVkZW50aWFsLnYxYWxwaGExIqcECgpDcmVkZW50aWFsEgoKAmlkGAEgASgJEhcKD29yZ2FuaXNhdGlvbl9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEjoKBHR5cGUYBCABKA4yLC52ZXJzb3JpLmNyZWRlbnRpYWwudjFhbHBoYTEuQ3JlZGVudGlhbC5UeXBlEhAKCGlzX3ZhbGlkGAUgASgIEj8KBGRhdGEYBiADKAsyMS52ZXJzb3JpLmNyZWRlbnRpYWwudjFhbHBoYTEuQ3JlZGVudGlhbC5EYXRhRW50cnkSFQoNcmVkYWN0X2ZpZWxkcxgHIAMoCRIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZChF2YWxpZGF0aW9uX2Vycm9ycxgJIAMoCRorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgMOgI4ASLHAQoEVHlwZRILCgdEZWZhdWx0EAASDwoLT0F1dGgyVG9rZW4QARIHCgNSYXcQAhINCglCYXNpY0F1dGgQAxIQCgxPQXV0aDJDbGllbnQQBBITCg9IVFRQUmVmcmVzaERhdGEQBRIVChFIVFRQUmVmcmVzaENvbmZpZxAGEg0KCUpXVEJlYXJlchAHEhIKDkN1c3RvbUZ1bmN0aW9uEAgSFwoTT0F1dGgyUmVzb3VyY2VPd25lchAJEg8KC0NlcnRpZmljYXRlEAoiyQEKGUNyZWRlbnRpYWxEYXRhT0F1dGgyVG9rZW4SLAobb2F1dGgyX2NsaWVudF9jcmVkZW50aWFsX2lkGAEgASgJQgf6QgRyAhABEhQKDGFjY2Vzc190b2tlbhgCIAEoCRISCgp0b2tlbl90eXBlGAMgASgJEhUKDXJlZnJlc2hfdG9rZW4YBCABKAkSEgoKZXhwaXJlc19hdBgFIAEoCRIOCgZzY29wZXMYCCADKAkSGQoRYWRkaXRpb25hbF9wYXJhbXMYCSABKAkiUwoRQ3JlZGVudGlhbERhdGFSYXcSCwoDcmF3GAEgASgMEh0KFXJlZnJlc2hfY3JlZGVudGlhbF9pZBgCIAEoCRISCgpleHBpcmVzX2F0GAMgASgJIkkKGUNyZWRlbnRpYWxIVFRQUmVmcmVzaERhdGESDAoEZGF0YRgBIAEoDBIeChZodHRwX3JlZnJlc2hfY29uZmlnX2lkGAIgASgJIisKG0NyZWRlbnRpYWxIVFRQUmVmcmVzaENvbmZpZxIMCgRib2R5GAEgASgMIj4KGENyZWRlbnRpYWxDdXN0b21GdW5jdGlvbhIMCgRkYXRhGAEgASgMEhQKDGZ1bmN0aW9uX3VybBgCIAEoCSK4CAoRSFRUUFJlZnJlc2hDb25maWcSUAoIdGVtcGxhdGUYASABKAsyPi52ZXJzb3JpLmNyZWRlbnRpYWwudjFhbHBoYTEuSFRUUFJlZnJlc2hDb25maWcuUmVxdWVzdFRlbXBsYXRlEjAKDWV4cGlyZXNfYWZ0ZXIYAiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SSQoIc2VsZWN0b3IYAyABKAsyNy52ZXJzb3JpLmNyZWRlbnRpYWwudjFhbHBoYTEuSFRUUFJlZnJlc2hDb25maWcuU2VsZWN0b3IawAQKD1JlcXVlc3RUZW1wbGF0ZRILCgN1cmwYASABKAkSDgoGbWV0aG9kGAIgASgJElwKB2hlYWRlcnMYAyADKAsySy52ZXJzb3JpLmNyZWRlbnRpYWwudjFhbHBoYTEuSFRUUFJlZnJlc2hDb25maWcuUmVxdWVzdFRlbXBsYXRlLkhlYWRlcnNFbnRyeRJkCgRib2R5GAQgASgLMlQudmVyc29yaS5jcmVkZW50aWFsLnYxYWxwaGExLkhUVFBSZWZyZXNoQ29uZmlnLlJlcXVlc3RUZW1wbGF0ZS5DcmVkZW50aWFsVGFyZ2V0LkJvZHlIABJoCgZoZWFkZXIYBSABKAsyVi52ZXJzb3JpLmNyZWRlbnRpYWwudjFhbHBoYTEuSFRUUFJlZnJlc2hDb25maWcuUmVxdWVzdFRlbXBsYXRlLkNyZWRlbnRpYWxUYXJnZXQuSGVhZGVySAAaegoMSGVhZGVyc0VudHJ5EgsKA2tleRgBIAEoCRJZCgV2YWx1ZRgCIAEoCzJKLnZlcnNvcmkuY3JlZGVudGlhbC52MWFscGhhMS5IVFRQUmVmcmVzaENvbmZpZy5SZXF1ZXN0VGVtcGxhdGUuSGVhZGVyVmFsdWU6AjgBGh0KC0hlYWRlclZhbHVlEg4KBnZhbHVlcxgBIAMoCRoyChBDcmVkZW50aWFsVGFyZ2V0GgYKBEJvZHkaFgoGSGVhZGVyEgwKBG5hbWUYASABKAlCEwoRY3JlZGVudGlhbF90YXJnZXQakAIKCFNlbGVjdG9yElQKBGJvZHkYASABKAsyRC52ZXJzb3JpLmNyZWRlbnRpYWwudjFhbHBoYTEuSFRUUFJlZnJlc2hDb25maWcuU2VsZWN0b3IuQm9keVNlbGVjdG9ySAAaoQEKDEJvZHlTZWxlY3RvchJjCgRndmFsGAEgASgLMlMudmVyc29yaS5jcmVkZW50aWFsLnYxYWxwaGExLkhUVFBSZWZyZXNoQ29uZmlnLlNlbGVjdG9yLkJvZHlTZWxlY3Rvci5HdmFsRXhwcmVzc2lvbkgAGh4KDkd2YWxFeHByZXNzaW9uEgwKBGV4cHIYASABKAlCDAoKZXhwcmVzc2lvbkIKCghzZWxlY3RvciJGChdDcmVkZW50aWFsRGF0YUJhc2ljQXV0aBIZCgh1c2VybmFtZRgBIAEoCUIH+kIEcgIQARIQCghwYXNzd29yZBgCIAEoCSJkChlDcmVkZW50aWFsRGF0YUNlcnRpZmljYXRlEhwKC2NlcnRpZmljYXRlGAEgASgMQgf6QgR6AhABEhQKA2tleRgCIAEoDEIH+kIEegIQARITCgJjYRgDIAEoDEIH+kIEegIQASKjCQoaQ3JlZGVudGlhbERhdGFPQXV0aDJDbGllbnQSEQoJY2xpZW50X2lkGAEgASgJEhUKDWNsaWVudF9zZWNyZXQYAiABKAkSKwoWYXV0aG9yaXphdGlvbl9lbmRwb2ludBgDIAEoCUIL+kIIcgbQAQGIAQESIAoOdG9rZW5fZW5kcG9pbnQYBCABKAlCCPpCBXIDiAEBEiYKEXVzZXJpbmZvX2VuZHBvaW50GAUgASgJQgv6QghyBtABAYgBARJKCgRmbG93GAYgASgOMjwudmVyc29yaS5jcmVkZW50aWFsLnYxYWxwaGExLkNyZWRlbnRpYWxEYXRhT0F1dGgyQ2xpZW50LkZsb3cSDgoGc2NvcGVzGAcgASgJEhkKEWFkZGl0aW9uYWxfcGFyYW1zGAggASgJEhAKCHVzZXJuYW1lGAkgASgJEhAKCHBhc3N3b3JkGAogASgJEmkKGGFkZGl0aW9uYWxfcGFyYW1fY29uZmlncxgLIAMoCzJHLnZlcnNvcmkuY3JlZGVudGlhbC52MWFscGhhMS5DcmVkZW50aWFsRGF0YU9BdXRoMkNsaWVudC5QYXJhbWV0ZXJDb25maWcSVQoKYXV0aF9zdHlsZRgQIAEoDjJBLnZlcnNvcmkuY3JlZGVudGlhbC52MWFscGhhMS5DcmVkZW50aWFsRGF0YU9BdXRoMkNsaWVudC5BdXRoU3R5bGUSGgoSbXRsc19jcmVkZW50aWFsX2lkGBEgASgJEhIKCm90aGVyX2Zsb3cYEiABKAkaogMKD1BhcmFtZXRlckNvbmZpZxIWCg5wYXJhbWV0ZXJfbmFtZRgBIAEoCRITCgt0YXJnZXRfbmFtZRgCIAEoCRJiCghsb2NhdGlvbhgDIAEoDjJQLnZlcnNvcmkuY3JlZGVudGlhbC52MWFscGhhMS5DcmVkZW50aWFsRGF0YU9BdXRoMkNsaWVudC5QYXJhbWV0ZXJDb25maWcuTG9jYXRpb24SWgoEZnJvbRgEIAEoDjJMLnZlcnNvcmkuY3JlZGVudGlhbC52MWFscGhhMS5DcmVkZW50aWFsRGF0YU9BdXRoMkNsaWVudC5QYXJhbWV0ZXJDb25maWcuRnJvbRITCgtncmFudF90eXBlcxgFIAMoCSJXCghMb2NhdGlvbhISCg5Mb2NhdGlvbklnbm9yZRAAEhAKDExvY2F0aW9uQm9keRABEhIKDkxvY2F0aW9uSGVhZGVyEAISEQoNTG9jYXRpb25RdWVyeRADIjQKBEZyb20SGAoURnJvbUFkZGl0aW9uYWxQYXJhbXMQABISCg5Gcm9tUmFuZG9tVVVJRBABIlIKCUF1dGhTdHlsZRIXChNBdXRoU3R5bGVBdXRvRGV0ZWN0EAASFQoRQXV0aFN0eWxlSW5QYXJhbXMQARIVChFBdXRoU3R5bGVJbkhlYWRlchACIl4KBEZsb3cSFgoSYXV0aG9yaXphdGlvbl9jb2RlEAASFgoSY2xpZW50X2NyZWRlbnRpYWxzEAESGwoXcmVzb3VyY2Vfb3duZXJfcGFzc3dvcmQQAhIJCgVvdGhlchADItoBCiFDcmVkZW50aWFsRGF0YU9BdXRoMlJlc291cmNlT3duZXISLAobb2F1dGgyX2NsaWVudF9jcmVkZW50aWFsX2lkGAEgASgJQgf6QgRyAhABEhAKCHVzZXJuYW1lGAIgASgJEhAKCHBhc3N3b3JkGAMgASgJEhQKDGFjY2Vzc190b2tlbhgEIAEoCRISCgp0b2tlbl90eXBlGAUgASgJEhIKCmV4cGlyZXNfYXQYBiABKAkSFQoNcmVmcmVzaF90b2tlbhgHIAEoCRIOCgZzY29wZXMYCCADKAkixgEKF0NyZWRlbnRpYWxEYXRhSldUQmVhcmVyEkIKCWFsZ29yaXRobRgBIAEoCUIv+kIscipSBUhTMjU2UgVIUzM4NFIFSFM1MTJSBVJTMjU2UgVSUzM4NFIFUlM1MTISGgoGc2VjcmV0GAIgASgMQgr6Qgd6BRABGIAoEhgKB3BheWxvYWQYAyABKAxCB/pCBHoCEAISEgoKZXhwaXJlc19pbhgEIAEoCRIdChVyZXF1ZXN0X2hlYWRlcl9wcmVmaXgYBSABKAlCJlokdmVyc29yaS5kZXYvY3JlZGVudGlhbHMvYXBpL3YxYWxwaGExYgZwcm90bzM", [wkt_1.file_google_protobuf_duration, wkt_1.file_google_protobuf_timestamp]);
|
|
14
|
+
/**
|
|
15
|
+
* Describes the message versori.credential.v1alpha1.Credential.
|
|
16
|
+
* Use `create(CredentialSchema)` to create a new message.
|
|
17
|
+
*/
|
|
18
|
+
exports.CredentialSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 0);
|
|
19
|
+
/**
|
|
20
|
+
* Describes the enum versori.credential.v1alpha1.Credential.Type.
|
|
21
|
+
*/
|
|
22
|
+
exports.Credential_TypeSchema = (0, codegenv1_1.enumDesc)(exports.file_versori_credential_v1alpha1_credential, 0, 0);
|
|
23
|
+
/**
|
|
24
|
+
* @generated from enum versori.credential.v1alpha1.Credential.Type
|
|
25
|
+
*/
|
|
26
|
+
exports.Credential_Type = (0, codegenv1_1.tsEnum)(exports.Credential_TypeSchema);
|
|
27
|
+
/**
|
|
28
|
+
* Describes the message versori.credential.v1alpha1.CredentialDataOAuth2Token.
|
|
29
|
+
* Use `create(CredentialDataOAuth2TokenSchema)` to create a new message.
|
|
30
|
+
*/
|
|
31
|
+
exports.CredentialDataOAuth2TokenSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 1);
|
|
32
|
+
/**
|
|
33
|
+
* Describes the message versori.credential.v1alpha1.CredentialDataRaw.
|
|
34
|
+
* Use `create(CredentialDataRawSchema)` to create a new message.
|
|
35
|
+
*/
|
|
36
|
+
exports.CredentialDataRawSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 2);
|
|
37
|
+
/**
|
|
38
|
+
* Describes the message versori.credential.v1alpha1.CredentialHTTPRefreshData.
|
|
39
|
+
* Use `create(CredentialHTTPRefreshDataSchema)` to create a new message.
|
|
40
|
+
*/
|
|
41
|
+
exports.CredentialHTTPRefreshDataSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 3);
|
|
42
|
+
/**
|
|
43
|
+
* Describes the message versori.credential.v1alpha1.CredentialHTTPRefreshConfig.
|
|
44
|
+
* Use `create(CredentialHTTPRefreshConfigSchema)` to create a new message.
|
|
45
|
+
*/
|
|
46
|
+
exports.CredentialHTTPRefreshConfigSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 4);
|
|
47
|
+
/**
|
|
48
|
+
* Describes the message versori.credential.v1alpha1.CredentialCustomFunction.
|
|
49
|
+
* Use `create(CredentialCustomFunctionSchema)` to create a new message.
|
|
50
|
+
*/
|
|
51
|
+
exports.CredentialCustomFunctionSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 5);
|
|
52
|
+
/**
|
|
53
|
+
* Describes the message versori.credential.v1alpha1.HTTPRefreshConfig.
|
|
54
|
+
* Use `create(HTTPRefreshConfigSchema)` to create a new message.
|
|
55
|
+
*/
|
|
56
|
+
exports.HTTPRefreshConfigSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 6);
|
|
57
|
+
/**
|
|
58
|
+
* Describes the message versori.credential.v1alpha1.HTTPRefreshConfig.RequestTemplate.
|
|
59
|
+
* Use `create(HTTPRefreshConfig_RequestTemplateSchema)` to create a new message.
|
|
60
|
+
*/
|
|
61
|
+
exports.HTTPRefreshConfig_RequestTemplateSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 6, 0);
|
|
62
|
+
/**
|
|
63
|
+
* Describes the message versori.credential.v1alpha1.HTTPRefreshConfig.RequestTemplate.HeaderValue.
|
|
64
|
+
* Use `create(HTTPRefreshConfig_RequestTemplate_HeaderValueSchema)` to create a new message.
|
|
65
|
+
*/
|
|
66
|
+
exports.HTTPRefreshConfig_RequestTemplate_HeaderValueSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 6, 0, 0);
|
|
67
|
+
/**
|
|
68
|
+
* Describes the message versori.credential.v1alpha1.HTTPRefreshConfig.RequestTemplate.CredentialTarget.
|
|
69
|
+
* Use `create(HTTPRefreshConfig_RequestTemplate_CredentialTargetSchema)` to create a new message.
|
|
70
|
+
*/
|
|
71
|
+
exports.HTTPRefreshConfig_RequestTemplate_CredentialTargetSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 6, 0, 1);
|
|
72
|
+
/**
|
|
73
|
+
* Describes the message versori.credential.v1alpha1.HTTPRefreshConfig.RequestTemplate.CredentialTarget.Body.
|
|
74
|
+
* Use `create(HTTPRefreshConfig_RequestTemplate_CredentialTarget_BodySchema)` to create a new message.
|
|
75
|
+
*/
|
|
76
|
+
exports.HTTPRefreshConfig_RequestTemplate_CredentialTarget_BodySchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 6, 0, 1, 0);
|
|
77
|
+
/**
|
|
78
|
+
* Describes the message versori.credential.v1alpha1.HTTPRefreshConfig.RequestTemplate.CredentialTarget.Header.
|
|
79
|
+
* Use `create(HTTPRefreshConfig_RequestTemplate_CredentialTarget_HeaderSchema)` to create a new message.
|
|
80
|
+
*/
|
|
81
|
+
exports.HTTPRefreshConfig_RequestTemplate_CredentialTarget_HeaderSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 6, 0, 1, 1);
|
|
82
|
+
/**
|
|
83
|
+
* Describes the message versori.credential.v1alpha1.HTTPRefreshConfig.Selector.
|
|
84
|
+
* Use `create(HTTPRefreshConfig_SelectorSchema)` to create a new message.
|
|
85
|
+
*/
|
|
86
|
+
exports.HTTPRefreshConfig_SelectorSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 6, 1);
|
|
87
|
+
/**
|
|
88
|
+
* Describes the message versori.credential.v1alpha1.HTTPRefreshConfig.Selector.BodySelector.
|
|
89
|
+
* Use `create(HTTPRefreshConfig_Selector_BodySelectorSchema)` to create a new message.
|
|
90
|
+
*/
|
|
91
|
+
exports.HTTPRefreshConfig_Selector_BodySelectorSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 6, 1, 0);
|
|
92
|
+
/**
|
|
93
|
+
* Describes the message versori.credential.v1alpha1.HTTPRefreshConfig.Selector.BodySelector.GvalExpression.
|
|
94
|
+
* Use `create(HTTPRefreshConfig_Selector_BodySelector_GvalExpressionSchema)` to create a new message.
|
|
95
|
+
*/
|
|
96
|
+
exports.HTTPRefreshConfig_Selector_BodySelector_GvalExpressionSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 6, 1, 0, 0);
|
|
97
|
+
/**
|
|
98
|
+
* Describes the message versori.credential.v1alpha1.CredentialDataBasicAuth.
|
|
99
|
+
* Use `create(CredentialDataBasicAuthSchema)` to create a new message.
|
|
100
|
+
*/
|
|
101
|
+
exports.CredentialDataBasicAuthSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 7);
|
|
102
|
+
/**
|
|
103
|
+
* Describes the message versori.credential.v1alpha1.CredentialDataCertificate.
|
|
104
|
+
* Use `create(CredentialDataCertificateSchema)` to create a new message.
|
|
105
|
+
*/
|
|
106
|
+
exports.CredentialDataCertificateSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 8);
|
|
107
|
+
/**
|
|
108
|
+
* Describes the message versori.credential.v1alpha1.CredentialDataOAuth2Client.
|
|
109
|
+
* Use `create(CredentialDataOAuth2ClientSchema)` to create a new message.
|
|
110
|
+
*/
|
|
111
|
+
exports.CredentialDataOAuth2ClientSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 9);
|
|
112
|
+
/**
|
|
113
|
+
* Describes the message versori.credential.v1alpha1.CredentialDataOAuth2Client.ParameterConfig.
|
|
114
|
+
* Use `create(CredentialDataOAuth2Client_ParameterConfigSchema)` to create a new message.
|
|
115
|
+
*/
|
|
116
|
+
exports.CredentialDataOAuth2Client_ParameterConfigSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 9, 0);
|
|
117
|
+
/**
|
|
118
|
+
* Describes the enum versori.credential.v1alpha1.CredentialDataOAuth2Client.ParameterConfig.Location.
|
|
119
|
+
*/
|
|
120
|
+
exports.CredentialDataOAuth2Client_ParameterConfig_LocationSchema = (0, codegenv1_1.enumDesc)(exports.file_versori_credential_v1alpha1_credential, 9, 0, 0);
|
|
121
|
+
/**
|
|
122
|
+
* @generated from enum versori.credential.v1alpha1.CredentialDataOAuth2Client.ParameterConfig.Location
|
|
123
|
+
*/
|
|
124
|
+
exports.CredentialDataOAuth2Client_ParameterConfig_Location = (0, codegenv1_1.tsEnum)(exports.CredentialDataOAuth2Client_ParameterConfig_LocationSchema);
|
|
125
|
+
/**
|
|
126
|
+
* Describes the enum versori.credential.v1alpha1.CredentialDataOAuth2Client.ParameterConfig.From.
|
|
127
|
+
*/
|
|
128
|
+
exports.CredentialDataOAuth2Client_ParameterConfig_FromSchema = (0, codegenv1_1.enumDesc)(exports.file_versori_credential_v1alpha1_credential, 9, 0, 1);
|
|
129
|
+
/**
|
|
130
|
+
* @generated from enum versori.credential.v1alpha1.CredentialDataOAuth2Client.ParameterConfig.From
|
|
131
|
+
*/
|
|
132
|
+
exports.CredentialDataOAuth2Client_ParameterConfig_From = (0, codegenv1_1.tsEnum)(exports.CredentialDataOAuth2Client_ParameterConfig_FromSchema);
|
|
133
|
+
/**
|
|
134
|
+
* Describes the enum versori.credential.v1alpha1.CredentialDataOAuth2Client.AuthStyle.
|
|
135
|
+
*/
|
|
136
|
+
exports.CredentialDataOAuth2Client_AuthStyleSchema = (0, codegenv1_1.enumDesc)(exports.file_versori_credential_v1alpha1_credential, 9, 0);
|
|
137
|
+
/**
|
|
138
|
+
* @generated from enum versori.credential.v1alpha1.CredentialDataOAuth2Client.AuthStyle
|
|
139
|
+
*/
|
|
140
|
+
exports.CredentialDataOAuth2Client_AuthStyle = (0, codegenv1_1.tsEnum)(exports.CredentialDataOAuth2Client_AuthStyleSchema);
|
|
141
|
+
/**
|
|
142
|
+
* Describes the enum versori.credential.v1alpha1.CredentialDataOAuth2Client.Flow.
|
|
143
|
+
*/
|
|
144
|
+
exports.CredentialDataOAuth2Client_FlowSchema = (0, codegenv1_1.enumDesc)(exports.file_versori_credential_v1alpha1_credential, 9, 1);
|
|
145
|
+
/**
|
|
146
|
+
* @generated from enum versori.credential.v1alpha1.CredentialDataOAuth2Client.Flow
|
|
147
|
+
*/
|
|
148
|
+
exports.CredentialDataOAuth2Client_Flow = (0, codegenv1_1.tsEnum)(exports.CredentialDataOAuth2Client_FlowSchema);
|
|
149
|
+
/**
|
|
150
|
+
* Describes the message versori.credential.v1alpha1.CredentialDataOAuth2ResourceOwner.
|
|
151
|
+
* Use `create(CredentialDataOAuth2ResourceOwnerSchema)` to create a new message.
|
|
152
|
+
*/
|
|
153
|
+
exports.CredentialDataOAuth2ResourceOwnerSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 10);
|
|
154
|
+
/**
|
|
155
|
+
* Describes the message versori.credential.v1alpha1.CredentialDataJWTBearer.
|
|
156
|
+
* Use `create(CredentialDataJWTBearerSchema)` to create a new message.
|
|
157
|
+
*/
|
|
158
|
+
exports.CredentialDataJWTBearerSchema = (0, codegenv1_1.messageDesc)(exports.file_versori_credential_v1alpha1_credential, 11);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internalauth.d.ts","sourceRoot":"","sources":["../../../../../src/src/dsl/http/versori/internalauth.ts"],"names":[],"mappings":"AACA,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,SAAS,CAAQ;;IAuBnB,QAAQ;CAsBjB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.InternalAuth = void 0;
|
|
27
|
+
const dntShim = __importStar(require("../../../../_dnt.shims.js"));
|
|
28
|
+
class InternalAuth {
|
|
29
|
+
constructor() {
|
|
30
|
+
Object.defineProperty(this, "clientId", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
configurable: true,
|
|
33
|
+
writable: true,
|
|
34
|
+
value: void 0
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(this, "clientSecret", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
configurable: true,
|
|
39
|
+
writable: true,
|
|
40
|
+
value: void 0
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(this, "tokenEndpoint", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
configurable: true,
|
|
45
|
+
writable: true,
|
|
46
|
+
value: void 0
|
|
47
|
+
});
|
|
48
|
+
Object.defineProperty(this, "accessToken", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
configurable: true,
|
|
51
|
+
writable: true,
|
|
52
|
+
value: void 0
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(this, "expiresAt", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
configurable: true,
|
|
57
|
+
writable: true,
|
|
58
|
+
value: void 0
|
|
59
|
+
});
|
|
60
|
+
this.clientId = dntShim.Deno.env.get("RUN_CLIENT_ID") || "";
|
|
61
|
+
this.clientSecret = dntShim.Deno.env.get("RUN_CLIENT_SECRET") || "";
|
|
62
|
+
this.tokenEndpoint = dntShim.Deno.env.get("RUN_TOKEN_ENDPOINT") || "";
|
|
63
|
+
this.accessToken = '';
|
|
64
|
+
this.expiresAt = 0;
|
|
65
|
+
if (dntShim.Deno.env.get("RUN_ACCESS_TOKEN")) {
|
|
66
|
+
this.accessToken = dntShim.Deno.env.get("RUN_INTERNAL_TOKEN") || "";
|
|
67
|
+
this.expiresAt = Date.now() + 365 * 24 * 60 * 60 * 1000; // expires in 1 year
|
|
68
|
+
console.log("Using static token provided by RUN_INTERNAL_TOKEN");
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (!this.clientId || !this.clientSecret || !this.tokenEndpoint) {
|
|
72
|
+
throw new Error("Missing environment variables");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async getToken() {
|
|
76
|
+
if (this.accessToken && this.expiresAt > Date.now()) {
|
|
77
|
+
return this.accessToken;
|
|
78
|
+
}
|
|
79
|
+
const encoded = btoa(`${this.clientId}:${this.clientSecret}`);
|
|
80
|
+
const response = await fetch(this.tokenEndpoint, {
|
|
81
|
+
method: 'POST',
|
|
82
|
+
headers: {
|
|
83
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
84
|
+
'Authorization': `Basic ${encoded}`
|
|
85
|
+
},
|
|
86
|
+
body: `grant_type=client_credentials`
|
|
87
|
+
});
|
|
88
|
+
const data = await response.json();
|
|
89
|
+
this.accessToken = data.access_token;
|
|
90
|
+
this.expiresAt = (Date.now() + data.expires_in * 1000) - (2 * 60 * 1000); // 2 minutes before expiration
|
|
91
|
+
return this.accessToken;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.InternalAuth = InternalAuth;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ConnectAPIClient } from './connectapi.js';
|
|
2
|
+
import { DynamicFetcher, RoundTripperFactory } from "../types.js";
|
|
3
|
+
import { VersoriCredentialClient } from './credentials/mod.js';
|
|
4
|
+
export type RunningEnvironment = 'local' | 'versori' | 'staging';
|
|
5
|
+
export declare function CreateFromEnv(): VersoriRoundTripperFactory;
|
|
6
|
+
/**
|
|
7
|
+
* VersoriRoundTripper is an implementation of the RoundTripperFactory interface for Versori connections.
|
|
8
|
+
* This is the intended implementation for when projects/services are hosted on Versori infrastructure.
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const factory = new VersoriRoundTripperFactory(connectAPIClient, tokenClient);
|
|
14
|
+
* const customFetch = await factory.create('connectionName');
|
|
15
|
+
* const response = await customFetch('https://api.example.com/data');
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare class VersoriRoundTripperFactory implements RoundTripperFactory {
|
|
19
|
+
private cAPIClient;
|
|
20
|
+
private tokenClient;
|
|
21
|
+
private versoriCfg;
|
|
22
|
+
constructor(cAPIClient: ConnectAPIClient, credsClient: VersoriCredentialClient);
|
|
23
|
+
create(connName: string, fn?: typeof fetch): Promise<typeof fetch>;
|
|
24
|
+
createDynamic(templateName: string, fn: typeof fetch): Promise<DynamicFetcher>;
|
|
25
|
+
private getConnectionID;
|
|
26
|
+
private apiKeyFetcher;
|
|
27
|
+
private basicAuthFetcher;
|
|
28
|
+
private bearerTokenFetcher;
|
|
29
|
+
private oauth2Fetcher;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=roundtripper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roundtripper.d.ts","sourceRoot":"","sources":["../../../../../src/src/dsl/http/versori/roundtripper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAc,cAAc,EAAE,mBAAmB,EAAoB,MAAM,aAAa,CAAC;AAEhG,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,wBAAgB,aAAa,IAAI,0BAA0B,CAgB1D;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,0BAA2B,YAAW,mBAAmB;IAClE,OAAO,CAAC,UAAU,CAAmB;IAErC,OAAO,CAAC,WAAW,CAA0B;IAE7C,OAAO,CAAC,UAAU,CAAmB;gBAEzB,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,uBAAuB;IAMxE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAE,OAAO,KAAa,GAAG,OAAO,CAAC,OAAO,KAAK,CAAC;IAsBzE,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC;IAIpF,OAAO,CAAC,eAAe;YAWT,aAAa;YA+Cb,gBAAgB;YA0BhB,kBAAkB;YAkClB,aAAa;CAgD9B"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.VersoriRoundTripperFactory = void 0;
|
|
27
|
+
exports.CreateFromEnv = CreateFromEnv;
|
|
28
|
+
const dntShim = __importStar(require("../../../../_dnt.shims.js"));
|
|
29
|
+
const connectapi_js_1 = require("./connectapi.js");
|
|
30
|
+
const configloader_js_1 = require("./configloader.js");
|
|
31
|
+
const mod_js_1 = require("./credentials/mod.js");
|
|
32
|
+
function CreateFromEnv() {
|
|
33
|
+
const connAPIBaseURL = dntShim.Deno.env.get('RUN_CONNECT_API_INTERNAL_URL');
|
|
34
|
+
const credsBaseURL = dntShim.Deno.env.get('RUN_CREDENTIALS_SERVICE_INTERNAL_URL');
|
|
35
|
+
const orgId = dntShim.Deno.env.get('RUN_ORGANISATION_ID');
|
|
36
|
+
const serviceConnId = dntShim.Deno.env.get('RUN_CONNECTOR_ID');
|
|
37
|
+
if (!orgId || !serviceConnId || !connAPIBaseURL || !credsBaseURL) {
|
|
38
|
+
throw new Error('ORGANISATION_ID or CONNECTOR_ID not found in environment');
|
|
39
|
+
}
|
|
40
|
+
const cAPIClient = new connectapi_js_1.ConnectAPIClient(connAPIBaseURL, orgId, serviceConnId, {});
|
|
41
|
+
const tokenClient = new mod_js_1.VersoriCredentialClient(credsBaseURL);
|
|
42
|
+
return new VersoriRoundTripperFactory(cAPIClient, tokenClient);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* VersoriRoundTripper is an implementation of the RoundTripperFactory interface for Versori connections.
|
|
46
|
+
* This is the intended implementation for when projects/services are hosted on Versori infrastructure.
|
|
47
|
+
*
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const factory = new VersoriRoundTripperFactory(connectAPIClient, tokenClient);
|
|
52
|
+
* const customFetch = await factory.create('connectionName');
|
|
53
|
+
* const response = await customFetch('https://api.example.com/data');
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
class VersoriRoundTripperFactory {
|
|
57
|
+
constructor(cAPIClient, credsClient) {
|
|
58
|
+
Object.defineProperty(this, "cAPIClient", {
|
|
59
|
+
enumerable: true,
|
|
60
|
+
configurable: true,
|
|
61
|
+
writable: true,
|
|
62
|
+
value: void 0
|
|
63
|
+
});
|
|
64
|
+
Object.defineProperty(this, "tokenClient", {
|
|
65
|
+
enumerable: true,
|
|
66
|
+
configurable: true,
|
|
67
|
+
writable: true,
|
|
68
|
+
value: void 0
|
|
69
|
+
});
|
|
70
|
+
Object.defineProperty(this, "versoriCfg", {
|
|
71
|
+
enumerable: true,
|
|
72
|
+
configurable: true,
|
|
73
|
+
writable: true,
|
|
74
|
+
value: void 0
|
|
75
|
+
});
|
|
76
|
+
this.cAPIClient = cAPIClient;
|
|
77
|
+
this.tokenClient = credsClient;
|
|
78
|
+
this.versoriCfg = (0, configloader_js_1.LoadConfigFromJSON)(); // for now?
|
|
79
|
+
}
|
|
80
|
+
async create(connName, fn = fetch) {
|
|
81
|
+
const cnxId = this.getConnectionID(connName);
|
|
82
|
+
const conn = await this.cAPIClient.getConnection(cnxId);
|
|
83
|
+
if (!conn) {
|
|
84
|
+
throw new Error(`Connection ${connName} not found`);
|
|
85
|
+
}
|
|
86
|
+
switch (conn.credentials.action[0].authSchemeConfig.schemeType) {
|
|
87
|
+
case 'api-key':
|
|
88
|
+
return this.apiKeyFetcher(conn, fn);
|
|
89
|
+
case 'basic-auth':
|
|
90
|
+
return this.basicAuthFetcher(conn, fn);
|
|
91
|
+
case 'jwt-bearer':
|
|
92
|
+
return this.bearerTokenFetcher(conn, fn);
|
|
93
|
+
case 'oauth2':
|
|
94
|
+
return this.oauth2Fetcher(conn, fn);
|
|
95
|
+
default:
|
|
96
|
+
return fn;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async createDynamic(templateName, fn) {
|
|
100
|
+
throw new Error('Method not implemented.');
|
|
101
|
+
}
|
|
102
|
+
getConnectionID(connName) {
|
|
103
|
+
// Note that this is till very up in the air whether we are going to store the connection ID in the config
|
|
104
|
+
const conn = this.versoriCfg.connections.find(c => c.name === connName);
|
|
105
|
+
if (!conn) {
|
|
106
|
+
throw new Error(`Connection ${connName} not found`);
|
|
107
|
+
}
|
|
108
|
+
return conn.id;
|
|
109
|
+
}
|
|
110
|
+
async apiKeyFetcher(conn, fn) {
|
|
111
|
+
const tokenResponse = await this.tokenClient.getToken(conn.credentials.action[0].credential.id);
|
|
112
|
+
const token = tokenResponse.token?.accessToken;
|
|
113
|
+
if (!token) {
|
|
114
|
+
throw new Error('Token not found');
|
|
115
|
+
}
|
|
116
|
+
const _fn = (input, init) => {
|
|
117
|
+
if (!init) {
|
|
118
|
+
init = {};
|
|
119
|
+
}
|
|
120
|
+
switch (conn.credentials.action[0].authSchemeConfig.in) {
|
|
121
|
+
case 'header':
|
|
122
|
+
if (!init.headers) {
|
|
123
|
+
init.headers = new Headers();
|
|
124
|
+
}
|
|
125
|
+
if (init.headers instanceof Headers) {
|
|
126
|
+
init.headers.set('Authorization', token);
|
|
127
|
+
}
|
|
128
|
+
else if (init.headers instanceof Array) {
|
|
129
|
+
init.headers.push(['Authorization', token]);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
init.headers = {
|
|
133
|
+
...init.headers,
|
|
134
|
+
['Authorization']: token
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
break;
|
|
138
|
+
case 'query':
|
|
139
|
+
if (typeof input === 'string') {
|
|
140
|
+
input += `?${'Authorization'}=${token}`;
|
|
141
|
+
}
|
|
142
|
+
else if (input instanceof Request) {
|
|
143
|
+
input = new Request(input.url + `?${'Authorization'}=${token}`, init);
|
|
144
|
+
}
|
|
145
|
+
else if (input instanceof URL) {
|
|
146
|
+
input.searchParams.append('Authorization', token);
|
|
147
|
+
}
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
return fn(input, init);
|
|
151
|
+
};
|
|
152
|
+
return _fn;
|
|
153
|
+
}
|
|
154
|
+
async basicAuthFetcher(conn, fn) {
|
|
155
|
+
const tokenResponse = await this.tokenClient.getToken(conn.credentials.action[0].credential.id);
|
|
156
|
+
const token = tokenResponse.token?.accessToken;
|
|
157
|
+
if (!token) {
|
|
158
|
+
throw new Error('Token not found');
|
|
159
|
+
}
|
|
160
|
+
const _fn = (input, init) => {
|
|
161
|
+
if (!init) {
|
|
162
|
+
init = {};
|
|
163
|
+
}
|
|
164
|
+
if (!init.headers) {
|
|
165
|
+
init.headers = new Headers();
|
|
166
|
+
}
|
|
167
|
+
init.headers.set('Authorization', token);
|
|
168
|
+
return fn(input, init);
|
|
169
|
+
};
|
|
170
|
+
return _fn;
|
|
171
|
+
}
|
|
172
|
+
// TODO: need to make the prefix and header name configuratble from authschemeconfig
|
|
173
|
+
async bearerTokenFetcher(conn, fn) {
|
|
174
|
+
const tokenResponse = await this.tokenClient.getToken(conn.credentials.action[0].credential.id);
|
|
175
|
+
const token = tokenResponse.token?.accessToken;
|
|
176
|
+
if (!token) {
|
|
177
|
+
throw new Error('Token not found');
|
|
178
|
+
}
|
|
179
|
+
const _fn = (input, init) => {
|
|
180
|
+
if (!init) {
|
|
181
|
+
init = {};
|
|
182
|
+
}
|
|
183
|
+
if (!init.headers) {
|
|
184
|
+
init.headers = new Headers();
|
|
185
|
+
}
|
|
186
|
+
if (init.headers instanceof Headers) {
|
|
187
|
+
init.headers.set('Authorization', `Bearer ${token}`);
|
|
188
|
+
}
|
|
189
|
+
else if (init.headers instanceof Array) {
|
|
190
|
+
init.headers.push(['Authorization', `Bearer ${token}`]);
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
init.headers = {
|
|
194
|
+
...init.headers,
|
|
195
|
+
['Authorization']: `Bearer ${token}`
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
return fn(input, init);
|
|
199
|
+
};
|
|
200
|
+
return _fn;
|
|
201
|
+
}
|
|
202
|
+
async oauth2Fetcher(conn, fn) {
|
|
203
|
+
const tokenResponse = await this.tokenClient.getOAuth2Token(conn.credentials.action[0].credential.id);
|
|
204
|
+
const token = tokenResponse.token?.accessToken;
|
|
205
|
+
const tokenType = tokenResponse.token?.tokenType;
|
|
206
|
+
if (!token) {
|
|
207
|
+
throw new Error('Token not found');
|
|
208
|
+
}
|
|
209
|
+
const _tokenType = () => {
|
|
210
|
+
const _tt = tokenType?.toLowerCase();
|
|
211
|
+
switch (_tt) {
|
|
212
|
+
case 'bearer':
|
|
213
|
+
return 'Bearer';
|
|
214
|
+
case 'mac':
|
|
215
|
+
return 'MAC';
|
|
216
|
+
case 'basic':
|
|
217
|
+
return 'Basic';
|
|
218
|
+
default:
|
|
219
|
+
return 'Bearer';
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
const _fn = (input, init) => {
|
|
223
|
+
if (!init) {
|
|
224
|
+
init = {};
|
|
225
|
+
}
|
|
226
|
+
if (!init.headers) {
|
|
227
|
+
init.headers = new Headers();
|
|
228
|
+
}
|
|
229
|
+
if (init.headers instanceof Headers) {
|
|
230
|
+
init.headers.set('Authorization', `${_tokenType()} ${token}`);
|
|
231
|
+
}
|
|
232
|
+
else if (init.headers instanceof Array) {
|
|
233
|
+
init.headers.push(['Authorization', `${_tokenType()} ${token}`]);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
init.headers = {
|
|
237
|
+
...init.headers,
|
|
238
|
+
['Authorization']: `${_tokenType()} ${token}`
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
return fn(input, init);
|
|
242
|
+
};
|
|
243
|
+
return _fn;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
exports.VersoriRoundTripperFactory = VersoriRoundTripperFactory;
|
|
@@ -7,11 +7,13 @@ export type MemoryInterpreterOptions = {
|
|
|
7
7
|
compiler?: ObservableCompiler;
|
|
8
8
|
contextProvider?: ContextProvider;
|
|
9
9
|
signal?: AbortSignal;
|
|
10
|
+
skipVersoriCredentials?: boolean;
|
|
10
11
|
};
|
|
11
12
|
export declare class MemoryInterpreter {
|
|
12
13
|
private log;
|
|
13
14
|
private compiler;
|
|
14
15
|
private contextProvider;
|
|
16
|
+
private roundTripperFactory;
|
|
15
17
|
constructor(options?: MemoryInterpreterOptions);
|
|
16
18
|
run<O>(workflow: Workflow<O>, options?: MemoryInterpreterOptions): Promise<void>;
|
|
17
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryInterpreter.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/MemoryInterpreter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAuB,MAAM,kCAAkC,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAgB,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAmB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoryInterpreter.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/MemoryInterpreter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAuB,MAAM,kCAAkC,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAgB,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAmB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAM9E,MAAM,MAAM,wBAAwB,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,mBAAmB,CAAsB;gBAErC,OAAO,GAAE,wBAA6B;IAOlD,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;CA0EnF"}
|
|
@@ -30,6 +30,8 @@ const ContextProvider_js_1 = require("../../context/ContextProvider.js");
|
|
|
30
30
|
const Workflow_js_1 = require("../../dsl/Workflow.js");
|
|
31
31
|
const ObservableCompiler_js_1 = require("./ObservableCompiler.js");
|
|
32
32
|
const ConsoleLogger_js_1 = require("../../observability/logging/ConsoleLogger.js");
|
|
33
|
+
const default_js_1 = require("../../dsl/http/default.js");
|
|
34
|
+
const roundtripper_js_1 = require("../../dsl/http/versori/roundtripper.js");
|
|
33
35
|
class MemoryInterpreter {
|
|
34
36
|
constructor(options = {}) {
|
|
35
37
|
Object.defineProperty(this, "log", {
|
|
@@ -50,9 +52,16 @@ class MemoryInterpreter {
|
|
|
50
52
|
writable: true,
|
|
51
53
|
value: void 0
|
|
52
54
|
});
|
|
55
|
+
Object.defineProperty(this, "roundTripperFactory", {
|
|
56
|
+
enumerable: true,
|
|
57
|
+
configurable: true,
|
|
58
|
+
writable: true,
|
|
59
|
+
value: void 0
|
|
60
|
+
});
|
|
53
61
|
this.log = options.logger || new ConsoleLogger_js_1.ConsoleLogger('debug');
|
|
54
62
|
this.compiler = options.compiler || new ObservableCompiler_js_1.ObservableCompiler();
|
|
55
63
|
this.contextProvider = options.contextProvider || new ContextProvider_js_1.ContextProviderImpl(this.log);
|
|
64
|
+
this.roundTripperFactory = options.skipVersoriCredentials ? new default_js_1.DefaultRoundTripperFactory() : (0, roundtripper_js_1.CreateFromEnv)();
|
|
56
65
|
}
|
|
57
66
|
run(workflow, options) {
|
|
58
67
|
const localAbortController = new AbortController();
|
|
@@ -74,6 +83,7 @@ class MemoryInterpreter {
|
|
|
74
83
|
compiler: this.compiler,
|
|
75
84
|
log: this.log,
|
|
76
85
|
contextProvider: this.contextProvider,
|
|
86
|
+
roundTripperFactory: this.roundTripperFactory,
|
|
77
87
|
};
|
|
78
88
|
const trigger$ = this.compiler.compileTrigger(compilerContext, workflow.trigger, combinedSignal);
|
|
79
89
|
const task$ = this.compiler.compileTask(compilerContext, workflow.task);
|
|
@@ -5,10 +5,12 @@ import { ContextOperatorFunction, TaskCompiler, TriggerCompiler } from './compil
|
|
|
5
5
|
import { Trigger } from '../../dsl/Trigger.js';
|
|
6
6
|
import { ContextProvider } from '../../context/ContextProvider.js';
|
|
7
7
|
import { ContextImpl } from '../../context/Context.js';
|
|
8
|
+
import { RoundTripperFactory } from '../../dsl/http/types.js';
|
|
8
9
|
export type CompilerContext = {
|
|
9
10
|
compiler: ObservableCompiler;
|
|
10
11
|
log: Logger;
|
|
11
12
|
contextProvider: ContextProvider;
|
|
13
|
+
roundTripperFactory: RoundTripperFactory;
|
|
12
14
|
};
|
|
13
15
|
export type CompilerFunc<In = any, Out = any, T extends Task<In, Out> = Task<In, Out>> = (ctx: CompilerContext, task: T) => OperatorFunction<In, Out>;
|
|
14
16
|
export declare class ObservableCompiler {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservableCompiler.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/ObservableCompiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,IAAI,EAAY,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAO/D,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9F,OAAO,EAAE,OAAO,EAAe,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ObservableCompiler.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/ObservableCompiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,IAAI,EAAY,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAO/D,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9F,OAAO,EAAE,OAAO,EAAe,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,eAAe,CAAC;IACjC,mBAAmB,EAAE,mBAAmB,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CACrF,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,CAAC,KACN,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAE/B,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,aAAa,CAAkD;IACvE,OAAO,CAAC,gBAAgB,CAAgD;;IAexE,WAAW,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,EACzC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,GACpB,uBAAuB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC;IAe1C,cAAc,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAC3D,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,WAAW,GACpB,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAerC,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAKjF,eAAe,CAAC,GAAG,EAAE,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC;CAIjF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/http.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/http.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AA+BnE,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAG5E,CAAC"}
|