anchor.diff:                 let path = names |> String.concat "."
                  addTypes t obtainDef [DeclareModule(path, declarations)]
               next()
  -            
  -
  -   let generateFrom (typeScriptFile:string) (root:ProvidedTypeDefinition) =
  +
  +              
  +   /// Open a file from file system or from the web in a type provider context
  +   /// (File may be relative to the type provider resolution folder and web
  +   /// resources must start with 'http://' prefix)
  +   let openFileOrUri resolutionFolder (fileName:string) =
  +      if fileName.StartsWith("http://", StringComparison.InvariantCultureIgnoreCase) then
  +         let req = System.Net.WebRequest.Create(Uri(fileName))
  +         let resp = req.GetResponse() 
  +         new StreamReader(resp.GetResponseStream())
  +      else
  +         // If the second path is absolute, Path.Combine returns it without change
  +         let file = Path.Combine(resolutionFolder, fileName)
  +         new StreamReader(file)
  +       
  +
  +   let generateFrom (resolutionFolder:string) (typeScriptFile:string) (root:ProvidedTypeDefinition) =
         let created = Dictionary()
         let count = ref 0
   
  
positive.code: 
     let apiType = 
        ProvidedTypeDefinition(thisAssembly, rootNamespace, "Api", None)
         
     do apiType.IsErased <- false
     do apiType.DefineStaticParameters(
           parameters = staticParams,
  
negative.code:             parentT.AddMember t
              t
        
        use reader = openFileOrUri resolutionFolder typeScriptFile
        let types = Parser.parse reader
        reader.Close()             
        addTypes root obtainTypeDef types
        
  [<TypeProvider>]
  type TypeScriptProvider(cfg:TypeProviderConfig) as this =
     inherit TypeProviderForNamespaces()
  
     let thisAssembly = Assembly.GetExecutingAssembly()
  