@azure/iot-modelsrepository 1.0.0-alpha.20241120.1 → 1.0.0-alpha.20241125.1
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/README.md +1 -1
- package/dist/browser/dependencyResolutionType.d.ts +9 -0
- package/dist/browser/dependencyResolutionType.d.ts.map +1 -0
- package/dist/browser/dtmiConventions.d.ts +25 -0
- package/dist/browser/dtmiConventions.d.ts.map +1 -0
- package/dist/browser/dtmiResolver.d.ts +20 -0
- package/dist/browser/dtmiResolver.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/dtmiResolver.js +3 -3
- package/dist/browser/dtmiResolver.js.map +1 -0
- package/dist/browser/exceptions.d.ts +7 -0
- package/dist/browser/exceptions.d.ts.map +1 -0
- package/dist/browser/fetcherAbstract.d.ts +11 -0
- package/dist/browser/fetcherAbstract.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/fetcherAbstract.js.map +1 -1
- package/dist/browser/fetcherFilesystem-browser.d.mts.map +1 -0
- package/dist/browser/fetcherFilesystem-browser.mjs.map +1 -0
- package/dist/browser/fetcherFilesystem.d.ts +4 -0
- package/{dist-esm/src/utils/fetcherFilesystem.browser.js → dist/browser/fetcherFilesystem.js} +1 -1
- package/dist/browser/fetcherHTTP.d.ts +16 -0
- package/dist/browser/fetcherHTTP.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/fetcherHTTP.js +2 -1
- package/dist/browser/fetcherHTTP.js.map +1 -0
- package/dist/browser/index.d.ts +41 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/index.js +3 -3
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/interfaces/getModelsOptions.d.ts +14 -0
- package/dist/browser/interfaces/getModelsOptions.d.ts.map +1 -0
- package/dist/browser/interfaces/getModelsOptions.js.map +1 -0
- package/dist/browser/interfaces/modelsRepositoryClientOptions.d.ts +25 -0
- package/dist/browser/interfaces/modelsRepositoryClientOptions.d.ts.map +1 -0
- package/dist/browser/interfaces/modelsRepositoryClientOptions.js.map +1 -0
- package/dist/browser/logger.d.ts +6 -0
- package/dist/browser/logger.d.ts.map +1 -0
- package/dist/browser/modelsRepositoryClient.d.ts +68 -0
- package/dist/browser/modelsRepositoryClient.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/modelsRepositoryClient.js +8 -8
- package/dist/browser/modelsRepositoryClient.js.map +1 -0
- package/dist/browser/modelsRepositoryServiceClient.d.ts +22 -0
- package/dist/browser/modelsRepositoryServiceClient.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/modelsRepositoryServiceClient.js +1 -1
- package/dist/browser/modelsRepositoryServiceClient.js.map +1 -0
- package/dist/browser/package.json +3 -0
- package/dist/browser/psuedoDtdl.d.ts +16 -0
- package/dist/browser/psuedoDtdl.d.ts.map +1 -0
- package/dist/browser/psuedoParser.d.ts +23 -0
- package/dist/browser/psuedoParser.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/psuedoParser.js +2 -1
- package/dist/browser/psuedoParser.js.map +1 -0
- package/dist/browser/utils/constants.d.ts +8 -0
- package/dist/browser/utils/constants.d.ts.map +1 -0
- package/dist/browser/utils/path-browser.d.mts.map +1 -0
- package/dist/browser/utils/path-browser.mjs.map +1 -0
- package/dist/browser/utils/path.d.ts +3 -0
- package/{dist-esm/src/utils/path.browser.js → dist/browser/utils/path.js} +1 -1
- package/dist/commonjs/dependencyResolutionType.d.ts +9 -0
- package/dist/commonjs/dependencyResolutionType.d.ts.map +1 -0
- package/dist/commonjs/dependencyResolutionType.js +5 -0
- package/dist/commonjs/dependencyResolutionType.js.map +1 -0
- package/dist/commonjs/dtmiConventions.d.ts +25 -0
- package/dist/commonjs/dtmiConventions.d.ts.map +1 -0
- package/dist/commonjs/dtmiConventions.js +57 -0
- package/dist/commonjs/dtmiConventions.js.map +1 -0
- package/dist/commonjs/dtmiResolver.d.ts +20 -0
- package/dist/commonjs/dtmiResolver.d.ts.map +1 -0
- package/dist/commonjs/dtmiResolver.js +55 -0
- package/dist/commonjs/dtmiResolver.js.map +1 -0
- package/dist/commonjs/exceptions.d.ts +7 -0
- package/dist/commonjs/exceptions.d.ts.map +1 -0
- package/dist/commonjs/exceptions.js +16 -0
- package/dist/commonjs/exceptions.js.map +1 -0
- package/dist/commonjs/fetcherAbstract.d.ts +11 -0
- package/dist/commonjs/fetcherAbstract.d.ts.map +1 -0
- package/dist/commonjs/fetcherAbstract.js +5 -0
- package/dist/commonjs/fetcherAbstract.js.map +1 -0
- package/dist/commonjs/fetcherFilesystem.d.ts +14 -0
- package/dist/commonjs/fetcherFilesystem.d.ts.map +1 -0
- package/dist/commonjs/fetcherFilesystem.js +56 -0
- package/dist/commonjs/fetcherFilesystem.js.map +1 -0
- package/dist/commonjs/fetcherHTTP.d.ts +16 -0
- package/dist/commonjs/fetcherHTTP.d.ts.map +1 -0
- package/dist/commonjs/fetcherHTTP.js +56 -0
- package/dist/commonjs/fetcherHTTP.js.map +1 -0
- package/dist/commonjs/index.d.ts +41 -0
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/commonjs/index.js +47 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/interfaces/getModelsOptions.d.ts +14 -0
- package/dist/commonjs/interfaces/getModelsOptions.d.ts.map +1 -0
- package/dist/commonjs/interfaces/getModelsOptions.js +5 -0
- package/dist/commonjs/interfaces/getModelsOptions.js.map +1 -0
- package/dist/commonjs/interfaces/modelsRepositoryClientOptions.d.ts +25 -0
- package/dist/commonjs/interfaces/modelsRepositoryClientOptions.d.ts.map +1 -0
- package/dist/commonjs/interfaces/modelsRepositoryClientOptions.js +5 -0
- package/dist/commonjs/interfaces/modelsRepositoryClientOptions.js.map +1 -0
- package/dist/commonjs/logger.d.ts +6 -0
- package/dist/commonjs/logger.d.ts.map +1 -0
- package/dist/commonjs/logger.js +12 -0
- package/dist/commonjs/logger.js.map +1 -0
- package/dist/commonjs/modelsRepositoryClient.d.ts +68 -0
- package/dist/commonjs/modelsRepositoryClient.d.ts.map +1 -0
- package/dist/commonjs/modelsRepositoryClient.js +179 -0
- package/dist/commonjs/modelsRepositoryClient.js.map +1 -0
- package/dist/commonjs/modelsRepositoryServiceClient.d.ts +22 -0
- package/dist/commonjs/modelsRepositoryServiceClient.d.ts.map +1 -0
- package/dist/commonjs/modelsRepositoryServiceClient.js +30 -0
- package/dist/commonjs/modelsRepositoryServiceClient.js.map +1 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/commonjs/psuedoDtdl.d.ts +16 -0
- package/dist/commonjs/psuedoDtdl.d.ts.map +1 -0
- package/dist/commonjs/psuedoDtdl.js +5 -0
- package/dist/commonjs/psuedoDtdl.js.map +1 -0
- package/dist/commonjs/psuedoParser.d.ts +23 -0
- package/dist/commonjs/psuedoParser.d.ts.map +1 -0
- package/dist/commonjs/psuedoParser.js +102 -0
- package/dist/commonjs/psuedoParser.js.map +1 -0
- package/dist/commonjs/tsdoc-metadata.json +11 -0
- package/dist/commonjs/utils/constants.d.ts +8 -0
- package/dist/commonjs/utils/constants.d.ts.map +1 -0
- package/dist/commonjs/utils/constants.js +15 -0
- package/dist/commonjs/utils/constants.js.map +1 -0
- package/dist/commonjs/utils/path.d.ts +4 -0
- package/dist/commonjs/utils/path.d.ts.map +1 -0
- package/dist/commonjs/utils/path.js +12 -0
- package/dist/commonjs/utils/path.js.map +1 -0
- package/dist/esm/dependencyResolutionType.d.ts +9 -0
- package/dist/esm/dependencyResolutionType.d.ts.map +1 -0
- package/dist/esm/dependencyResolutionType.js +4 -0
- package/dist/esm/dependencyResolutionType.js.map +1 -0
- package/dist/esm/dtmiConventions.d.ts +25 -0
- package/dist/esm/dtmiConventions.d.ts.map +1 -0
- package/dist/esm/dtmiConventions.js +52 -0
- package/dist/esm/dtmiConventions.js.map +1 -0
- package/dist/esm/dtmiResolver.d.ts +20 -0
- package/dist/esm/dtmiResolver.d.ts.map +1 -0
- package/dist/esm/dtmiResolver.js +51 -0
- package/dist/esm/dtmiResolver.js.map +1 -0
- package/dist/esm/exceptions.d.ts +7 -0
- package/dist/esm/exceptions.d.ts.map +1 -0
- package/dist/esm/exceptions.js +12 -0
- package/dist/esm/exceptions.js.map +1 -0
- package/dist/esm/fetcherAbstract.d.ts +11 -0
- package/dist/esm/fetcherAbstract.d.ts.map +1 -0
- package/dist/esm/fetcherAbstract.js +4 -0
- package/dist/esm/fetcherAbstract.js.map +1 -0
- package/dist/esm/fetcherFilesystem.d.ts +14 -0
- package/dist/esm/fetcherFilesystem.d.ts.map +1 -0
- package/{dist-esm/src → dist/esm}/fetcherFilesystem.js +3 -3
- package/dist/esm/fetcherFilesystem.js.map +1 -0
- package/dist/esm/fetcherHTTP.d.ts +16 -0
- package/dist/esm/fetcherHTTP.d.ts.map +1 -0
- package/dist/esm/fetcherHTTP.js +52 -0
- package/dist/esm/fetcherHTTP.js.map +1 -0
- package/dist/esm/index.d.ts +41 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +40 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces/getModelsOptions.d.ts +14 -0
- package/dist/esm/interfaces/getModelsOptions.d.ts.map +1 -0
- package/dist/esm/interfaces/getModelsOptions.js +4 -0
- package/dist/esm/interfaces/getModelsOptions.js.map +1 -0
- package/dist/esm/interfaces/modelsRepositoryClientOptions.d.ts +25 -0
- package/dist/esm/interfaces/modelsRepositoryClientOptions.d.ts.map +1 -0
- package/dist/esm/interfaces/modelsRepositoryClientOptions.js +4 -0
- package/dist/esm/interfaces/modelsRepositoryClientOptions.js.map +1 -0
- package/dist/esm/logger.d.ts +6 -0
- package/dist/esm/logger.d.ts.map +1 -0
- package/dist/esm/logger.js +9 -0
- package/dist/esm/logger.js.map +1 -0
- package/dist/esm/modelsRepositoryClient.d.ts +68 -0
- package/dist/esm/modelsRepositoryClient.d.ts.map +1 -0
- package/dist/esm/modelsRepositoryClient.js +175 -0
- package/dist/esm/modelsRepositoryClient.js.map +1 -0
- package/dist/esm/modelsRepositoryServiceClient.d.ts +22 -0
- package/dist/esm/modelsRepositoryServiceClient.d.ts.map +1 -0
- package/dist/esm/modelsRepositoryServiceClient.js +26 -0
- package/dist/esm/modelsRepositoryServiceClient.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/psuedoDtdl.d.ts +16 -0
- package/dist/esm/psuedoDtdl.d.ts.map +1 -0
- package/dist/esm/psuedoDtdl.js +4 -0
- package/dist/esm/psuedoDtdl.js.map +1 -0
- package/dist/esm/psuedoParser.d.ts +23 -0
- package/dist/esm/psuedoParser.d.ts.map +1 -0
- package/dist/esm/psuedoParser.js +98 -0
- package/dist/esm/psuedoParser.js.map +1 -0
- package/dist/esm/utils/constants.d.ts +8 -0
- package/dist/esm/utils/constants.d.ts.map +1 -0
- package/dist/esm/utils/constants.js +12 -0
- package/dist/esm/utils/constants.js.map +1 -0
- package/dist/esm/utils/path.d.ts +4 -0
- package/dist/esm/utils/path.d.ts.map +1 -0
- package/{dist-esm/src → dist/esm}/utils/path.js +1 -1
- package/{dist-esm/src → dist/esm}/utils/path.js.map +1 -1
- package/dist/react-native/dependencyResolutionType.d.ts +9 -0
- package/dist/react-native/dependencyResolutionType.d.ts.map +1 -0
- package/dist/react-native/dependencyResolutionType.js +4 -0
- package/dist/react-native/dependencyResolutionType.js.map +1 -0
- package/dist/react-native/dtmiConventions.d.ts +25 -0
- package/dist/react-native/dtmiConventions.d.ts.map +1 -0
- package/dist/react-native/dtmiConventions.js +52 -0
- package/dist/react-native/dtmiConventions.js.map +1 -0
- package/dist/react-native/dtmiResolver.d.ts +20 -0
- package/dist/react-native/dtmiResolver.d.ts.map +1 -0
- package/dist/react-native/dtmiResolver.js +51 -0
- package/dist/react-native/dtmiResolver.js.map +1 -0
- package/dist/react-native/exceptions.d.ts +7 -0
- package/dist/react-native/exceptions.d.ts.map +1 -0
- package/dist/react-native/exceptions.js +12 -0
- package/dist/react-native/exceptions.js.map +1 -0
- package/dist/react-native/fetcherAbstract.d.ts +11 -0
- package/dist/react-native/fetcherAbstract.d.ts.map +1 -0
- package/dist/react-native/fetcherAbstract.js +4 -0
- package/dist/react-native/fetcherAbstract.js.map +1 -0
- package/dist/react-native/fetcherFilesystem.d.ts +14 -0
- package/dist/react-native/fetcherFilesystem.d.ts.map +1 -0
- package/dist/react-native/fetcherFilesystem.js +51 -0
- package/dist/react-native/fetcherFilesystem.js.map +1 -0
- package/dist/react-native/fetcherHTTP.d.ts +16 -0
- package/dist/react-native/fetcherHTTP.d.ts.map +1 -0
- package/dist/react-native/fetcherHTTP.js +52 -0
- package/dist/react-native/fetcherHTTP.js.map +1 -0
- package/dist/react-native/index.d.ts +41 -0
- package/dist/react-native/index.d.ts.map +1 -0
- package/dist/react-native/index.js +40 -0
- package/dist/react-native/index.js.map +1 -0
- package/dist/react-native/interfaces/getModelsOptions.d.ts +14 -0
- package/dist/react-native/interfaces/getModelsOptions.d.ts.map +1 -0
- package/dist/react-native/interfaces/getModelsOptions.js +4 -0
- package/dist/react-native/interfaces/getModelsOptions.js.map +1 -0
- package/dist/react-native/interfaces/modelsRepositoryClientOptions.d.ts +25 -0
- package/dist/react-native/interfaces/modelsRepositoryClientOptions.d.ts.map +1 -0
- package/dist/react-native/interfaces/modelsRepositoryClientOptions.js +4 -0
- package/dist/react-native/interfaces/modelsRepositoryClientOptions.js.map +1 -0
- package/dist/react-native/logger.d.ts +6 -0
- package/dist/react-native/logger.d.ts.map +1 -0
- package/dist/react-native/logger.js +9 -0
- package/dist/react-native/logger.js.map +1 -0
- package/dist/react-native/modelsRepositoryClient.d.ts +68 -0
- package/dist/react-native/modelsRepositoryClient.d.ts.map +1 -0
- package/dist/react-native/modelsRepositoryClient.js +175 -0
- package/dist/react-native/modelsRepositoryClient.js.map +1 -0
- package/dist/react-native/modelsRepositoryServiceClient.d.ts +22 -0
- package/dist/react-native/modelsRepositoryServiceClient.d.ts.map +1 -0
- package/dist/react-native/modelsRepositoryServiceClient.js +26 -0
- package/dist/react-native/modelsRepositoryServiceClient.js.map +1 -0
- package/dist/react-native/package.json +3 -0
- package/dist/react-native/psuedoDtdl.d.ts +16 -0
- package/dist/react-native/psuedoDtdl.d.ts.map +1 -0
- package/dist/react-native/psuedoDtdl.js +4 -0
- package/dist/react-native/psuedoDtdl.js.map +1 -0
- package/dist/react-native/psuedoParser.d.ts +23 -0
- package/dist/react-native/psuedoParser.d.ts.map +1 -0
- package/dist/react-native/psuedoParser.js +98 -0
- package/dist/react-native/psuedoParser.js.map +1 -0
- package/dist/react-native/utils/constants.d.ts +8 -0
- package/dist/react-native/utils/constants.d.ts.map +1 -0
- package/dist/react-native/utils/constants.js +12 -0
- package/dist/react-native/utils/constants.js.map +1 -0
- package/dist/react-native/utils/path.d.ts +4 -0
- package/dist/react-native/utils/path.d.ts.map +1 -0
- package/dist/react-native/utils/path.js +8 -0
- package/dist/react-native/utils/path.js.map +1 -0
- package/package.json +66 -51
- package/dist/index.js +0 -553
- package/dist/index.js.map +0 -1
- package/dist-esm/src/dtmiResolver.js.map +0 -1
- package/dist-esm/src/fetcherFilesystem.js.map +0 -1
- package/dist-esm/src/fetcherHTTP.js.map +0 -1
- package/dist-esm/src/index.js.map +0 -1
- package/dist-esm/src/interfaces/getModelsOptions.js.map +0 -1
- package/dist-esm/src/interfaces/modelsRepositoryClientOptions.js.map +0 -1
- package/dist-esm/src/modelsRepositoryClient.js.map +0 -1
- package/dist-esm/src/modelsRepositoryServiceClient.js.map +0 -1
- package/dist-esm/src/psuedoParser.js.map +0 -1
- package/dist-esm/src/utils/fetcherFilesystem.browser.js.map +0 -1
- package/dist-esm/src/utils/path.browser.js.map +0 -1
- /package/{dist-esm/src → dist/browser}/dependencyResolutionType.js +0 -0
- /package/{dist-esm/src → dist/browser}/dependencyResolutionType.js.map +0 -0
- /package/{dist-esm/src → dist/browser}/dtmiConventions.js +0 -0
- /package/{dist-esm/src → dist/browser}/dtmiConventions.js.map +0 -0
- /package/{dist-esm/src → dist/browser}/exceptions.js +0 -0
- /package/{dist-esm/src → dist/browser}/exceptions.js.map +0 -0
- /package/{dist-esm/src → dist/browser}/fetcherAbstract.js +0 -0
- /package/{dist-esm/src → dist/browser}/interfaces/getModelsOptions.js +0 -0
- /package/{dist-esm/src → dist/browser}/interfaces/modelsRepositoryClientOptions.js +0 -0
- /package/{dist-esm/src → dist/browser}/logger.js +0 -0
- /package/{dist-esm/src → dist/browser}/logger.js.map +0 -0
- /package/{dist-esm/src → dist/browser}/psuedoDtdl.js +0 -0
- /package/{dist-esm/src → dist/browser}/psuedoDtdl.js.map +0 -0
- /package/{dist-esm/src → dist/browser}/utils/constants.js +0 -0
- /package/{dist-esm/src → dist/browser}/utils/constants.js.map +0 -0
- /package/{types → dist}/iot-modelsrepository.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"psuedoParser.js","sourceRoot":"","sources":["../../src/psuedoParser.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { DTDL } from \"./psuedoDtdl.js\";\nimport { logger } from \"./logger.js\";\nimport type { DtmiResolver } from \"./dtmiResolver.js\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\n\n/**\n * The PsuedoParser is an interesting implementation. Essentially, this\n * codebase works in tandem with a Digital Twins Parser, which simultaneously\n * defines the DTDL structure and validates models match the correct DTDL format.\n * In lieu of using that Parser as a dependency (for a complex network of reasons),\n * we implement this class, which kind of parses. Because it uses the resovler too,\n * we can, during psuedo-parsing, identify any times we should resolve a dependency,\n * and then resolve the dependencies until the dependency tree is fully resolved.\n *\n * @internal\n */\nexport class PseudoParser {\n private _resolver: DtmiResolver;\n\n // eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\n constructor(resolver: DtmiResolver) {\n this._resolver = resolver;\n }\n\n async expand(models: DTDL[], tryFromExpanded: boolean): Promise<{ [dtmi: string]: DTDL }> {\n const expandedMap: { [dtmi: string]: DTDL } = {};\n for (let i = 0; i < models.length; i++) {\n const model: DTDL = models[i];\n if (model[\"@id\"] !== undefined) {\n expandedMap[model[\"@id\"]] = model;\n } else {\n throw Error(`model ${model} does not contain @id member`);\n }\n await this._expand(model, expandedMap, tryFromExpanded);\n }\n return expandedMap;\n }\n\n private async _expand(\n model: DTDL,\n modelMap: { [dtmi: string]: DTDL },\n tryFromExpanded: boolean,\n ): Promise<void> {\n logger.info(`Expanding model: ${model[\"@id\"]}`);\n const dependencies = this._getModelDependencies(model);\n const dependenciesToResolve = dependencies.filter((dependency: string) => {\n return !(dependency in modelMap);\n });\n if (dependenciesToResolve.length !== 0) {\n logger.info(`Outstanding dependencies found: ${dependenciesToResolve}`);\n let resolvedDependenciesMap: { [s: string]: unknown };\n try {\n resolvedDependenciesMap = await this._resolver.resolve(\n dependenciesToResolve,\n tryFromExpanded,\n );\n } catch (e: any) {\n if (e instanceof RestError) {\n resolvedDependenciesMap = await this._resolver.resolve(dependenciesToResolve, false);\n } else {\n throw e;\n }\n }\n Object.keys(resolvedDependenciesMap).forEach((key) => {\n modelMap[key] = resolvedDependenciesMap[key] as DTDL;\n });\n const promiseList: Promise<void>[] = [];\n Object.values(resolvedDependenciesMap).forEach((dependencyModel) => {\n promiseList.push(this._expand(dependencyModel as DTDL, modelMap, tryFromExpanded));\n });\n await Promise.all(promiseList);\n }\n }\n\n private _getModelDependencies(model: DTDL): string[] {\n const dependencies = [];\n\n if (model.contents !== undefined) {\n const contents = model.contents;\n contents.forEach((element) => {\n if (\n element[\"@type\"] &&\n typeof element[\"@type\"] === \"string\" &&\n element[\"@type\"] === \"Component\"\n ) {\n if (element.schema && typeof element.schema === \"string\") {\n dependencies.push(element.schema);\n }\n }\n });\n }\n\n if (model.extends !== undefined) {\n if (typeof model.extends === \"string\") {\n dependencies.push(model.extends);\n } else if (Array.isArray(model.extends)) {\n model.extends.forEach((element) => {\n if (typeof element === \"string\") {\n dependencies.push(element);\n } else if (typeof element === \"object\") {\n dependencies.push(this._getModelDependencies(element));\n }\n });\n }\n }\n\n const noDuplicates = Array.from(new Set(dependencies));\n return noDuplicates;\n }\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const SDK_VERSION: string;
|
|
2
|
+
export declare const DEFAULT_USER_AGENT: string;
|
|
3
|
+
export declare const DEFAULT_REPOSITORY_LOCATION = "https://devicemodels.azure.com";
|
|
4
|
+
export declare const DEFAULT_API_VERSION = "2021-02-11";
|
|
5
|
+
export declare const DEPENDENCY_MODE_DISABLED = "disabled";
|
|
6
|
+
export declare const DEPENDENCY_MODE_ENABLED = "enabled";
|
|
7
|
+
export declare const DEPENDENCY_MODE_TRY_FROM_EXPANDED = "tryFromExpanded";
|
|
8
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,EAAE,MAAuB,CAAC;AAClD,eAAO,MAAM,kBAAkB,QAAoE,CAAC;AACpG,eAAO,MAAM,2BAA2B,mCAAmC,CAAC;AAC5E,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,eAAO,MAAM,wBAAwB,aAAa,CAAC;AACnD,eAAO,MAAM,uBAAuB,YAAY,CAAC;AACjD,eAAO,MAAM,iCAAiC,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-browser.d.mts","sourceRoot":"","sources":["../../../src/utils/path-browser.mts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-browser.mjs","sourceRoot":"","sources":["../../../src/utils/path-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,UAAU,WAAW;IACzB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function isLocalPath(): boolean {\n return false;\n}\n\nexport function normalize(text: string): string {\n return text;\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* either dependency resolution is disabled, and only the client will get only the model linked to the dtmi,
|
|
3
|
+
* it is enabled, and the client will resolve all dependency models linked to the dtmi within the endpoint,
|
|
4
|
+
* or it is set to tryFromExpanded, where the client will attempt to get the expanded JSON format from the endpoint,
|
|
5
|
+
* and in the event of failure will fallback on the standard enabled dependency resolution.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
export type dependencyResolutionType = "disabled" | "enabled" | "tryFromExpanded";
|
|
9
|
+
//# sourceMappingURL=dependencyResolutionType.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencyResolutionType.d.ts","sourceRoot":"","sources":["../../src/dependencyResolutionType.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,MAAM,wBAAwB,GAAG,UAAU,GAAG,SAAS,GAAG,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencyResolutionType.js","sourceRoot":"","sources":["../../src/dependencyResolutionType.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * either dependency resolution is disabled, and only the client will get only the model linked to the dtmi,\n * it is enabled, and the client will resolve all dependency models linked to the dtmi within the endpoint,\n * or it is set to tryFromExpanded, where the client will attempt to get the expanded JSON format from the endpoint,\n * and in the event of failure will fallback on the standard enabled dependency resolution.\n *\n */\nexport type dependencyResolutionType = \"disabled\" | \"enabled\" | \"tryFromExpanded\";\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* isValidDtmi validates if a given dtmi matches the convention.
|
|
3
|
+
* This is based on the DTMI spec:
|
|
4
|
+
* https://github.com/Azure/opendigitaltwins-dtdl/blob/master/DTDL/v2/dtdlv2.md#digital-twin-model-identifier
|
|
5
|
+
*
|
|
6
|
+
* @param dtmi - digital twins model identifier string
|
|
7
|
+
*/
|
|
8
|
+
export declare function isValidDtmi(dtmi: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Given the dtmi and repository uri, will get a fully qualified model uri.
|
|
11
|
+
*
|
|
12
|
+
* @param dtmi - digital twins model identifier string
|
|
13
|
+
* @param repositoryUri - base URI for repository
|
|
14
|
+
* @param expanded - is the Model URI .json or .expanded.json
|
|
15
|
+
*/
|
|
16
|
+
export declare function getModelUri(dtmi: string, repositoryUri: string, expanded?: boolean): string;
|
|
17
|
+
/**
|
|
18
|
+
* convertDtmiToPath converts a given dtmi string to a path.
|
|
19
|
+
*
|
|
20
|
+
* @param dtmi - digital twins model identifier string
|
|
21
|
+
* @param expanded - is the Model URI .json or .expanded.json
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare function convertDtmiToPath(dtmi: string, expanded: boolean): string;
|
|
25
|
+
//# sourceMappingURL=dtmiConventions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dtmiConventions.d.ts","sourceRoot":"","sources":["../../src/dtmiConventions.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKjD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,QAAQ,GAAE,OAAe,GACxB,MAAM,CAMR;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAczE"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.isValidDtmi = isValidDtmi;
|
|
6
|
+
exports.getModelUri = getModelUri;
|
|
7
|
+
exports.convertDtmiToPath = convertDtmiToPath;
|
|
8
|
+
/**
|
|
9
|
+
* isValidDtmi validates if a given dtmi matches the convention.
|
|
10
|
+
* This is based on the DTMI spec:
|
|
11
|
+
* https://github.com/Azure/opendigitaltwins-dtdl/blob/master/DTDL/v2/dtdlv2.md#digital-twin-model-identifier
|
|
12
|
+
*
|
|
13
|
+
* @param dtmi - digital twins model identifier string
|
|
14
|
+
*/
|
|
15
|
+
function isValidDtmi(dtmi) {
|
|
16
|
+
if (typeof dtmi !== "string")
|
|
17
|
+
return false;
|
|
18
|
+
const re = /^dtmi:[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?(?::[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?)*;[1-9][0-9]{0,8}$/;
|
|
19
|
+
return re.test(dtmi); // true if dtmi matches regular expression, false otherwise
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Given the dtmi and repository uri, will get a fully qualified model uri.
|
|
23
|
+
*
|
|
24
|
+
* @param dtmi - digital twins model identifier string
|
|
25
|
+
* @param repositoryUri - base URI for repository
|
|
26
|
+
* @param expanded - is the Model URI .json or .expanded.json
|
|
27
|
+
*/
|
|
28
|
+
function getModelUri(dtmi, repositoryUri, expanded = false) {
|
|
29
|
+
if (!repositoryUri.endsWith("/")) {
|
|
30
|
+
repositoryUri = repositoryUri.concat("/");
|
|
31
|
+
}
|
|
32
|
+
const modelUri = repositoryUri + convertDtmiToPath(dtmi, expanded);
|
|
33
|
+
return modelUri;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* convertDtmiToPath converts a given dtmi string to a path.
|
|
37
|
+
*
|
|
38
|
+
* @param dtmi - digital twins model identifier string
|
|
39
|
+
* @param expanded - is the Model URI .json or .expanded.json
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
function convertDtmiToPath(dtmi, expanded) {
|
|
43
|
+
// presently this dtmi to path function does not return the path with a
|
|
44
|
+
// file format at the end, i.e. does not append .json or .expanded.json.
|
|
45
|
+
// that happens in the dtmiToQualifiedPath function
|
|
46
|
+
if (isValidDtmi(dtmi)) {
|
|
47
|
+
let thePath = `${dtmi.toLowerCase().replace(/:/gm, "/").replace(/;/gm, "-")}.json`;
|
|
48
|
+
if (expanded) {
|
|
49
|
+
thePath = thePath.replace(".json", ".expanded.json");
|
|
50
|
+
}
|
|
51
|
+
return thePath;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
throw new Error("DTMI provided is invalid. Ensure it follows DTMI conventions.");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=dtmiConventions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dtmiConventions.js","sourceRoot":"","sources":["../../src/dtmiConventions.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AASlC,kCAKC;AASD,kCAUC;AASD,8CAcC;AAtDD;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,IAAY;IACtC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,EAAE,GACN,yGAAyG,CAAC;IAC5G,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,2DAA2D;AACnF,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CACzB,IAAY,EACZ,aAAqB,EACrB,WAAoB,KAAK;IAEzB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,QAAQ,GAAG,aAAa,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,IAAY,EAAE,QAAiB;IAC/D,uEAAuE;IACvE,wEAAwE;IACxE,mDAAmD;IAEnD,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;QACnF,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * isValidDtmi validates if a given dtmi matches the convention.\n * This is based on the DTMI spec:\n * https://github.com/Azure/opendigitaltwins-dtdl/blob/master/DTDL/v2/dtdlv2.md#digital-twin-model-identifier\n *\n * @param dtmi - digital twins model identifier string\n */\nexport function isValidDtmi(dtmi: string): boolean {\n if (typeof dtmi !== \"string\") return false;\n const re =\n /^dtmi:[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?(?::[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?)*;[1-9][0-9]{0,8}$/;\n return re.test(dtmi); // true if dtmi matches regular expression, false otherwise\n}\n\n/**\n * Given the dtmi and repository uri, will get a fully qualified model uri.\n *\n * @param dtmi - digital twins model identifier string\n * @param repositoryUri - base URI for repository\n * @param expanded - is the Model URI .json or .expanded.json\n */\nexport function getModelUri(\n dtmi: string,\n repositoryUri: string,\n expanded: boolean = false,\n): string {\n if (!repositoryUri.endsWith(\"/\")) {\n repositoryUri = repositoryUri.concat(\"/\");\n }\n const modelUri = repositoryUri + convertDtmiToPath(dtmi, expanded);\n return modelUri;\n}\n\n/**\n * convertDtmiToPath converts a given dtmi string to a path.\n *\n * @param dtmi - digital twins model identifier string\n * @param expanded - is the Model URI .json or .expanded.json\n * @internal\n */\nexport function convertDtmiToPath(dtmi: string, expanded: boolean): string {\n // presently this dtmi to path function does not return the path with a\n // file format at the end, i.e. does not append .json or .expanded.json.\n // that happens in the dtmiToQualifiedPath function\n\n if (isValidDtmi(dtmi)) {\n let thePath = `${dtmi.toLowerCase().replace(/:/gm, \"/\").replace(/;/gm, \"-\")}.json`;\n if (expanded) {\n thePath = thePath.replace(\".json\", \".expanded.json\");\n }\n return thePath;\n } else {\n throw new Error(\"DTMI provided is invalid. Ensure it follows DTMI conventions.\");\n }\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { OperationOptions } from "@azure/core-client";
|
|
2
|
+
import type { DTDL } from "./psuedoDtdl.js";
|
|
3
|
+
import type { Fetcher } from "./fetcherAbstract.js";
|
|
4
|
+
/**
|
|
5
|
+
* DtmiResolver handles reformatting the DTMIs to paths and passing options
|
|
6
|
+
* down to the configured fetcher. It is almost like a middle man between the
|
|
7
|
+
* user-facing API and the PsuedoParser (which identifies if there are sub-dependencies
|
|
8
|
+
* to resolve), and the configured fetcher, which will go out to the endpoint,
|
|
9
|
+
* either in the filesystem or through a URI, and actually get the model we want.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare class DtmiResolver {
|
|
14
|
+
private _fetcher;
|
|
15
|
+
constructor(fetcher: Fetcher);
|
|
16
|
+
resolve(dtmis: string[], expandedModel: boolean, options?: OperationOptions): Promise<{
|
|
17
|
+
[dtmi: string]: DTDL;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=dtmiResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dtmiResolver.d.ts","sourceRoot":"","sources":["../../src/dtmiResolver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAU;gBACd,OAAO,EAAE,OAAO;IAItB,OAAO,CACX,KAAK,EAAE,MAAM,EAAE,EACf,aAAa,EAAE,OAAO,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CAiCrC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.DtmiResolver = void 0;
|
|
6
|
+
const dtmiConventions_js_1 = require("./dtmiConventions.js");
|
|
7
|
+
const exceptions_js_1 = require("./exceptions.js");
|
|
8
|
+
const logger_js_1 = require("./logger.js");
|
|
9
|
+
/**
|
|
10
|
+
* DtmiResolver handles reformatting the DTMIs to paths and passing options
|
|
11
|
+
* down to the configured fetcher. It is almost like a middle man between the
|
|
12
|
+
* user-facing API and the PsuedoParser (which identifies if there are sub-dependencies
|
|
13
|
+
* to resolve), and the configured fetcher, which will go out to the endpoint,
|
|
14
|
+
* either in the filesystem or through a URI, and actually get the model we want.
|
|
15
|
+
*
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
class DtmiResolver {
|
|
19
|
+
constructor(fetcher) {
|
|
20
|
+
this._fetcher = fetcher;
|
|
21
|
+
}
|
|
22
|
+
async resolve(dtmis, expandedModel, options) {
|
|
23
|
+
const modelMap = {};
|
|
24
|
+
const dtdlPromises = dtmis.map(async (dtmi) => {
|
|
25
|
+
const dtdlPath = (0, dtmiConventions_js_1.convertDtmiToPath)(dtmi, expandedModel);
|
|
26
|
+
logger_js_1.logger.info(`Model ${dtmi} located in repository at ${dtdlPath}`);
|
|
27
|
+
const dtdl = await this._fetcher.fetch(dtdlPath, options);
|
|
28
|
+
if (expandedModel) {
|
|
29
|
+
if (Array.isArray(dtdl)) {
|
|
30
|
+
const modelIds = dtdl.map((model) => model["@id"]);
|
|
31
|
+
if (!modelIds.includes(dtmi)) {
|
|
32
|
+
throw new exceptions_js_1.ModelError(`DTMI mismatch on expanded DTDL - Request: ${dtmi}, Response: ${modelIds}`);
|
|
33
|
+
}
|
|
34
|
+
for (const model of dtdl) {
|
|
35
|
+
modelMap[model["@id"]] = model;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
throw new exceptions_js_1.ModelError("Expanded format should always return an array of models.");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
const model = dtdl;
|
|
44
|
+
if (model["@id"] !== dtmi) {
|
|
45
|
+
throw new exceptions_js_1.ModelError(`DTMI mismatch - Request: ${dtmi}, Response ${model["@id"]}`);
|
|
46
|
+
}
|
|
47
|
+
modelMap[`${dtmi}`] = model;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
await Promise.all(dtdlPromises);
|
|
51
|
+
return modelMap;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.DtmiResolver = DtmiResolver;
|
|
55
|
+
//# sourceMappingURL=dtmiResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dtmiResolver.js","sourceRoot":"","sources":["../../src/dtmiResolver.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC,6DAAyD;AACzD,mDAA6C;AAE7C,2CAAqC;AAErC;;;;;;;;GAQG;AACH,MAAa,YAAY;IAEvB,YAAY,OAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,OAAO,CACX,KAAe,EACf,aAAsB,EACtB,OAA0B;QAE1B,MAAM,QAAQ,GAA6B,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC5C,MAAM,QAAQ,GAAG,IAAA,sCAAiB,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACxD,kBAAM,CAAC,IAAI,CAAC,SAAS,IAAI,6BAA6B,QAAQ,EAAE,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC1D,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,MAAM,QAAQ,GAAc,IAAe,CAAC,GAAG,CAAC,CAAC,KAAW,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC/E,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC7B,MAAM,IAAI,0BAAU,CAClB,6CAA6C,IAAI,eAAe,QAAQ,EAAE,CAC3E,CAAC;oBACJ,CAAC;oBACD,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;wBACzB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;oBACjC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,0BAAU,CAAC,0DAA0D,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,IAAY,CAAC;gBAC3B,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC1B,MAAM,IAAI,0BAAU,CAAC,4BAA4B,IAAI,cAAc,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACrF,CAAC;gBAED,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AA3CD,oCA2CC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { OperationOptions } from \"@azure/core-client\";\nimport type { DTDL } from \"./psuedoDtdl.js\";\nimport { convertDtmiToPath } from \"./dtmiConventions.js\";\nimport { ModelError } from \"./exceptions.js\";\nimport type { Fetcher } from \"./fetcherAbstract.js\";\nimport { logger } from \"./logger.js\";\n\n/**\n * DtmiResolver handles reformatting the DTMIs to paths and passing options\n * down to the configured fetcher. It is almost like a middle man between the\n * user-facing API and the PsuedoParser (which identifies if there are sub-dependencies\n * to resolve), and the configured fetcher, which will go out to the endpoint,\n * either in the filesystem or through a URI, and actually get the model we want.\n *\n * @internal\n */\nexport class DtmiResolver {\n private _fetcher: Fetcher;\n constructor(fetcher: Fetcher) {\n this._fetcher = fetcher;\n }\n\n async resolve(\n dtmis: string[],\n expandedModel: boolean,\n options?: OperationOptions,\n ): Promise<{ [dtmi: string]: DTDL }> {\n const modelMap: { [dtmi: string]: DTDL } = {};\n const dtdlPromises = dtmis.map(async (dtmi) => {\n const dtdlPath = convertDtmiToPath(dtmi, expandedModel);\n logger.info(`Model ${dtmi} located in repository at ${dtdlPath}`);\n const dtdl = await this._fetcher.fetch(dtdlPath, options);\n if (expandedModel) {\n if (Array.isArray(dtdl)) {\n const modelIds: string[] = (dtdl as DTDL[]).map((model: DTDL) => model[\"@id\"]);\n if (!modelIds.includes(dtmi)) {\n throw new ModelError(\n `DTMI mismatch on expanded DTDL - Request: ${dtmi}, Response: ${modelIds}`,\n );\n }\n for (const model of dtdl) {\n modelMap[model[\"@id\"]] = model;\n }\n } else {\n throw new ModelError(\"Expanded format should always return an array of models.\");\n }\n } else {\n const model = dtdl as DTDL;\n if (model[\"@id\"] !== dtmi) {\n throw new ModelError(`DTMI mismatch - Request: ${dtmi}, Response ${model[\"@id\"]}`);\n }\n\n modelMap[`${dtmi}`] = model;\n }\n });\n\n await Promise.all(dtdlPromises);\n return modelMap;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAK5B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.ModelError = void 0;
|
|
6
|
+
/**
|
|
7
|
+
* A ModelError will be thrown in the even the Model in the repo is malformed in some standard way.
|
|
8
|
+
*/
|
|
9
|
+
class ModelError extends Error {
|
|
10
|
+
constructor(message) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = "ModelError";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.ModelError = ModelError;
|
|
16
|
+
//# sourceMappingURL=exceptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC;;GAEG;AACH,MAAa,UAAW,SAAQ,KAAK;IACnC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAND,gCAMC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A ModelError will be thrown in the even the Model in the repo is malformed in some standard way.\n */\nexport class ModelError extends Error {\n constructor(message: string) {\n super(message);\n\n this.name = \"ModelError\";\n }\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { OperationOptions } from "@azure/core-client";
|
|
2
|
+
import type { DTDL } from "./psuedoDtdl.js";
|
|
3
|
+
/**
|
|
4
|
+
* Base Interface for Fetchers, which fetch models from endpoints.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export interface Fetcher {
|
|
9
|
+
fetch(path: string, options?: OperationOptions): Promise<DTDL | DTDL[]>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=fetcherAbstract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcherAbstract.d.ts","sourceRoot":"","sources":["../../src/fetcherAbstract.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;CACzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcherAbstract.js","sourceRoot":"","sources":["../../src/fetcherAbstract.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { OperationOptions } from \"@azure/core-client\";\nimport type { DTDL } from \"./psuedoDtdl.js\";\n\n/**\n * Base Interface for Fetchers, which fetch models from endpoints.\n *\n * @internal\n */\nexport interface Fetcher {\n fetch(path: string, options?: OperationOptions): Promise<DTDL | DTDL[]>;\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Fetcher } from "./fetcherAbstract.js";
|
|
2
|
+
import type { DTDL } from "./psuedoDtdl.js";
|
|
3
|
+
/**
|
|
4
|
+
* The Filesystem Fetcher implements the generic Fetcher interface
|
|
5
|
+
* so that models are fetched from a filesystem endpoint.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export declare class FilesystemFetcher implements Fetcher {
|
|
10
|
+
private _baseFilePath;
|
|
11
|
+
constructor(baseFilePath: string);
|
|
12
|
+
fetch(filePath: string): Promise<DTDL | DTDL[]>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=fetcherFilesystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcherFilesystem.d.ts","sourceRoot":"","sources":["../../src/fetcherFilesystem.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAe5C;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,OAAO;IAC/C,OAAO,CAAC,aAAa,CAAS;gBAElB,YAAY,EAAE,MAAM;IAI1B,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;CAoBtD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.FilesystemFetcher = void 0;
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
const node_fs_1 = tslib_1.__importDefault(require("node:fs"));
|
|
8
|
+
const path = tslib_1.__importStar(require("node:path"));
|
|
9
|
+
const core_rest_pipeline_1 = require("@azure/core-rest-pipeline");
|
|
10
|
+
const logger_js_1 = require("./logger.js");
|
|
11
|
+
function readFilePromise(filePath) {
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
node_fs_1.default.readFile(filePath, "utf8", (err, data) => {
|
|
14
|
+
if (err !== undefined) {
|
|
15
|
+
reject(err);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
resolve(data);
|
|
19
|
+
}
|
|
20
|
+
return 0;
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The Filesystem Fetcher implements the generic Fetcher interface
|
|
26
|
+
* so that models are fetched from a filesystem endpoint.
|
|
27
|
+
*
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
class FilesystemFetcher {
|
|
31
|
+
constructor(baseFilePath) {
|
|
32
|
+
this._baseFilePath = baseFilePath;
|
|
33
|
+
}
|
|
34
|
+
async fetch(filePath) {
|
|
35
|
+
logger_js_1.logger.info(`Fetching ${filePath} from local filesystem`);
|
|
36
|
+
const absolutePath = path.join(this._baseFilePath, filePath);
|
|
37
|
+
if (absolutePath.indexOf(this._baseFilePath) !== 0) {
|
|
38
|
+
throw new Error("Attempted to escape base file path");
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
logger_js_1.logger.info(`File open on ${absolutePath}`);
|
|
42
|
+
const dtdlFile = await readFilePromise(absolutePath);
|
|
43
|
+
const parsedDtdl = JSON.parse(dtdlFile);
|
|
44
|
+
return parsedDtdl;
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
const options = {
|
|
48
|
+
code: "ResourceNotFound",
|
|
49
|
+
statusCode: e === null || e === void 0 ? void 0 : e.status,
|
|
50
|
+
};
|
|
51
|
+
throw new core_rest_pipeline_1.RestError("Failed to fetch from Filesystem", options);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.FilesystemFetcher = FilesystemFetcher;
|
|
56
|
+
//# sourceMappingURL=fetcherFilesystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcherFilesystem.js","sourceRoot":"","sources":["../../src/fetcherFilesystem.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,8DAAyB;AACzB,wDAAkC;AAElC,kEAAsD;AAEtD,2CAAqC;AAGrC,SAAS,eAAe,CAAC,QAAgB;IACvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,iBAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC1C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAa,iBAAiB;IAG5B,YAAY,YAAoB;QAC9B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAgB;QAC1B,kBAAM,CAAC,IAAI,CAAC,YAAY,QAAQ,wBAAwB,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC;YACH,kBAAM,CAAC,IAAI,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;YACrD,MAAM,UAAU,GAAkB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACvD,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,OAAO,GAAqB;gBAChC,IAAI,EAAE,kBAAkB;gBACxB,UAAU,EAAE,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM;aACtB,CAAC;YACF,MAAM,IAAI,8BAAS,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;CACF;AA3BD,8CA2BC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { RestErrorOptions } from \"@azure/core-rest-pipeline\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\nimport type { Fetcher } from \"./fetcherAbstract.js\";\nimport { logger } from \"./logger.js\";\nimport type { DTDL } from \"./psuedoDtdl.js\";\n\nfunction readFilePromise(filePath: string): Promise<string> {\n return new Promise((resolve, reject) => {\n fs.readFile(filePath, \"utf8\", (err, data) => {\n if (err !== undefined) {\n reject(err);\n } else {\n resolve(data);\n }\n return 0;\n });\n });\n}\n\n/**\n * The Filesystem Fetcher implements the generic Fetcher interface\n * so that models are fetched from a filesystem endpoint.\n *\n * @internal\n */\nexport class FilesystemFetcher implements Fetcher {\n private _baseFilePath: string;\n\n constructor(baseFilePath: string) {\n this._baseFilePath = baseFilePath;\n }\n\n async fetch(filePath: string): Promise<DTDL | DTDL[]> {\n logger.info(`Fetching ${filePath} from local filesystem`);\n const absolutePath = path.join(this._baseFilePath, filePath);\n if (absolutePath.indexOf(this._baseFilePath) !== 0) {\n throw new Error(\"Attempted to escape base file path\");\n }\n\n try {\n logger.info(`File open on ${absolutePath}`);\n const dtdlFile = await readFilePromise(absolutePath);\n const parsedDtdl: DTDL | DTDL[] = JSON.parse(dtdlFile);\n return parsedDtdl;\n } catch (e: any) {\n const options: RestErrorOptions = {\n code: \"ResourceNotFound\",\n statusCode: e?.status,\n };\n throw new RestError(\"Failed to fetch from Filesystem\", options);\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { OperationOptions, ServiceClient } from "@azure/core-client";
|
|
2
|
+
import type { Fetcher } from "./fetcherAbstract.js";
|
|
3
|
+
import type { DTDL } from "./psuedoDtdl.js";
|
|
4
|
+
/**
|
|
5
|
+
* The HTTP Fetcher implements the Fetcher interface to
|
|
6
|
+
* retrieve models through HTTP calls.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare class HttpFetcher implements Fetcher {
|
|
11
|
+
private _client;
|
|
12
|
+
private _baseURL;
|
|
13
|
+
constructor(baseURL: string, client: ServiceClient);
|
|
14
|
+
fetch(path: string, options?: OperationOptions): Promise<DTDL | DTDL[]>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=fetcherHTTP.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcherHTTP.d.ts","sourceRoot":"","sources":["../../src/fetcherHTTP.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAS1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,OAAO;IACzC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAS;gBAGb,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;IAK5C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;CAiC9E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.HttpFetcher = void 0;
|
|
6
|
+
const core_rest_pipeline_1 = require("@azure/core-rest-pipeline");
|
|
7
|
+
const logger_js_1 = require("./logger.js");
|
|
8
|
+
/**
|
|
9
|
+
* The HTTP Fetcher implements the Fetcher interface to
|
|
10
|
+
* retrieve models through HTTP calls.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
class HttpFetcher {
|
|
15
|
+
// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters
|
|
16
|
+
constructor(baseURL, client) {
|
|
17
|
+
this._client = client;
|
|
18
|
+
this._baseURL = baseURL;
|
|
19
|
+
}
|
|
20
|
+
async fetch(path, options) {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
logger_js_1.logger.info(`Fetching ${path} from remote endpoint`);
|
|
23
|
+
if (!options) {
|
|
24
|
+
options = {};
|
|
25
|
+
}
|
|
26
|
+
const myURL = this._baseURL + "/" + path;
|
|
27
|
+
const requestMethod = "GET";
|
|
28
|
+
const requestHeader = (0, core_rest_pipeline_1.createHttpHeaders)((_a = options.requestOptions) === null || _a === void 0 ? void 0 : _a.customHeaders);
|
|
29
|
+
const requestOptions = {
|
|
30
|
+
url: myURL,
|
|
31
|
+
method: requestMethod,
|
|
32
|
+
headers: requestHeader,
|
|
33
|
+
timeout: (_b = options.requestOptions) === null || _b === void 0 ? void 0 : _b.timeout,
|
|
34
|
+
abortSignal: options.abortSignal,
|
|
35
|
+
tracingOptions: options.tracingOptions,
|
|
36
|
+
allowInsecureConnection: true,
|
|
37
|
+
};
|
|
38
|
+
const request = (0, core_rest_pipeline_1.createPipelineRequest)(requestOptions);
|
|
39
|
+
const res = await this._client.sendRequest(request);
|
|
40
|
+
if (res.status >= 200 && res.status < 400) {
|
|
41
|
+
const dtdlAsString = res.bodyAsText || "";
|
|
42
|
+
const parsedDtdl = JSON.parse(dtdlAsString);
|
|
43
|
+
return parsedDtdl;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
throw new core_rest_pipeline_1.RestError("Error on HTTP Request in remote model fetcher", {
|
|
47
|
+
code: "ResourceNotFound",
|
|
48
|
+
statusCode: res.status,
|
|
49
|
+
response: res,
|
|
50
|
+
request: request,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.HttpFetcher = HttpFetcher;
|
|
56
|
+
//# sourceMappingURL=fetcherHTTP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcherHTTP.js","sourceRoot":"","sources":["../../src/fetcherHTTP.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AASlC,kEAAgG;AAChG,2CAAqC;AAIrC;;;;;GAKG;AACH,MAAa,WAAW;IAItB,wEAAwE;IACxE,YAAY,OAAe,EAAE,MAAqB;QAChD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,OAA0B;;QAClD,kBAAM,CAAC,IAAI,CAAC,YAAY,IAAI,uBAAuB,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC;QACzC,MAAM,aAAa,GAAgB,KAAK,CAAC;QACzC,MAAM,aAAa,GAAgB,IAAA,sCAAiB,EAAC,MAAA,OAAO,CAAC,cAAc,0CAAE,aAAa,CAAC,CAAC;QAC5F,MAAM,cAAc,GAAG;YACrB,GAAG,EAAE,KAAK;YACV,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,MAAA,OAAO,CAAC,cAAc,0CAAE,OAAO;YACxC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,uBAAuB,EAAE,IAAI;SAC9B,CAAC;QACF,MAAM,OAAO,GAAoB,IAAA,0CAAqB,EAAC,cAAc,CAAC,CAAC;QACvE,MAAM,GAAG,GAAqB,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEtE,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC1C,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAkB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC3D,OAAO,UAAU,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,8BAAS,CAAC,+CAA+C,EAAE;gBACnE,IAAI,EAAE,kBAAkB;gBACxB,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,QAAQ,EAAE,GAAG;gBACb,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AA3CD,kCA2CC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { OperationOptions, ServiceClient } from \"@azure/core-client\";\nimport type {\n HttpHeaders,\n HttpMethods,\n PipelineRequest,\n PipelineResponse,\n} from \"@azure/core-rest-pipeline\";\nimport { createHttpHeaders, createPipelineRequest, RestError } from \"@azure/core-rest-pipeline\";\nimport { logger } from \"./logger.js\";\nimport type { Fetcher } from \"./fetcherAbstract.js\";\nimport type { DTDL } from \"./psuedoDtdl.js\";\n\n/**\n * The HTTP Fetcher implements the Fetcher interface to\n * retrieve models through HTTP calls.\n *\n * @internal\n */\nexport class HttpFetcher implements Fetcher {\n private _client: ServiceClient;\n private _baseURL: string;\n\n // eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\n constructor(baseURL: string, client: ServiceClient) {\n this._client = client;\n this._baseURL = baseURL;\n }\n\n async fetch(path: string, options?: OperationOptions): Promise<DTDL | DTDL[]> {\n logger.info(`Fetching ${path} from remote endpoint`);\n if (!options) {\n options = {};\n }\n const myURL = this._baseURL + \"/\" + path;\n const requestMethod: HttpMethods = \"GET\";\n const requestHeader: HttpHeaders = createHttpHeaders(options.requestOptions?.customHeaders);\n const requestOptions = {\n url: myURL,\n method: requestMethod,\n headers: requestHeader,\n timeout: options.requestOptions?.timeout,\n abortSignal: options.abortSignal,\n tracingOptions: options.tracingOptions,\n allowInsecureConnection: true,\n };\n const request: PipelineRequest = createPipelineRequest(requestOptions);\n const res: PipelineResponse = await this._client.sendRequest(request);\n\n if (res.status >= 200 && res.status < 400) {\n const dtdlAsString = res.bodyAsText || \"\";\n const parsedDtdl: DTDL | DTDL[] = JSON.parse(dtdlAsString);\n return parsedDtdl;\n } else {\n throw new RestError(\"Error on HTTP Request in remote model fetcher\", {\n code: \"ResourceNotFound\",\n statusCode: res.status,\n response: res,\n request: request,\n });\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This is the ModelsRepositoryClient Library for JavaScript.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* This ModelsRepositoryClient is built around getting DTDL Models from a user-specified
|
|
6
|
+
* location. The two main variables are the repositoryLocation, which is a path or URI to either a remote
|
|
7
|
+
* or local repository where the models are located, and the dtmis, which can be one or more dtmis that
|
|
8
|
+
* will be mapped to specific models contained in the repository location that the user wishes to get.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* Inline code:
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import lib
|
|
14
|
+
* import {ModelsRepositoryClient} from "../../../src";
|
|
15
|
+
*
|
|
16
|
+
* const repositoryEndpoint = "devicemodels.azure.com";
|
|
17
|
+
* const dtmi = process.argv[2] || "dtmi:azure:DeviceManagement:DeviceInformation;1";
|
|
18
|
+
*
|
|
19
|
+
* console.log(repositoryEndpoint, dtmi);
|
|
20
|
+
*
|
|
21
|
+
* async function main() {
|
|
22
|
+
* const client = new ModelsRepositoryClient({repositoryLocation: repositoryEndpoint});
|
|
23
|
+
* const result = await client.getModels(dtmi, {dependencyResolution: 'tryFromExpanded'});
|
|
24
|
+
* console.log(result);
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* main().catch((err) => {
|
|
28
|
+
* console.error("The sample encountered an error:", err);
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @packageDocumentation
|
|
34
|
+
*/
|
|
35
|
+
export { ModelsRepositoryClient } from "./modelsRepositoryClient.js";
|
|
36
|
+
export { GetModelsOptions } from "./interfaces/getModelsOptions.js";
|
|
37
|
+
export { ModelsRepositoryClientOptions } from "./interfaces/modelsRepositoryClientOptions.js";
|
|
38
|
+
export { dependencyResolutionType } from "./dependencyResolutionType.js";
|
|
39
|
+
export { ModelError } from "./exceptions.js";
|
|
40
|
+
export { getModelUri, isValidDtmi } from "./dtmiConventions.js";
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.isValidDtmi = exports.getModelUri = exports.ModelError = exports.ModelsRepositoryClient = void 0;
|
|
6
|
+
/**
|
|
7
|
+
* This is the ModelsRepositoryClient Library for JavaScript.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* This ModelsRepositoryClient is built around getting DTDL Models from a user-specified
|
|
11
|
+
* location. The two main variables are the repositoryLocation, which is a path or URI to either a remote
|
|
12
|
+
* or local repository where the models are located, and the dtmis, which can be one or more dtmis that
|
|
13
|
+
* will be mapped to specific models contained in the repository location that the user wishes to get.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* Inline code:
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import lib
|
|
19
|
+
* import {ModelsRepositoryClient} from "../../../src";
|
|
20
|
+
*
|
|
21
|
+
* const repositoryEndpoint = "devicemodels.azure.com";
|
|
22
|
+
* const dtmi = process.argv[2] || "dtmi:azure:DeviceManagement:DeviceInformation;1";
|
|
23
|
+
*
|
|
24
|
+
* console.log(repositoryEndpoint, dtmi);
|
|
25
|
+
*
|
|
26
|
+
* async function main() {
|
|
27
|
+
* const client = new ModelsRepositoryClient({repositoryLocation: repositoryEndpoint});
|
|
28
|
+
* const result = await client.getModels(dtmi, {dependencyResolution: 'tryFromExpanded'});
|
|
29
|
+
* console.log(result);
|
|
30
|
+
* }
|
|
31
|
+
*
|
|
32
|
+
* main().catch((err) => {
|
|
33
|
+
* console.error("The sample encountered an error:", err);
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @packageDocumentation
|
|
39
|
+
*/
|
|
40
|
+
var modelsRepositoryClient_js_1 = require("./modelsRepositoryClient.js");
|
|
41
|
+
Object.defineProperty(exports, "ModelsRepositoryClient", { enumerable: true, get: function () { return modelsRepositoryClient_js_1.ModelsRepositoryClient; } });
|
|
42
|
+
var exceptions_js_1 = require("./exceptions.js");
|
|
43
|
+
Object.defineProperty(exports, "ModelError", { enumerable: true, get: function () { return exceptions_js_1.ModelError; } });
|
|
44
|
+
var dtmiConventions_js_1 = require("./dtmiConventions.js");
|
|
45
|
+
Object.defineProperty(exports, "getModelUri", { enumerable: true, get: function () { return dtmiConventions_js_1.getModelUri; } });
|
|
46
|
+
Object.defineProperty(exports, "isValidDtmi", { enumerable: true, get: function () { return dtmiConventions_js_1.isValidDtmi; } });
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,yEAAqE;AAA5D,mIAAA,sBAAsB,OAAA;AAI/B,iDAA6C;AAApC,2GAAA,UAAU,OAAA;AACnB,2DAAgE;AAAvD,iHAAA,WAAW,OAAA;AAAE,iHAAA,WAAW,OAAA","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * This is the ModelsRepositoryClient Library for JavaScript.\n *\n * @remarks\n * This ModelsRepositoryClient is built around getting DTDL Models from a user-specified\n * location. The two main variables are the repositoryLocation, which is a path or URI to either a remote\n * or local repository where the models are located, and the dtmis, which can be one or more dtmis that\n * will be mapped to specific models contained in the repository location that the user wishes to get.\n *\n * @example\n * Inline code:\n * ```typescript\n * import lib\n * import {ModelsRepositoryClient} from \"../../../src\";\n *\n * const repositoryEndpoint = \"devicemodels.azure.com\";\n * const dtmi = process.argv[2] || \"dtmi:azure:DeviceManagement:DeviceInformation;1\";\n *\n * console.log(repositoryEndpoint, dtmi);\n *\n * async function main() {\n * const client = new ModelsRepositoryClient({repositoryLocation: repositoryEndpoint});\n * const result = await client.getModels(dtmi, {dependencyResolution: 'tryFromExpanded'});\n * console.log(result);\n * }\n *\n * main().catch((err) => {\n * console.error(\"The sample encountered an error:\", err);\n * });\n *\n * ```\n *\n * @packageDocumentation\n */\n\nexport { ModelsRepositoryClient } from \"./modelsRepositoryClient.js\";\nexport { GetModelsOptions } from \"./interfaces/getModelsOptions.js\";\nexport { ModelsRepositoryClientOptions } from \"./interfaces/modelsRepositoryClientOptions.js\";\nexport { dependencyResolutionType } from \"./dependencyResolutionType.js\";\nexport { ModelError } from \"./exceptions.js\";\nexport { getModelUri, isValidDtmi } from \"./dtmiConventions.js\";\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { OperationOptions } from "@azure/core-client";
|
|
2
|
+
import type { dependencyResolutionType } from "../dependencyResolutionType.js";
|
|
3
|
+
/**
|
|
4
|
+
* Options for getting models.
|
|
5
|
+
*/
|
|
6
|
+
export interface GetModelsOptions extends OperationOptions {
|
|
7
|
+
/**
|
|
8
|
+
* This is the format of dependency resolution (no dependency resolution, standard dependency
|
|
9
|
+
* resolution, resolution using the expanded json format) that will be used when retrieving
|
|
10
|
+
* models. This overwrites the default dependencyResolution settings of the client.
|
|
11
|
+
*/
|
|
12
|
+
dependencyResolution?: dependencyResolutionType;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=getModelsOptions.d.ts.map
|