Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
6a70bf0
test:added patches for debugging pex lib abandon issue
pallavighule Jun 3, 2024
1b51e0c
fix:added pex lib patch
pallavighule Jun 5, 2024
c93f2cc
test:added patch for abandon issue
pallavighule Jun 5, 2024
7adb0fa
debugging pex library for verification issue
ankita-p17 Jun 6, 2024
81d9b4d
log presentation and request in credo-ts
ankita-p17 Jun 7, 2024
1154398
dev cicd workflow file implemented with taskdef script
Sheetal-ayanworks Jun 7, 2024
5b15217
debug logs in pex library
ankita-p17 Jun 8, 2024
ed0a52f
Merge branch 'test/pex-abandon-issue' of https://github.com/Bhutan-ND…
ankita-p17 Jun 8, 2024
c605074
commenting validationPresentation to avoid abandoned issue
ankita-p17 Jun 8, 2024
2a6140b
Merge pull request #1 from Bhutan-NDI/test/pex-abandon-issue
ankita-p17 Jun 11, 2024
569b8b9
Update cliAgent.ts
ankita-p17 Jun 11, 2024
2480837
Upgrade package-@ayanworks/credo-polygon-w3c-moduleversion in package…
ankita-p17 Jun 12, 2024
9da502e
update testnet smart contract address
ankita-p17 Jun 13, 2024
d96b7d3
fix: added error handling for w3c schema
sagarkhole4 Jun 26, 2024
555d24a
Merge pull request #2 from Bhutan-NDI/schema-error-handling
Sheetal-ayanworks Jun 26, 2024
94ce734
configuration changes
Sheetal-ayanworks Jul 11, 2024
201ed32
Add feature for basic-message in MultiTenant Module
sagarkhole4 Jul 11, 2024
9e84017
Add feature for basic-message in MultiTenant Module
sagarkhole4 Jul 11, 2024
ffdcf22
Merge pull request #4 from Bhutan-NDI/main
ankita-p17 Jul 11, 2024
9d91a91
configfile change
Sheetal-ayanworks Jul 11, 2024
17f2d5f
configfile change
Sheetal-ayanworks Jul 11, 2024
0c6c5d7
agent config file changes
Sheetal-ayanworks Jul 11, 2024
4899631
patch: debug stuck issue
ankita-p17 Jul 11, 2024
c1a20b8
debug stuck messages
ankita-p17 Jul 11, 2024
fb57e5e
samples/cliConfig.json changes for prod
Sheetal-ayanworks Jul 15, 2024
b132d86
cache tenantRecord while creating agent context
ankita-p17 Jul 15, 2024
cf13673
cache tenantRecord while creating agent context
ankita-p17 Jul 15, 2024
7293527
change log level to error
ankita-p17 Jul 15, 2024
0574734
Added reuse connection event
yogeshayanworks Jul 22, 2024
e847989
Merge pull request #6 from Bhutan-NDI/reuse-connection
ankita-p17 Jul 22, 2024
abfacac
Cached tenant record and updated sessionAcquireTimeout
sagarkhole4 Jul 26, 2024
f4bb7be
Cached tenant record
sagarkhole4 Jul 26, 2024
038da8e
Added connection details at top level for reuse connection
yogeshayanworks Aug 1, 2024
daef66f
Updated file server access token
sagarkhole4 Aug 8, 2024
4879114
fix:Reduced ideal connection timeout
sagarkhole4 Oct 1, 2024
46712d2
resolved merge conflict
ankita-p17 Oct 14, 2024
d29a056
avoid abandoned issue
ankita-p17 Oct 14, 2024
65a7f48
debug: added logs for debugging prod issue
RinkalBhojani Oct 15, 2024
62b6c9b
debug: added logs for debugging prod issue- part2
RinkalBhojani Oct 15, 2024
beadac6
correcting patches as per pipeline-implementation branch
ankita-p17 Oct 15, 2024
54acb93
debug: removed logs
RinkalBhojani Oct 15, 2024
5c933a6
Merge branch 'main-patch' of https://github.com/Bhutan-NDI/ngotag-age…
RinkalBhojani Oct 15, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ WORKDIR /app

