@prefix js: <https://w3id.org/conn/js#> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix fnom: <https://w3id.org/function/vocabulary/mapping#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix : <https://w3id.org/conn#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix dc: <http://purl.org/dc/terms/> .

js:HttpFetch a js:JsProcess;
    js:file <./lib/index.js>;
    js:function "httpFetch";
    js:location <./>;
    js:mapping [
        a fno:Mapping;
        fno:parameterMapping [
            a fnom:PositionParameterMapping ;
            fnom:functionParameter "url";
            fnom:implementationParameterPosition "0"^^xsd:integer
        ], [
           a fnom:PositionParameterMapping ;
           fnom:functionParameter "writer";
           fnom:implementationParameterPosition "1"^^xsd:integer
        ], [
            a fnom:PositionParameterMapping ;
            fnom:functionParameter "options";
            fnom:implementationParameterPosition "2"^^xsd:integer
        ]
    ].

[] a sh:NodeShape;
    sh:targetClass js:HttpFetchAuth;
    sh:property [
        sh:path js:type;
        sh:name "type";
        sh:datatype xsd:string;
        sh:minCount 1;
        sh:maxCount 1
    ].

[] a sh:NodeShape;
    sh:targetClass js:HttpFetchOptions;
    sh:property [
        sh:path js:method;
        sh:name "method";
        sh:datatype xsd:string;
        sh:maxCount 1
    ], [
        sh:path js:headers;
        sh:name "headers";
        sh:datatype xsd:string
    ], [
        sh:path js:acceptStatusCodes;
        sh:name "acceptStatusCodes";
        sh:datatype xsd:string
    ], [
        sh:path js:closeOnEnd;
        sh:name "closeOnEnd";
        sh:datatype xsd:boolean;
        sh:maxCount 1
    ], [
        sh:path js:timeOutMilliseconds;
        sh:name "timeOutMilliseconds";
        sh:datatype xsd:integer;
        sh:maxCount 1
    ], [
       sh:path js:HttpFetchAuth;
       sh:class js:HttpFetchAuth;
       sh:name "auth";
       sh:maxCount 1
    ], [
       sh:path js:cron;
       sh:name "cron";
       sh:datatype xsd:string;
       sh:maxCount 1
    ], [
        sh:path js:runOnInit;
        sh:name "runOnInit";
        sh:datatype xsd:boolean;
        sh:maxCount 1
    ], [
       sh:path js:errorsAreFatal;
       sh:name "errorsAreFatal";
       sh:class xsd:boolean;
       sh:maxCount 1;
       sh:minCount 0;
    ], [
        sh:path js:outputAsBuffer;
        sh:name "outputAsBuffer";
        sh:datatype xsd:boolean;
        sh:maxCount 1;
        sh:minCount 0
    ].

[] a sh:NodeShape;
    sh:targetClass js:HttpFetch;
    sh:property [
        sh:path js:url;
        sh:name "url";
        sh:datatype xsd:string;
        sh:minCount 1
    ], [
        sh:path js:writer;
        sh:name "writer";
        sh:class :WriterChannel;
        sh:maxCount 1;
        sh:minCount 1
    ], [
        sh:path js:options;
        sh:name "options";
        sh:class js:HttpFetchOptions;
        sh:maxCount 1
    ].
