@dhis2/app-runtime
Advanced tools
Comparing version
@@ -285,4 +285,75 @@ 'use strict'; | ||
const baseUrl = 'https://example.com'; | ||
const apiVersion = 42; | ||
const resolveCustomResource = async (customResource, query, { | ||
failOnMiss | ||
}) => { | ||
switch (typeof customResource) { | ||
case 'string': | ||
case 'number': | ||
case 'boolean': | ||
case 'object': | ||
return customResource; | ||
case 'function': | ||
// function | ||
const result = await customResource(query); | ||
if (!result && failOnMiss) { | ||
throw new Error(`The custom function for resource ${query.resource} must always return a value but returned ${result}`); | ||
} | ||
return result || {}; | ||
default: | ||
// should be unreachable | ||
throw new Error(`Unknown resource type ${typeof customResource}`); | ||
} | ||
}; | ||
const makeCustomContext = (customData, { | ||
failOnMiss = true | ||
} = {}) => { | ||
const apiUrl = joinPath(baseUrl, 'api', String(apiVersion)); | ||
const customFetch = async query => { | ||
const customResource = customData[query.resource]; | ||
if (!customResource) { | ||
if (failOnMiss) { | ||
throw new Error(`No data provided for resource type ${query.resource}!`); | ||
} | ||
return Promise.resolve({}); | ||
} | ||
return await resolveCustomResource(customResource, query, { | ||
failOnMiss | ||
}); | ||
}; | ||
const context = { | ||
baseUrl, | ||
apiVersion, | ||
apiUrl, | ||
fetch: customFetch | ||
}; | ||
return context; | ||
}; | ||
const CustomProvider = ({ | ||
children, | ||
data, | ||
options | ||
}) => { | ||
const context = makeCustomContext(data, options); | ||
return React__default.createElement(Context.Provider, { | ||
value: context | ||
}, children); | ||
}; | ||
exports.CustomDataProvider = CustomProvider; | ||
exports.DataProvider = Provider; | ||
exports.DataQuery = Query; | ||
exports.useDataQuery = useQuery; |
@@ -278,2 +278,72 @@ import React, { useContext, useState, useEffect } from 'react'; | ||
export { Provider as DataProvider, Query as DataQuery, useQuery as useDataQuery }; | ||
const baseUrl = 'https://example.com'; | ||
const apiVersion = 42; | ||
const resolveCustomResource = async (customResource, query, { | ||
failOnMiss | ||
}) => { | ||
switch (typeof customResource) { | ||
case 'string': | ||
case 'number': | ||
case 'boolean': | ||
case 'object': | ||
return customResource; | ||
case 'function': | ||
// function | ||
const result = await customResource(query); | ||
if (!result && failOnMiss) { | ||
throw new Error(`The custom function for resource ${query.resource} must always return a value but returned ${result}`); | ||
} | ||
return result || {}; | ||
default: | ||
// should be unreachable | ||
throw new Error(`Unknown resource type ${typeof customResource}`); | ||
} | ||
}; | ||
const makeCustomContext = (customData, { | ||
failOnMiss = true | ||
} = {}) => { | ||
const apiUrl = joinPath(baseUrl, 'api', String(apiVersion)); | ||
const customFetch = async query => { | ||
const customResource = customData[query.resource]; | ||
if (!customResource) { | ||
if (failOnMiss) { | ||
throw new Error(`No data provided for resource type ${query.resource}!`); | ||
} | ||
return Promise.resolve({}); | ||
} | ||
return await resolveCustomResource(customResource, query, { | ||
failOnMiss | ||
}); | ||
}; | ||
const context = { | ||
baseUrl, | ||
apiVersion, | ||
apiUrl, | ||
fetch: customFetch | ||
}; | ||
return context; | ||
}; | ||
const CustomProvider = ({ | ||
children, | ||
data, | ||
options | ||
}) => { | ||
const context = makeCustomContext(data, options); | ||
return React.createElement(Context.Provider, { | ||
value: context | ||
}, children); | ||
}; | ||
export { CustomProvider as CustomDataProvider, Provider as DataProvider, Query as DataQuery, useQuery as useDataQuery }; |
{ | ||
"name": "@dhis2/app-runtime", | ||
"description": "A singular runtime dependency for applications on the DHIS2 platform", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"main": "build/cjs/index.js", | ||
@@ -20,3 +20,3 @@ "module": "build/es/index.js", | ||
"@babel/preset-env": "^7.4.3", | ||
"@dhis2/app-service-data": "^1.0.0", | ||
"@dhis2/app-service-data": "^1.1.0", | ||
"loop": "^3.1.3", | ||
@@ -23,0 +23,0 @@ "rollup": "^1.9.0", |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
18439
20.62%583
24.57%2
-33.33%