# Copy package.json and yarn.lock files
COPY package.json yarn.lock ./

#RUN yarn
# Install dependencies
RUN yarn install --frozen-lockfile

Expand Down
4 changes: 4 additions & 0 deletions config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"port": 4001,
"schemaFileServerURL": "https://schema.credebl.id/schemas/"
}
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
"validate": "yarn lint && yarn check-types && yarn check-format"
},
"dependencies": {
"@ayanworks/credo-polygon-w3c-module": "0.0.2-alpha.10",
"@ayanworks/credo-polygon-w3c-module": "1.0.0",
"@credo-ts/anoncreds": "0.5.3",
"@credo-ts/askar": "0.5.3",
"@credo-ts/core": "0.5.3",
Expand Down Expand Up @@ -100,6 +100,6 @@
"typescript": "^5.3.3"
},
"engines": {
"node": ">=18"
"node": "18.19.0"
}
}
55 changes: 55 additions & 0 deletions patches/@credo-ts+core+0.5.3+001+debug-core-abandon-issue.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
diff --git a/node_modules/@credo-ts/core/build/modules/dif-presentation-exchange/DifPresentationExchangeService.js b/node_modules/@credo-ts/core/build/modules/dif-presentation-exchange/DifPresentationExchangeService.js
index 80acfe9..a92f41a 100644
--- a/node_modules/@credo-ts/core/build/modules/dif-presentation-exchange/DifPresentationExchangeService.js
+++ b/node_modules/@credo-ts/core/build/modules/dif-presentation-exchange/DifPresentationExchangeService.js
@@ -69,11 +69,14 @@ let DifPresentationExchangeService = class DifPresentationExchangeService {
}
}
validatePresentation(presentationDefinition, presentation) {
+ console.log("inside validate presentaion DifPresentationExchangeService.js:: presentationDefinition " , presentationDefinition)
+ console.log("inside validate presentaion DifPresentationExchangeService.js:: presentation " , presentation)
const { errors } = this.pex.evaluatePresentation(presentationDefinition, (0, utils_2.getSphereonOriginalVerifiablePresentation)(presentation), {
limitDisclosureSignatureSuites: ['BbsBlsSignatureProof2020', 'DataIntegrityProof.anoncreds-2023'],
});
if (errors) {
const errorMessages = this.formatValidated(errors);
+ console.log("inside validatePresentation DifPresentationExchangeService.js errors ::" ,errorMessages )
if (errorMessages.length > 0) {
throw new DifPresentationExchangeError_1.DifPresentationExchangeError(`Invalid presentation`, { additionalMessages: errorMessages });
}
diff --git a/node_modules/@credo-ts/core/build/modules/proofs/formats/dif-presentation-exchange/DifPresentationExchangeProofFormatService.js b/node_modules/@credo-ts/core/build/modules/proofs/formats/dif-presentation-exchange/DifPresentationExchangeProofFormatService.js
index 006d870..0b086e5 100644
--- a/node_modules/@credo-ts/core/build/modules/proofs/formats/dif-presentation-exchange/DifPresentationExchangeProofFormatService.js
+++ b/node_modules/@credo-ts/core/build/modules/proofs/formats/dif-presentation-exchange/DifPresentationExchangeProofFormatService.js
@@ -170,6 +170,7 @@ class DifPresentationExchangeProofFormatService {
try {
ps.validatePresentationDefinition(request.presentation_definition);
ps.validatePresentationSubmission(jsonPresentation.presentation_submission);
+ console.log("inside processPresentation of DifPresentationExchangeProofFormatService.js :: request.presentation_definition" , request.presentation_definition )
ps.validatePresentation(request.presentation_definition, parsedPresentation);
let verificationResult;
// FIXME: for some reason it won't accept the input if it doesn't know
diff --git a/node_modules/@credo-ts/core/build/modules/proofs/protocol/v2/ProofFormatCoordinator.js b/node_modules/@credo-ts/core/build/modules/proofs/protocol/v2/ProofFormatCoordinator.js
index 83277c5..c749043 100644
--- a/node_modules/@credo-ts/core/build/modules/proofs/protocol/v2/ProofFormatCoordinator.js
+++ b/node_modules/@credo-ts/core/build/modules/proofs/protocol/v2/ProofFormatCoordinator.js
@@ -263,6 +263,7 @@ class ProofFormatCoordinator {
formatVerificationResults.push(isValid);
}
catch (error) {
+ console.log("inside processPresentation catch block of ProofFormatCoordinator.js :: error" ,error)
return {
message: error.message,
isValid: false,
diff --git a/node_modules/@credo-ts/core/build/modules/proofs/protocol/v2/V2ProofProtocol.js b/node_modules/@credo-ts/core/build/modules/proofs/protocol/v2/V2ProofProtocol.js
index 382c097..e147559 100644
--- a/node_modules/@credo-ts/core/build/modules/proofs/protocol/v2/V2ProofProtocol.js
+++ b/node_modules/@credo-ts/core/build/modules/proofs/protocol/v2/V2ProofProtocol.js
@@ -513,6 +513,7 @@ class V2ProofProtocol extends BaseProofProtocol_1.BaseProofProtocol {
message: presentationMessage,
});
proofRecord.isVerified = result.isValid;
+ console.log("inside V2ProofProtocol.js result::" , result)
if (result.isValid) {
await this.updateState(messageContext.agentContext, proofRecord, models_2.ProofState.PresentationReceived);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
diff --git a/node_modules/@credo-ts/core/build/modules/proofs/formats/dif-presentation-exchange/DifPresentationExchangeProofFormatService.js b/node_modules/@credo-ts/core/build/modules/proofs/formats/dif-presentation-exchange/DifPresentationExchangeProofFormatService.js
index 0b086e5..69000f6 100644
--- a/node_modules/@credo-ts/core/build/modules/proofs/formats/dif-presentation-exchange/DifPresentationExchangeProofFormatService.js
+++ b/node_modules/@credo-ts/core/build/modules/proofs/formats/dif-presentation-exchange/DifPresentationExchangeProofFormatService.js
@@ -170,7 +170,8 @@ class DifPresentationExchangeProofFormatService {
try {
ps.validatePresentationDefinition(request.presentation_definition);
ps.validatePresentationSubmission(jsonPresentation.presentation_submission);
- console.log("inside processPresentation of DifPresentationExchangeProofFormatService.js :: request.presentation_definition" , request.presentation_definition )
+ console.log("inside processPresentation of DifPresentationExchangeProofFormatService.js :: request", JSON.stringify(request, null, 2))
+ console.log("inside processPresentation of DifPresentationExchangeProofFormatService.js :: jsonPresentation", JSON.stringify(jsonPresentation, null, 2))
ps.validatePresentation(request.presentation_definition, parsedPresentation);
let verificationResult;
// FIXME: for some reason it won't accept the input if it doesn't know
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
diff --git a/node_modules/@credo-ts/core/build/modules/dif-presentation-exchange/DifPresentationExchangeService.js b/node_modules/@credo-ts/core/build/modules/dif-presentation-exchange/DifPresentationExchangeService.js
index a92f41a..9fee65c 100644
--- a/node_modules/@credo-ts/core/build/modules/dif-presentation-exchange/DifPresentationExchangeService.js
+++ b/node_modules/@credo-ts/core/build/modules/dif-presentation-exchange/DifPresentationExchangeService.js
@@ -69,8 +69,6 @@ let DifPresentationExchangeService = class DifPresentationExchangeService {
}
}
validatePresentation(presentationDefinition, presentation) {
- console.log("inside validate presentaion DifPresentationExchangeService.js:: presentationDefinition " , presentationDefinition)
- console.log("inside validate presentaion DifPresentationExchangeService.js:: presentation " , presentation)
const { errors } = this.pex.evaluatePresentation(presentationDefinition, (0, utils_2.getSphereonOriginalVerifiablePresentation)(presentation), {
limitDisclosureSignatureSuites: ['BbsBlsSignatureProof2020', 'DataIntegrityProof.anoncreds-2023'],
});
diff --git a/node_modules/@credo-ts/core/build/modules/proofs/formats/dif-presentation-exchange/DifPresentationExchangeProofFormatService.js b/node_modules/@credo-ts/core/build/modules/proofs/formats/dif-presentation-exchange/DifPresentationExchangeProofFormatService.js
index 69000f6..501bd61 100644
--- a/node_modules/@credo-ts/core/build/modules/proofs/formats/dif-presentation-exchange/DifPresentationExchangeProofFormatService.js
+++ b/node_modules/@credo-ts/core/build/modules/proofs/formats/dif-presentation-exchange/DifPresentationExchangeProofFormatService.js
@@ -170,9 +170,8 @@ class DifPresentationExchangeProofFormatService {
try {
ps.validatePresentationDefinition(request.presentation_definition);
ps.validatePresentationSubmission(jsonPresentation.presentation_submission);
- console.log("inside processPresentation of DifPresentationExchangeProofFormatService.js :: request", JSON.stringify(request, null, 2))
- console.log("inside processPresentation of DifPresentationExchangeProofFormatService.js :: jsonPresentation", JSON.stringify(jsonPresentation, null, 2))
- ps.validatePresentation(request.presentation_definition, parsedPresentation);
+ // FIXME: Commenting validatePresentation() for now due to intermittent abandoned issue.
+ // ps.validatePresentation(request.presentation_definition, parsedPresentation);
let verificationResult;
// FIXME: for some reason it won't accept the input if it doesn't know
// whether it's a JWT or JSON-LD VP even though the input is the same.
72 changes: 72 additions & 0 deletions patches/@credo-ts+tenants+0.5.3+001+cache tenantRecord.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
diff --git a/node_modules/@credo-ts/tenants/build/context/TenantAgentContextProvider.d.ts b/node_modules/@credo-ts/tenants/build/context/TenantAgentContextProvider.d.ts
index 91bb8f4..901213f 100644
--- a/node_modules/@credo-ts/tenants/build/context/TenantAgentContextProvider.d.ts
+++ b/node_modules/@credo-ts/tenants/build/context/TenantAgentContextProvider.d.ts
@@ -1,5 +1,5 @@
import type { TenantRecord } from '../repository';
-import type { AgentContextProvider, UpdateAssistantUpdateOptions } from '@credo-ts/core';
+import type { AgentContextProvider, UpdateAssistantUpdateOptions, CacheModule, InMemoryLruCache } from '@credo-ts/core';
import { AgentContext, EventEmitter, Logger } from '@credo-ts/core';
import { TenantRecordService } from '../services';
import { TenantSessionCoordinator } from './TenantSessionCoordinator';
@@ -9,7 +9,9 @@ export declare class TenantAgentContextProvider implements AgentContextProvider
private eventEmitter;
private logger;
private tenantSessionCoordinator;
- constructor(tenantRecordService: TenantRecordService, rootAgentContext: AgentContext, eventEmitter: EventEmitter, tenantSessionCoordinator: TenantSessionCoordinator, logger: Logger);
+ private cacheModule;
+ private inMemoryLruCache;
+ constructor(tenantRecordService: TenantRecordService, rootAgentContext: AgentContext, eventEmitter: EventEmitter, tenantSessionCoordinator: TenantSessionCoordinator, logger: Logger, cache: InMemoryLruCache);
getAgentContextForContextCorrelationId(contextCorrelationId: string): Promise<AgentContext>;
getContextForInboundMessage(inboundMessage: unknown, options?: {
contextCorrelationId?: string;
diff --git a/node_modules/@credo-ts/tenants/build/context/TenantAgentContextProvider.js b/node_modules/@credo-ts/tenants/build/context/TenantAgentContextProvider.js
index d491d4e..0b22e23 100644
--- a/node_modules/@credo-ts/tenants/build/context/TenantAgentContextProvider.js
+++ b/node_modules/@credo-ts/tenants/build/context/TenantAgentContextProvider.js
@@ -24,16 +24,29 @@ let TenantAgentContextProvider = class TenantAgentContextProvider {
this.eventEmitter = eventEmitter;
this.tenantSessionCoordinator = tenantSessionCoordinator;
this.logger = logger;
+ this.cache = new core_1.CacheModule({
+ cache: new core_1.InMemoryLruCache({ limit: 100 }),
+ });
// Start listener for newly created routing keys, so we can register a mapping for each new key for the tenant
this.listenForRoutingKeyCreatedEvents();
}
async getAgentContextForContextCorrelationId(contextCorrelationId) {
+ this.logger.debug('debug ========= Inside getAgentContextForContextCorrelationId')
// It could be that the root agent context is requested, in that case we return the root agent context
if (contextCorrelationId === this.rootAgentContext.contextCorrelationId) {
return this.rootAgentContext;
}
// TODO: maybe we can look at not having to retrieve the tenant record if there's already a context available.
- const tenantRecord = await this.tenantRecordService.getTenantById(this.rootAgentContext, contextCorrelationId);
+ this.logger.debug('debug ========= Get tenantRecord from cache')
+ let tenantRecord = await this.cache.config.cache.get(this.rootAgentContext, `contextCorrelationId-${contextCorrelationId}`)
+ if(!tenantRecord) {
+ // TODO: maybe we can look at not having to retrieve the tenant record if there's already a context available.
+ this.logger.debug('debug ========= TenantRecord not found in cache')
+ tenantRecord = await this.tenantRecordService.getTenantById(this.rootAgentContext, contextCorrelationId)
+ await this.cache.config.cache.set(this.rootAgentContext,`contextCorrelationId-${contextCorrelationId}`,tenantRecord)
+ this.logger.debug(`debug ========= Cached tenant agent context for tenant '${contextCorrelationId}'`)
+ }
+
const shouldUpdate = !(0, core_1.isStorageUpToDate)(tenantRecord.storageVersion);
// If the tenant storage is not up to date, and autoUpdate is disabled we throw an error
if (shouldUpdate && !this.rootAgentContext.config.autoUpdateStorageOnStartup) {
@@ -42,9 +55,12 @@ let TenantAgentContextProvider = class TenantAgentContextProvider {
`Make sure to update the tenant storage (currently at ${tenantRecord.storageVersion}) to the latest version (${core_1.UpdateAssistant.frameworkStorageVersion}). ` +
`You can also downgrade your version of Credo.`);
}
- const agentContext = await this.tenantSessionCoordinator.getContextForSession(tenantRecord, {
+
+
+ const agentContext = await this.tenantSessionCoordinator.getContextForSession(tenantRecord, {
runInMutex: shouldUpdate ? (agentContext) => this._updateTenantStorage(tenantRecord, agentContext) : undefined,
- });
+ })
+
this.logger.debug(`Created tenant agent context for tenant '${contextCorrelationId}'`);
return agentContext;
}
42 changes: 42 additions & 0 deletions patches/@sphereon+pex+3.3.3+001+proof-abandon-pex-patch.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
diff --git a/node_modules/@sphereon/pex/dist/main/lib/evaluation/handlers/uriEvaluationHandler.js b/node_modules/@sphereon/pex/dist/main/lib/evaluation/handlers/uriEvaluationHandler.js
index 728096f..b035d3c 100644
--- a/node_modules/@sphereon/pex/dist/main/lib/evaluation/handlers/uriEvaluationHandler.js
+++ b/node_modules/@sphereon/pex/dist/main/lib/evaluation/handlers/uriEvaluationHandler.js
@@ -19,6 +19,8 @@ class UriEvaluationHandler extends abstractEvaluationHandler_1.AbstractEvaluatio
return 'UriEvaluation';
}
handle(definition, wrappedVcs) {
+ console.log("definition::" ,JSON.stringify(definition,null,2))
+ console.log("wrappedVcs" , JSON.stringify(wrappedVcs,null,2))
var _a, _b, _c;
// This filter is removed in V2
definition.input_descriptors.forEach((inDesc, descriptorIdx) => {
@@ -32,6 +34,7 @@ class UriEvaluationHandler extends abstractEvaluationHandler_1.AbstractEvaluatio
const descriptorMap = this.getResults()
.filter((result) => result.status === ConstraintUtils_1.Status.INFO)
.map((result) => {
+ console.log(" inside handle function of uriEvaluationHandler.js :: result,", result)
var _a, _b, _c, _d;
let format = (_a = result.payload) === null || _a === void 0 ? void 0 : _a.format;
// This checks if the new data integrity format should be used.
@@ -56,13 +59,20 @@ class UriEvaluationHandler extends abstractEvaluationHandler_1.AbstractEvaluatio
format = 'di_vc';
}
}
+
+ console.log("jsonpath_1.JSONPath.nodes(definition, result.input_descriptor_path)[0]::", JSON.stringify(jsonpath_1.JSONPath.nodes(definition, result.input_descriptor_path)[0],null,2))
+ console.log("jsonpath_1.JSONPath.nodes(definition, result.input_descriptor_path)[0].value::", JSON.stringify(jsonpath_1.JSONPath.nodes(definition, result.input_descriptor_path)[0].value,null,2))
+
const inputDescriptor = jsonpath_1.JSONPath.nodes(definition, result.input_descriptor_path)[0].value;
+
+
return {
id: inputDescriptor.id,
format,
path: result.verifiable_credential_path,
};
});
+
// The presentation submission is being created in this handler, then updated in subsequent handler.
// TODO: This approach needs to be refactored for a new Major version.
// Also there is no apparent need for the indirection and state in this class.
34 changes: 34 additions & 0 deletions patches/@sphereon+pex+3.3.3+002+pex library debugging.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
diff --git a/node_modules/@sphereon/pex/dist/main/lib/evaluation/handlers/uriEvaluationHandler.js b/node_modules/@sphereon/pex/dist/main/lib/evaluation/handlers/uriEvaluationHandler.js
index b035d3c..185ccef 100644
--- a/node_modules/@sphereon/pex/dist/main/lib/evaluation/handlers/uriEvaluationHandler.js
+++ b/node_modules/@sphereon/pex/dist/main/lib/evaluation/handlers/uriEvaluationHandler.js
@@ -31,10 +31,12 @@ class UriEvaluationHandler extends abstractEvaluationHandler_1.AbstractEvaluatio
});
});
const definitionAllowsDataIntegrity = ((_a = definition.format) === null || _a === void 0 ? void 0 : _a.di) || ((_b = definition.format) === null || _b === void 0 ? void 0 : _b.di_vc) || ((_c = definition.format) === null || _c === void 0 ? void 0 : _c.di_vp);
- const descriptorMap = this.getResults()
- .filter((result) => result.status === ConstraintUtils_1.Status.INFO)
+ const results = this.getResults();
+ console.log("results from getResults() :::", JSON.stringify(results, null, 2));
+
+ const descriptorMap = results.filter((result) => result.status === ConstraintUtils_1.Status.INFO)
.map((result) => {
- console.log(" inside handle function of uriEvaluationHandler.js :: result,", result)
+ console.log("inside handle function of uriEvaluationHandler.js :: result,", JSON.stringify(result, null, 2));
var _a, _b, _c, _d;
let format = (_a = result.payload) === null || _a === void 0 ? void 0 : _a.format;
// This checks if the new data integrity format should be used.
@@ -60,12 +62,9 @@ class UriEvaluationHandler extends abstractEvaluationHandler_1.AbstractEvaluatio
}
}

- console.log("jsonpath_1.JSONPath.nodes(definition, result.input_descriptor_path)[0]::", JSON.stringify(jsonpath_1.JSONPath.nodes(definition, result.input_descriptor_path)[0],null,2))
- console.log("jsonpath_1.JSONPath.nodes(definition, result.input_descriptor_path)[0].value::", JSON.stringify(jsonpath_1.JSONPath.nodes(definition, result.input_descriptor_path)[0].value,null,2))
-
+ console.log("searching input_descriptor_path in definition :: jsonpath_1.JSONPath.nodes(definition, result.input_descriptor_path)::", JSON.stringify(result.input_descriptor_path,null,2))
const inputDescriptor = jsonpath_1.JSONPath.nodes(definition, result.input_descriptor_path)[0].value;

-
return {
id: inputDescriptor.id,
format,
Loading