azure-kusto-ingest 6.0.2 → 6.0.4
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/dist-esm/src/abstractKustoClient.js.map +1 -1
- package/dist-esm/src/columnMappings.js.map +1 -1
- package/dist-esm/src/descriptors.js +10 -2
- package/dist-esm/src/descriptors.js.map +1 -1
- package/dist-esm/src/fileDescriptor.browser.js +13 -9
- package/dist-esm/src/fileDescriptor.browser.js.map +1 -1
- package/dist-esm/src/fileDescriptor.js +3 -8
- package/dist-esm/src/fileDescriptor.js.map +1 -1
- package/dist-esm/src/ingestClient.js.map +1 -1
- package/dist-esm/src/ingestClientBase.js +11 -4
- package/dist-esm/src/ingestClientBase.js.map +1 -1
- package/dist-esm/src/ingestionBlobInfo.js +5 -5
- package/dist-esm/src/ingestionBlobInfo.js.map +1 -1
- package/dist-esm/src/ingestionProperties.js +2 -2
- package/dist-esm/src/ingestionProperties.js.map +1 -1
- package/dist-esm/src/ingestionResult.js.map +1 -1
- package/dist-esm/src/managedStreamingIngestClient.js.map +1 -1
- package/dist-esm/src/rankedStorageAccount.js.map +1 -1
- package/dist-esm/src/rankedStorageAccountSet.js.map +1 -1
- package/dist-esm/src/resourceManager.js.map +1 -1
- package/dist-esm/src/retry.js.map +1 -1
- package/dist-esm/src/status.js.map +1 -1
- package/dist-esm/src/statusQ.js.map +1 -1
- package/dist-esm/src/streamUtils.js.map +1 -1
- package/dist-esm/src/streamingIngestClient.browser.js +1 -1
- package/dist-esm/src/streamingIngestClient.browser.js.map +1 -1
- package/dist-esm/src/streamingIngestClient.js +1 -1
- package/dist-esm/src/streamingIngestClient.js.map +1 -1
- package/dist-esm/src/streamingIngestClientBase.js.map +1 -1
- package/package.json +3 -3
- package/types/src/descriptors.d.ts +1 -1
- package/types/src/fileDescriptor.d.ts +1 -1
- package/types/src/ingestClient.d.ts +0 -1
- package/types/src/ingestionProperties.d.ts +1 -1
- package/types/src/managedStreamingIngestClient.d.ts +0 -1
- package/types/src/streamUtils.browser.d.ts +0 -1
- package/types/src/streamUtils.d.ts +0 -1
- package/types/src/streamingIngestClient.d.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractKustoClient.js","sourceRoot":"","sources":["../../src/abstractKustoClient.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;AAElC,+DAAsF;AAEtF,kDAAyB;AAEzB,MAAM,aAAa,GAAG,SAAS,CAAC;AAChC,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B,MAAsB,mBAAmB;IAKrC,YAAsB,YAAsC;QAFlD,cAAS,GAAY,KAAK,CAAC;QAGjC,IAAI,CAAC,YAAY,EAAE;
|
|
1
|
+
{"version":3,"file":"abstractKustoClient.js","sourceRoot":"","sources":["../../src/abstractKustoClient.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;AAElC,+DAAsF;AAEtF,kDAAyB;AAEzB,MAAM,aAAa,GAAG,SAAS,CAAC;AAChC,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B,MAAsB,mBAAmB;IAKrC,YAAsB,YAAsC;QAFlD,cAAS,GAAY,KAAK,CAAC;QAGjC,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,GAAG,IAAI,yCAAmB,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,CAAC,CAAC,YAAY,YAAY,yCAAmB,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,YAAY,GAAG,IAAI,yCAAmB,CAAC,YAAY,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,YAAY,GAAG,IAAI,yCAAmB,CAAC,YAAY,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAED,eAAe,CAAC,aAAwC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACrD,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACjB,CAAC;IAQM,KAAK;QACR,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAES,UAAU;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,UAAmB;QACpC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3F,OAAO,UAAU,CAAC;QACtB,CAAC;QACD,OAAO,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa,CAAC,CAAC;IAChF,CAAC;IAED,gBAAgB,CAAC,UAAmB;QAChC,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACnD,OAAO,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,kBAAkB,CAAC,UAAkB;QACjC,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,KAAK,GAAG,IAAA,eAAI,EAAC,SAAS,CAAC,CAAC;YAC9B,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACrD,OAAO,YAAY,IAAI,KAAK,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,8BAA8B,CAAC;QAC/F,CAAC;QAAC,WAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;CACJ;AAtED,kDAsEC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { IngestionProperties, IngestionPropertiesInput } from \"./ingestionProperties\";\nimport { StreamDescriptor, FileDescriptorBase, BlobDescriptor } from \"./descriptors\";\nimport isIP from \"is-ip\";\n\nconst INGEST_PREFIX = \"ingest-\";\nconst PROTOCOL_SUFFIX = \"://\";\n\nexport abstract class AbstractKustoClient {\n public defaultProps: IngestionProperties;\n public defaultDatabase?: string;\n protected _isClosed: boolean = false;\n\n protected constructor(defaultProps: IngestionPropertiesInput) {\n if (!defaultProps) {\n this.defaultProps = new IngestionProperties({});\n } else if (!(defaultProps instanceof IngestionProperties)) {\n this.defaultProps = new IngestionProperties(defaultProps);\n } else {\n this.defaultProps = new IngestionProperties(defaultProps);\n }\n }\n\n _getMergedProps(newProperties?: IngestionPropertiesInput): IngestionProperties {\n const props = this.defaultProps.merge(newProperties);\n props.setDefaults();\n if (!props.database) {\n props.database = this.defaultDatabase;\n }\n\n props.validate();\n return props;\n }\n\n abstract ingestFromStream(stream: StreamDescriptor, ingestionProperties: IngestionPropertiesInput): Promise<any>;\n\n abstract ingestFromFile(file: FileDescriptorBase | string | Blob, ingestionProperties: IngestionPropertiesInput): Promise<any>;\n\n abstract ingestFromBlob(blob: string | BlobDescriptor, ingestionProperties?: IngestionPropertiesInput): Promise<any>;\n\n public close(): void {\n this._isClosed = true;\n }\n\n protected ensureOpen() {\n if (this._isClosed) {\n throw new Error(\"Client is closed\");\n }\n }\n\n getIngestionEndpoint(clusterUrl?: string): string | undefined {\n if (!clusterUrl || clusterUrl.includes(INGEST_PREFIX) || this.isReservedHostname(clusterUrl)) {\n return clusterUrl;\n }\n return clusterUrl.replace(PROTOCOL_SUFFIX, PROTOCOL_SUFFIX + INGEST_PREFIX);\n }\n\n getQueryEndpoint(clusterUrl?: string): string | undefined {\n if (clusterUrl && clusterUrl.includes(INGEST_PREFIX)) {\n return clusterUrl.replace(INGEST_PREFIX, \"\");\n }\n return clusterUrl;\n }\n\n isReservedHostname(clusterUrl: string): boolean {\n try {\n const parsedUrl = new URL(clusterUrl);\n const authority = parsedUrl.hostname;\n if (!authority) {\n return true;\n }\n const is_ip = isIP(authority);\n const is_localhost = authority.includes(\"localhost\");\n return is_localhost || is_ip || authority.toLowerCase() === \"onebox.dev.kusto.windows.net\";\n } catch {\n return false;\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnMappings.js","sourceRoot":"","sources":["../../src/columnMappings.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* eslint-disable @typescript-eslint/ban-types -- We legitimately want to use {} as a \"any non-nullable type\" */\n\nimport { IngestionMappingKind } from \"./ingestionProperties\";\n\nexport enum FieldTransformation {\n PropertyBagArrayToDictionary = \"PropertyBagArrayToDictionary\",\n DateTimeFromUnixSeconds = \"DateTimeFromUnixSeconds\",\n DateTimeFromUnixMilliseconds = \"DateTimeFromUnixMilliseconds\",\n DateTimeFromUnixMicroseconds = \"DateTimeFromUnixMicroseconds\",\n DateTimeFromUnixNanoseconds = \"DateTimeFromUnixNanoseconds\",\n}\n\nexport enum ConstantTransformation {\n SourceLocation = \"SourceLocation\",\n SourceLineNumber = \"SourceLineNumber\",\n}\n\nexport type Transformation = FieldTransformation | ConstantTransformation;\n\ninterface MappingProperties {\n Field?: string;\n Path?: string;\n Ordinal?: number;\n ConstValue?: {};\n Transform?: Transformation;\n}\n\ntype MappingPropertiesStrings = {\n [key in keyof MappingProperties]: string;\n};\n\ninterface ApiColumnMapping {\n Column: string;\n DataType?: string;\n Properties?: MappingPropertiesStrings;\n}\n\nexport abstract class ColumnMapping {\n protected constructor(readonly columnName: string, readonly cslDataType?: string, readonly Properties?: MappingProperties) {}\n\n public abstract mappingKind: IngestionMappingKind;\n\n public toApiMapping(): ApiColumnMapping {\n const result: ApiColumnMapping = {\n Column: this.columnName,\n };\n if (this.cslDataType) {\n result.DataType = this.cslDataType;\n }\n\n if (this.Properties) {\n result.Properties = {};\n for (const key in this.Properties) {\n if (Object.prototype.hasOwnProperty.call(this.Properties, key)) {\n const typedKey = key as keyof MappingProperties;\n const property = this.Properties[typedKey];\n\n // We don't do if (property) because we '0' is a legitimate value\n if (property !== undefined && property !== null) {\n result.Properties[typedKey] = property.toString();\n }\n }\n }\n }\n return result;\n }\n}\n\nexport class CsvColumnMapping extends ColumnMapping {\n /**\n * @deprecated Use the factory methods instead.\n */\n protected constructor(readonly columnName: string, readonly cslDataType?: string, readonly ordinal?: string, constantValue?: {}) {\n super(columnName, cslDataType, {\n Ordinal: ordinal === undefined ? undefined : parseInt(ordinal, 10),\n ConstValue: constantValue,\n });\n }\n\n public static withOrdinal(columnName: string, ordinal: number, cslDataType?: string): CsvColumnMapping {\n return new CsvColumnMapping(columnName, cslDataType, ordinal.toString());\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): CsvColumnMapping {\n return new CsvColumnMapping(columnName, cslDataType, undefined, constantValue);\n }\n\n mappingKind = IngestionMappingKind.CSV;\n}\n\nexport class JsonColumnMapping extends ColumnMapping {\n /**\n * @deprecated Use the factory methods instead.\n */\n constructor(readonly columnName: string, readonly jsonPath?: string, cslDataType: string | null = null, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, {\n Path: jsonPath,\n ConstValue: constantValue,\n Transform: transform,\n });\n }\n\n public static withPath(columnName: string, path: string, cslDataType?: string, transform?: FieldTransformation): JsonColumnMapping {\n return new JsonColumnMapping(columnName, path, cslDataType, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): JsonColumnMapping {\n return new JsonColumnMapping(columnName, undefined, cslDataType, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): JsonColumnMapping {\n return new JsonColumnMapping(columnName, undefined, cslDataType, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.JSON;\n}\n\nexport class AvroColumnMapping extends ColumnMapping {\n private constructor(readonly columnName: string, cslDataType?: string, path?: string, field?: string, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, {\n Path: path,\n Field: field,\n ConstValue: constantValue,\n Transform: transform,\n });\n }\n\n public static withPath(columnName: string, path: string, cslDataType?: string, transform?: FieldTransformation): AvroColumnMapping {\n return new AvroColumnMapping(columnName, cslDataType, path, undefined, undefined, transform);\n }\n\n public static withField(columnName: string, field: string, cslDataType?: string, transform?: FieldTransformation): AvroColumnMapping {\n return new AvroColumnMapping(columnName, cslDataType, undefined, field, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): AvroColumnMapping {\n return new AvroColumnMapping(columnName, cslDataType, undefined, undefined, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): AvroColumnMapping {\n return new AvroColumnMapping(columnName, cslDataType, undefined, undefined, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.AVRO;\n}\n\nexport class ApacheAvroColumnMapping extends ColumnMapping {\n private constructor(readonly columnName: string, cslDataType?: string, path?: string, field?: string, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, {\n Path: path,\n Field: field,\n ConstValue: constantValue,\n Transform: transform,\n });\n }\n\n public static withPath(columnName: string, path: string, cslDataType?: string, transform?: FieldTransformation): ApacheAvroColumnMapping {\n return new ApacheAvroColumnMapping(columnName, cslDataType, path, undefined, undefined, transform);\n }\n\n public static withField(columnName: string, field: string, cslDataType?: string, transform?: FieldTransformation): ApacheAvroColumnMapping {\n return new ApacheAvroColumnMapping(columnName, cslDataType, undefined, field, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): ApacheAvroColumnMapping {\n return new ApacheAvroColumnMapping(columnName, cslDataType, undefined, undefined, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): ApacheAvroColumnMapping {\n return new ApacheAvroColumnMapping(columnName, cslDataType, undefined, undefined, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.APACHEAVRO;\n}\n\nexport class SStreamColumnMapping extends ColumnMapping {\n private constructor(readonly columnName: string, cslDataType?: string, path?: string, field?: string, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, {\n Path: path,\n Field: field,\n ConstValue: constantValue,\n Transform: transform,\n });\n }\n\n public static withPath(columnName: string, path: string, cslDataType?: string, transform?: FieldTransformation): SStreamColumnMapping {\n return new SStreamColumnMapping(columnName, cslDataType, path, undefined, undefined, transform);\n }\n\n public static withField(columnName: string, field: string, cslDataType?: string, transform?: FieldTransformation): SStreamColumnMapping {\n return new SStreamColumnMapping(columnName, cslDataType, undefined, field, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): SStreamColumnMapping {\n return new SStreamColumnMapping(columnName, cslDataType, undefined, undefined, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): SStreamColumnMapping {\n return new SStreamColumnMapping(columnName, cslDataType, undefined, undefined, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.SSTREAM;\n}\n\nexport class ParquetColumnMapping extends ColumnMapping {\n private constructor(readonly columnName: string, cslDataType?: string, path?: string, field?: string, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, {\n Path: path,\n Field: field,\n ConstValue: constantValue,\n Transform: transform,\n });\n }\n\n public static withPath(columnName: string, path: string, cslDataType?: string, transform?: FieldTransformation): ParquetColumnMapping {\n return new ParquetColumnMapping(columnName, cslDataType, path, undefined, undefined, transform);\n }\n\n public static withField(columnName: string, field: string, cslDataType?: string, transform?: FieldTransformation): ParquetColumnMapping {\n return new ParquetColumnMapping(columnName, cslDataType, undefined, field, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): ParquetColumnMapping {\n return new ParquetColumnMapping(columnName, cslDataType, undefined, undefined, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): ParquetColumnMapping {\n return new ParquetColumnMapping(columnName, cslDataType, undefined, undefined, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.PARQUET;\n}\n\nexport class OrcColumnMapping extends ColumnMapping {\n private constructor(readonly columnName: string, cslDataType?: string, path?: string, field?: string, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, {\n Path: path,\n Field: field,\n ConstValue: constantValue,\n Transform: transform,\n });\n }\n\n public static withPath(columnName: string, path: string, cslDataType?: string, transform?: FieldTransformation): OrcColumnMapping {\n return new OrcColumnMapping(columnName, cslDataType, path, undefined, undefined, transform);\n }\n\n public static withField(columnName: string, field: string, cslDataType?: string, transform?: FieldTransformation): OrcColumnMapping {\n return new OrcColumnMapping(columnName, cslDataType, undefined, field, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): OrcColumnMapping {\n return new OrcColumnMapping(columnName, cslDataType, undefined, undefined, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): OrcColumnMapping {\n return new OrcColumnMapping(columnName, cslDataType, undefined, undefined, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.ORC;\n}\n\nexport class W3CLogFileMapping extends ColumnMapping {\n private constructor(readonly columnName: string, cslDataType?: string, field?: string, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, { Field: field, ConstValue: constantValue, Transform: transform });\n }\n\n public static withField(columnName: string, field: string, cslDataType?: string, transform?: FieldTransformation): W3CLogFileMapping {\n return new W3CLogFileMapping(columnName, cslDataType, field, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): W3CLogFileMapping {\n return new W3CLogFileMapping(columnName, cslDataType, undefined, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): W3CLogFileMapping {\n return new W3CLogFileMapping(columnName, cslDataType, undefined, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.W3CLOGFILE;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"columnMappings.js","sourceRoot":"","sources":["../../src/columnMappings.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* eslint-disable @typescript-eslint/ban-types -- We legitimately want to use {} as a \"any non-nullable type\" */\n\nimport { IngestionMappingKind } from \"./ingestionProperties\";\n\nexport enum FieldTransformation {\n PropertyBagArrayToDictionary = \"PropertyBagArrayToDictionary\",\n DateTimeFromUnixSeconds = \"DateTimeFromUnixSeconds\",\n DateTimeFromUnixMilliseconds = \"DateTimeFromUnixMilliseconds\",\n DateTimeFromUnixMicroseconds = \"DateTimeFromUnixMicroseconds\",\n DateTimeFromUnixNanoseconds = \"DateTimeFromUnixNanoseconds\",\n}\n\nexport enum ConstantTransformation {\n SourceLocation = \"SourceLocation\",\n SourceLineNumber = \"SourceLineNumber\",\n}\n\nexport type Transformation = FieldTransformation | ConstantTransformation;\n\ninterface MappingProperties {\n Field?: string;\n Path?: string;\n Ordinal?: number;\n ConstValue?: {};\n Transform?: Transformation;\n}\n\ntype MappingPropertiesStrings = {\n [key in keyof MappingProperties]: string;\n};\n\ninterface ApiColumnMapping {\n Column: string;\n DataType?: string;\n Properties?: MappingPropertiesStrings;\n}\n\nexport abstract class ColumnMapping {\n protected constructor(readonly columnName: string, readonly cslDataType?: string, readonly Properties?: MappingProperties) {}\n\n public abstract mappingKind: IngestionMappingKind;\n\n public toApiMapping(): ApiColumnMapping {\n const result: ApiColumnMapping = {\n Column: this.columnName,\n };\n if (this.cslDataType) {\n result.DataType = this.cslDataType;\n }\n\n if (this.Properties) {\n result.Properties = {};\n for (const key in this.Properties) {\n if (Object.prototype.hasOwnProperty.call(this.Properties, key)) {\n const typedKey = key as keyof MappingProperties;\n const property = this.Properties[typedKey];\n\n // We don't do if (property) because we '0' is a legitimate value\n if (property !== undefined && property !== null) {\n result.Properties[typedKey] = property.toString();\n }\n }\n }\n }\n return result;\n }\n}\n\nexport class CsvColumnMapping extends ColumnMapping {\n /**\n * @deprecated Use the factory methods instead.\n */\n protected constructor(readonly columnName: string, readonly cslDataType?: string, readonly ordinal?: string, constantValue?: {}) {\n super(columnName, cslDataType, {\n Ordinal: ordinal === undefined ? undefined : parseInt(ordinal, 10),\n ConstValue: constantValue,\n });\n }\n\n public static withOrdinal(columnName: string, ordinal: number, cslDataType?: string): CsvColumnMapping {\n return new CsvColumnMapping(columnName, cslDataType, ordinal.toString());\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): CsvColumnMapping {\n return new CsvColumnMapping(columnName, cslDataType, undefined, constantValue);\n }\n\n mappingKind = IngestionMappingKind.CSV;\n}\n\nexport class JsonColumnMapping extends ColumnMapping {\n /**\n * @deprecated Use the factory methods instead.\n */\n constructor(readonly columnName: string, readonly jsonPath?: string, cslDataType: string | null = null, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, {\n Path: jsonPath,\n ConstValue: constantValue,\n Transform: transform,\n });\n }\n\n public static withPath(columnName: string, path: string, cslDataType?: string, transform?: FieldTransformation): JsonColumnMapping {\n return new JsonColumnMapping(columnName, path, cslDataType, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): JsonColumnMapping {\n return new JsonColumnMapping(columnName, undefined, cslDataType, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): JsonColumnMapping {\n return new JsonColumnMapping(columnName, undefined, cslDataType, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.JSON;\n}\n\nexport class AvroColumnMapping extends ColumnMapping {\n private constructor(readonly columnName: string, cslDataType?: string, path?: string, field?: string, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, {\n Path: path,\n Field: field,\n ConstValue: constantValue,\n Transform: transform,\n });\n }\n\n public static withPath(columnName: string, path: string, cslDataType?: string, transform?: FieldTransformation): AvroColumnMapping {\n return new AvroColumnMapping(columnName, cslDataType, path, undefined, undefined, transform);\n }\n\n public static withField(columnName: string, field: string, cslDataType?: string, transform?: FieldTransformation): AvroColumnMapping {\n return new AvroColumnMapping(columnName, cslDataType, undefined, field, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): AvroColumnMapping {\n return new AvroColumnMapping(columnName, cslDataType, undefined, undefined, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): AvroColumnMapping {\n return new AvroColumnMapping(columnName, cslDataType, undefined, undefined, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.AVRO;\n}\n\nexport class ApacheAvroColumnMapping extends ColumnMapping {\n private constructor(readonly columnName: string, cslDataType?: string, path?: string, field?: string, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, {\n Path: path,\n Field: field,\n ConstValue: constantValue,\n Transform: transform,\n });\n }\n\n public static withPath(columnName: string, path: string, cslDataType?: string, transform?: FieldTransformation): ApacheAvroColumnMapping {\n return new ApacheAvroColumnMapping(columnName, cslDataType, path, undefined, undefined, transform);\n }\n\n public static withField(columnName: string, field: string, cslDataType?: string, transform?: FieldTransformation): ApacheAvroColumnMapping {\n return new ApacheAvroColumnMapping(columnName, cslDataType, undefined, field, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): ApacheAvroColumnMapping {\n return new ApacheAvroColumnMapping(columnName, cslDataType, undefined, undefined, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): ApacheAvroColumnMapping {\n return new ApacheAvroColumnMapping(columnName, cslDataType, undefined, undefined, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.APACHEAVRO;\n}\n\nexport class SStreamColumnMapping extends ColumnMapping {\n private constructor(readonly columnName: string, cslDataType?: string, path?: string, field?: string, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, {\n Path: path,\n Field: field,\n ConstValue: constantValue,\n Transform: transform,\n });\n }\n\n public static withPath(columnName: string, path: string, cslDataType?: string, transform?: FieldTransformation): SStreamColumnMapping {\n return new SStreamColumnMapping(columnName, cslDataType, path, undefined, undefined, transform);\n }\n\n public static withField(columnName: string, field: string, cslDataType?: string, transform?: FieldTransformation): SStreamColumnMapping {\n return new SStreamColumnMapping(columnName, cslDataType, undefined, field, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): SStreamColumnMapping {\n return new SStreamColumnMapping(columnName, cslDataType, undefined, undefined, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): SStreamColumnMapping {\n return new SStreamColumnMapping(columnName, cslDataType, undefined, undefined, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.SSTREAM;\n}\n\nexport class ParquetColumnMapping extends ColumnMapping {\n private constructor(readonly columnName: string, cslDataType?: string, path?: string, field?: string, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, {\n Path: path,\n Field: field,\n ConstValue: constantValue,\n Transform: transform,\n });\n }\n\n public static withPath(columnName: string, path: string, cslDataType?: string, transform?: FieldTransformation): ParquetColumnMapping {\n return new ParquetColumnMapping(columnName, cslDataType, path, undefined, undefined, transform);\n }\n\n public static withField(columnName: string, field: string, cslDataType?: string, transform?: FieldTransformation): ParquetColumnMapping {\n return new ParquetColumnMapping(columnName, cslDataType, undefined, field, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): ParquetColumnMapping {\n return new ParquetColumnMapping(columnName, cslDataType, undefined, undefined, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): ParquetColumnMapping {\n return new ParquetColumnMapping(columnName, cslDataType, undefined, undefined, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.PARQUET;\n}\n\nexport class OrcColumnMapping extends ColumnMapping {\n private constructor(readonly columnName: string, cslDataType?: string, path?: string, field?: string, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, {\n Path: path,\n Field: field,\n ConstValue: constantValue,\n Transform: transform,\n });\n }\n\n public static withPath(columnName: string, path: string, cslDataType?: string, transform?: FieldTransformation): OrcColumnMapping {\n return new OrcColumnMapping(columnName, cslDataType, path, undefined, undefined, transform);\n }\n\n public static withField(columnName: string, field: string, cslDataType?: string, transform?: FieldTransformation): OrcColumnMapping {\n return new OrcColumnMapping(columnName, cslDataType, undefined, field, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): OrcColumnMapping {\n return new OrcColumnMapping(columnName, cslDataType, undefined, undefined, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): OrcColumnMapping {\n return new OrcColumnMapping(columnName, cslDataType, undefined, undefined, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.ORC;\n}\n\nexport class W3CLogFileMapping extends ColumnMapping {\n private constructor(readonly columnName: string, cslDataType?: string, field?: string, constantValue?: {}, transform?: Transformation) {\n super(columnName, cslDataType ?? undefined, { Field: field, ConstValue: constantValue, Transform: transform });\n }\n\n public static withField(columnName: string, field: string, cslDataType?: string, transform?: FieldTransformation): W3CLogFileMapping {\n return new W3CLogFileMapping(columnName, cslDataType, field, undefined, transform);\n }\n\n public static withConstantValue(columnName: string, constantValue: {}, cslDataType?: string): W3CLogFileMapping {\n return new W3CLogFileMapping(columnName, cslDataType, undefined, constantValue);\n }\n\n public static withTransform(columnName: string, transform: ConstantTransformation, cslDataType?: string): W3CLogFileMapping {\n return new W3CLogFileMapping(columnName, cslDataType, undefined, undefined, transform);\n }\n\n mappingKind = IngestionMappingKind.W3CLOGFILE;\n}\n"]}
|
|
@@ -5,7 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
6
|
};
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.generateBlobName = exports.BlobDescriptor = exports.StreamDescriptor = exports.AbstractDescriptor = exports.
|
|
8
|
+
exports.generateBlobName = exports.BlobDescriptor = exports.StreamDescriptor = exports.AbstractDescriptor = exports.getSourceId = exports.CompressionType = void 0;
|
|
9
|
+
exports.shouldCompressFileByExtension = shouldCompressFileByExtension;
|
|
9
10
|
const uuid_1 = require("uuid");
|
|
10
11
|
const uuid_validate_1 = __importDefault(require("uuid-validate"));
|
|
11
12
|
const storage_blob_1 = require("@azure/storage-blob");
|
|
@@ -28,13 +29,20 @@ exports.getSourceId = getSourceId;
|
|
|
28
29
|
function shouldCompressFileByExtension(extension) {
|
|
29
30
|
return !(extension === ".avro" || extension === ".apacheavro" || extension === ".parquet" || extension === ".sstream" || extension === ".orc");
|
|
30
31
|
}
|
|
31
|
-
exports.shouldCompressFileByExtension = shouldCompressFileByExtension;
|
|
32
32
|
class AbstractDescriptor {
|
|
33
33
|
constructor(sourceId = null, size = null) {
|
|
34
34
|
this.sourceId = sourceId;
|
|
35
35
|
this.size = size;
|
|
36
36
|
this.sourceId = (0, exports.getSourceId)(sourceId);
|
|
37
37
|
}
|
|
38
|
+
_calculateSize(fileSize, modifier = 1) {
|
|
39
|
+
if (this.size == null || this.size <= 0) {
|
|
40
|
+
if (fileSize <= 0) {
|
|
41
|
+
throw Error("Empty file.");
|
|
42
|
+
}
|
|
43
|
+
this.size = fileSize * modifier;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
38
46
|
}
|
|
39
47
|
exports.AbstractDescriptor = AbstractDescriptor;
|
|
40
48
|
class StreamDescriptor extends AbstractDescriptor {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descriptors.js","sourceRoot":"","sources":["../../src/descriptors.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;
|
|
1
|
+
{"version":3,"file":"descriptors.js","sourceRoot":"","sources":["../../src/descriptors.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport uuidValidate from \"uuid-validate\";\nimport { Readable } from \"stream\";\nimport IngestionProperties from \"./ingestionProperties\";\nimport { BlobClient } from \"@azure/storage-blob\";\n\nexport enum CompressionType {\n ZIP = \".zip\",\n GZIP = \".gz\",\n None = \"\",\n}\n\nexport const getSourceId = (sourceId: string | null): string => {\n if (sourceId) {\n if (!uuidValidate(sourceId, 4)) {\n throw Error(\"sourceId is not a valid uuid/v4\");\n }\n return sourceId;\n }\n return uuidv4();\n};\n\nexport function shouldCompressFileByExtension(extension?: string): boolean {\n return !(extension === \".avro\" || extension === \".apacheavro\" || extension === \".parquet\" || extension === \".sstream\" || extension === \".orc\");\n}\n\nexport abstract class AbstractDescriptor {\n constructor(public sourceId: string | null = null, public size: number | null = null) {\n this.sourceId = getSourceId(sourceId);\n }\n\n _calculateSize(fileSize: number, modifier: number = 1): void {\n if (this.size == null || this.size <= 0) {\n if (fileSize <= 0) {\n throw Error(\"Empty file.\");\n }\n this.size = fileSize * modifier;\n }\n }\n}\n\nexport class StreamDescriptor extends AbstractDescriptor {\n /**\n * Use Readable for Node.js and ArrayBuffer in browser\n */\n constructor(\n readonly stream: Readable | ArrayBuffer,\n sourceId: string | null = null,\n public compressionType: CompressionType = CompressionType.None,\n size: number | null = null\n ) {\n super(sourceId, size);\n }\n\n merge(other: StreamDescriptor) {\n this.size = other.size;\n this.compressionType = other.compressionType;\n this.sourceId = other.sourceId;\n return this;\n }\n\n // Currently streams are not compressed by us\n getCompressionSuffix() {\n return this.compressionType ? `.${this.compressionType}` : \"\";\n }\n}\n\nexport class BlobDescriptor extends AbstractDescriptor {\n constructor(readonly path: string, size: number | null = null, sourceId: string | null = null) {\n super(sourceId, size);\n }\n\n async fillSize(): Promise<void> {\n if (!this.size) {\n const blobClient = new BlobClient(this.path);\n const blobProps = await blobClient.getProperties();\n const length = blobProps.contentLength;\n if (length !== undefined) {\n if (length === 0) {\n throw new Error(\"Empty blob.\");\n }\n this.size = length;\n }\n }\n }\n}\n\nexport interface FileDescriptorBase {\n size: number | null;\n zipped: boolean;\n compressionType: CompressionType;\n cleanupTmp?: () => Promise<void>;\n extension?: string;\n name?: string;\n sourceId: string | null;\n getCompressionSuffix: () => string;\n}\n\nexport const generateBlobName = (desc: StreamDescriptor | FileDescriptorBase, props: IngestionProperties): string => {\n const extension = desc instanceof StreamDescriptor ? null : `${desc.name ? \"__\" + desc.name : `${desc.extension ? \".\" + desc.extension : \"\"}`}`;\n\n const formatSuffix = props.format ? `.${props.format}` : \".csv\";\n const compressionString = desc.getCompressionSuffix();\n return `${props.database}__${props.table}__${desc.sourceId}${extension || formatSuffix}${compressionString}`;\n};\n"]}
|
|
@@ -16,21 +16,25 @@ class FileDescriptor extends descriptors_1.AbstractDescriptor {
|
|
|
16
16
|
this.extension = extension;
|
|
17
17
|
this.name = name;
|
|
18
18
|
this.compressionType = compressionType;
|
|
19
|
-
this.size = size
|
|
19
|
+
this.size = size;
|
|
20
20
|
this.zipped = compressionType !== descriptors_1.CompressionType.None || this.extension === ".gz" || this.extension === ".zip";
|
|
21
21
|
this.shouldNotCompress = !(0, descriptors_1.shouldCompressFileByExtension)(this.extension);
|
|
22
22
|
}
|
|
23
23
|
async prepare(ingestionProperties) {
|
|
24
24
|
const shouldNotCompressByFormat = !(0, ingestionProperties_1.shouldCompressFileByFormat)(ingestionProperties);
|
|
25
|
-
if (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
catch (e) {
|
|
31
|
-
// Ignore - return the file itself
|
|
32
|
-
}
|
|
25
|
+
if (this.zipped || this.shouldNotCompress || shouldNotCompressByFormat) {
|
|
26
|
+
const estimatedCompressionModifier = 11;
|
|
27
|
+
this._calculateSize(this.file.size, estimatedCompressionModifier);
|
|
28
|
+
return this.file;
|
|
33
29
|
}
|
|
30
|
+
const gzipped = pako_1.default.gzip(await this.file.arrayBuffer());
|
|
31
|
+
try {
|
|
32
|
+
return new Blob([gzipped]);
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
// Ignore - return the file itself
|
|
36
|
+
}
|
|
37
|
+
this._calculateSize(this.file.size);
|
|
34
38
|
return this.file;
|
|
35
39
|
}
|
|
36
40
|
async cleanup() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileDescriptor.browser.js","sourceRoot":"","sources":["../../src/fileDescriptor.browser.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;AAElC,gDAAwB;AACxB,+CAAuH;AACvH,+DAA6F;AAE7F,MAAa,cAAe,SAAQ,gCAAkB;IAOlD,YACa,IAAU,EACnB,WAA0B,IAAI,EAC9B,OAAsB,IAAI,EAC1B,kBAAmC,6BAAe,CAAC,IAAI,EAC9C,SAAkB,EAClB,IAAa;QAEtB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAPP,SAAI,GAAJ,IAAI,CAAM;QAIV,cAAS,GAAT,SAAS,CAAS;QAClB,SAAI,GAAJ,IAAI,CAAS;QAGtB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"fileDescriptor.browser.js","sourceRoot":"","sources":["../../src/fileDescriptor.browser.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;AAElC,gDAAwB;AACxB,+CAAuH;AACvH,+DAA6F;AAE7F,MAAa,cAAe,SAAQ,gCAAkB;IAOlD,YACa,IAAU,EACnB,WAA0B,IAAI,EAC9B,OAAsB,IAAI,EAC1B,kBAAmC,6BAAe,CAAC,IAAI,EAC9C,SAAkB,EAClB,IAAa;QAEtB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAPP,SAAI,GAAJ,IAAI,CAAM;QAIV,cAAS,GAAT,SAAS,CAAS;QAClB,SAAI,GAAJ,IAAI,CAAS;QAGtB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,MAAM,GAAG,eAAe,KAAK,6BAAe,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;QAChH,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAA,2CAA6B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,mBAA8C;QACxD,MAAM,yBAAyB,GAAG,CAAC,IAAA,gDAA0B,EAAC,mBAAmB,CAAC,CAAC;QACnF,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,IAAI,yBAAyB,EAAE,CAAC;YACrE,MAAM,4BAA4B,GAAG,EAAE,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,IAAI,CAAC;QACrB,CAAC;QAED,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC;YACD,OAAO,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,kCAAkC;QACtC,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,oBAAoB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACrE,CAAC;CACJ;AAlDD,wCAkDC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport pako from \"pako\";\nimport { AbstractDescriptor, CompressionType, FileDescriptorBase, shouldCompressFileByExtension } from \"./descriptors\";\nimport { IngestionPropertiesInput, shouldCompressFileByFormat } from \"./ingestionProperties\";\n\nexport class FileDescriptor extends AbstractDescriptor implements FileDescriptorBase {\n size: number | null;\n zipped: boolean;\n compressionType: CompressionType;\n shouldNotCompress: boolean;\n cleanupTmp?: () => Promise<void>;\n\n constructor(\n readonly file: Blob,\n sourceId: string | null = null,\n size: number | null = null,\n compressionType: CompressionType = CompressionType.None,\n readonly extension?: string,\n readonly name?: string\n ) {\n super(sourceId);\n this.compressionType = compressionType;\n this.size = size;\n\n this.zipped = compressionType !== CompressionType.None || this.extension === \".gz\" || this.extension === \".zip\";\n this.shouldNotCompress = !shouldCompressFileByExtension(this.extension);\n }\n\n async prepare(ingestionProperties?: IngestionPropertiesInput): Promise<Blob> {\n const shouldNotCompressByFormat = !shouldCompressFileByFormat(ingestionProperties);\n if (this.zipped || this.shouldNotCompress || shouldNotCompressByFormat) {\n const estimatedCompressionModifier = 11;\n this._calculateSize(this.file.size, estimatedCompressionModifier);\n return this.file;\n }\n\n const gzipped = pako.gzip(await this.file.arrayBuffer());\n try {\n return new Blob([gzipped]);\n } catch (e) {\n // Ignore - return the file itself\n }\n this._calculateSize(this.file.size);\n return this.file;\n }\n\n async cleanup(): Promise<void> {\n if (this.cleanupTmp) {\n await this.cleanupTmp();\n }\n }\n\n getCompressionSuffix() {\n return this.compressionType ? `.${this.compressionType}` : \".gz\";\n }\n}\n"]}
|
|
@@ -33,6 +33,7 @@ class FileDescriptor extends descriptors_1.AbstractDescriptor {
|
|
|
33
33
|
this.extension = extension ? extension : path_1.default.extname(this.file).toLowerCase();
|
|
34
34
|
this.zipped = compressionType !== descriptors_1.CompressionType.None || this.extension === ".gz" || this.extension === ".zip";
|
|
35
35
|
this.shouldNotCompress = !(0, descriptors_1.shouldCompressFileByExtension)(this.extension);
|
|
36
|
+
this.getSize = (0, util_1.promisify)(fs_1.default.stat);
|
|
36
37
|
}
|
|
37
38
|
async _gzip() {
|
|
38
39
|
const { path, cleanup } = await (0, tmp_promise_1.file)({ postfix: ".gz", keep: false });
|
|
@@ -57,19 +58,13 @@ class FileDescriptor extends descriptors_1.AbstractDescriptor {
|
|
|
57
58
|
const shouldNotCompressByFormat = !(0, ingestionProperties_1.shouldCompressFileByFormat)(ingestionProperties);
|
|
58
59
|
if (this.zipped || this.shouldNotCompress || shouldNotCompressByFormat) {
|
|
59
60
|
const estimatedCompressionModifier = 11;
|
|
60
|
-
await this.
|
|
61
|
+
this._calculateSize((await this.getSize(this.file)).size, estimatedCompressionModifier);
|
|
61
62
|
return this.file;
|
|
62
63
|
}
|
|
63
64
|
const path = await this._gzip();
|
|
64
|
-
await this.
|
|
65
|
+
this._calculateSize((await this.getSize(this.file)).size);
|
|
65
66
|
return path;
|
|
66
67
|
}
|
|
67
|
-
async _calculateSize(modifier = 1) {
|
|
68
|
-
if (this.size == null || this.size <= 0) {
|
|
69
|
-
const asyncStat = (0, util_1.promisify)(fs_1.default.stat);
|
|
70
|
-
this.size = (await asyncStat(this.file)).size * modifier;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
68
|
async cleanup() {
|
|
74
69
|
if (this.cleanupTmp) {
|
|
75
70
|
await this.cleanupTmp();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileDescriptor.js","sourceRoot":"","sources":["../../src/fileDescriptor.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;AAElC,gDAAwB;AACxB,gDAA2B;AAC3B,4CAAoB;AACpB,6CAA8C;AAC9C,+BAAiC;AACjC,+CAAuH;AACvH,+DAA6F;AAE7F;;GAEG;AACH,MAAa,cAAe,SAAQ,gCAAkB;
|
|
1
|
+
{"version":3,"file":"fileDescriptor.js","sourceRoot":"","sources":["../../src/fileDescriptor.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;AAElC,gDAAwB;AACxB,gDAA2B;AAC3B,4CAAoB;AACpB,6CAA8C;AAC9C,+BAAiC;AACjC,+CAAuH;AACvH,+DAA6F;AAE7F;;GAEG;AACH,MAAa,cAAe,SAAQ,gCAAkB;IAOlD;IACI;;OAEG;IACM,IAAmB,EAC5B,WAA0B,IAAI,EAC9B,OAAsB,IAAI,EAC1B,kBAAmC,6BAAe,CAAC,IAAI,EAC9C,SAAkB,EAAE,sCAAsC;IAC1D,IAAa,CAAC,sCAAsC;;QAE7D,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAPb,SAAI,GAAJ,IAAI,CAAe;QAInB,cAAS,GAAT,SAAS,CAAS;QAClB,SAAI,GAAJ,IAAI,CAAS;QAGtB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QAE5F,IAAI,CAAC,MAAM,GAAG,eAAe,KAAK,6BAAe,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;QAChH,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAA,2CAA6B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAExE,IAAI,CAAC,OAAO,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,kBAAO,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAE1B,MAAM,MAAM,GAAG,cAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,YAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,YAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE1C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClC,KAAK;iBACA,IAAI,CAAC,MAAM,CAAC;iBACZ,IAAI,CAAC,MAAM,CAAC;iBACZ,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACjB,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtB,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,mBAA8C;QACxD,MAAM,yBAAyB,GAAG,CAAC,IAAA,gDAA0B,EAAC,mBAAmB,CAAC,CAAC;QACnF,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,IAAI,yBAAyB,EAAE,CAAC;YACrE,MAAM,4BAA4B,GAAG,EAAE,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;YAClG,OAAO,IAAI,CAAC,IAAc,CAAC;QAC/B,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,oBAAoB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACrE,CAAC;CACJ;AA1ED,wCA0EC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport zlib from \"zlib\";\nimport pathlib from \"path\";\nimport fs from \"fs\";\nimport { file as tmpFile } from \"tmp-promise\";\nimport { promisify } from \"util\";\nimport { AbstractDescriptor, CompressionType, FileDescriptorBase, shouldCompressFileByExtension } from \"./descriptors\";\nimport { IngestionPropertiesInput, shouldCompressFileByFormat } from \"./ingestionProperties\";\n\n/**\n * Describes a file to be ingested. Use string to describe a local path in Node.JS and Blob object in browsers\n */\nexport class FileDescriptor extends AbstractDescriptor implements FileDescriptorBase {\n zipped: boolean;\n compressionType: CompressionType;\n shouldNotCompress: boolean;\n cleanupTmp?: () => Promise<void>;\n private getSize: (file: string | Buffer | URL) => Promise<fs.Stats>;\n\n constructor(\n /**\n * Use string in Node.JS and Blob in browser\n */\n readonly file: string | Blob,\n sourceId: string | null = null,\n size: number | null = null,\n compressionType: CompressionType = CompressionType.None,\n readonly extension?: string, // Extracted from file name by default\n readonly name?: string // Extracted from file name by default\n ) {\n super(sourceId, size);\n this.compressionType = compressionType;\n this.name = name ? name : pathlib.basename(this.file as string);\n this.extension = extension ? extension : pathlib.extname(this.file as string).toLowerCase();\n\n this.zipped = compressionType !== CompressionType.None || this.extension === \".gz\" || this.extension === \".zip\";\n this.shouldNotCompress = !shouldCompressFileByExtension(this.extension);\n\n this.getSize = promisify(fs.stat);\n }\n\n async _gzip(): Promise<string> {\n const { path, cleanup } = await tmpFile({ postfix: \".gz\", keep: false });\n this.cleanupTmp = cleanup;\n\n const zipper = zlib.createGzip();\n const input = fs.createReadStream(this.file as string, { autoClose: true });\n const output = fs.createWriteStream(path);\n\n await new Promise((resolve, reject) => {\n input\n .pipe(zipper)\n .pipe(output)\n .on(\"error\", (err) => {\n reject(err);\n });\n output.once(\"close\", () => {\n resolve(null);\n });\n });\n\n return path;\n }\n\n async prepare(ingestionProperties?: IngestionPropertiesInput): Promise<string> {\n const shouldNotCompressByFormat = !shouldCompressFileByFormat(ingestionProperties);\n if (this.zipped || this.shouldNotCompress || shouldNotCompressByFormat) {\n const estimatedCompressionModifier = 11;\n this._calculateSize((await this.getSize(this.file as string)).size, estimatedCompressionModifier);\n return this.file as string;\n }\n\n const path = await this._gzip();\n this._calculateSize((await this.getSize(this.file as string)).size);\n return path;\n }\n\n async cleanup(): Promise<void> {\n if (this.cleanupTmp) {\n await this.cleanupTmp();\n }\n }\n\n getCompressionSuffix() {\n return this.compressionType ? `.${this.compressionType}` : \".gz\";\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingestClient.js","sourceRoot":"","sources":["../../src/ingestClient.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC,+CAAmF;AACnF,qDAAkD;AAGlD,yDAA2D;AAI3D,MAAa,iBAAkB,SAAQ,wCAAqB;IACxD,YAAY,IAA2C,EAAE,YAAuC,EAAE,mBAA6B;QAC3H,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAoC,EAAE,mBAA8C;QACrG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QAExD,MAAM,UAAU,GAAG,IAAI,YAAY,+BAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,+BAAc,CAAC,IAAI,CAAC,CAAC;QAEpF,IAAI;
|
|
1
|
+
{"version":3,"file":"ingestClient.js","sourceRoot":"","sources":["../../src/ingestClient.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC,+CAAmF;AACnF,qDAAkD;AAGlD,yDAA2D;AAI3D,MAAa,iBAAkB,SAAQ,wCAAqB;IACxD,YAAY,IAA2C,EAAE,YAAuC,EAAE,mBAA6B;QAC3H,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAoC,EAAE,mBAA8C;QACrG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QAExD,MAAM,UAAU,GAAG,IAAI,YAAY,+BAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,+BAAc,CAAC,IAAI,CAAC,CAAC;QAEpF,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,IAAA,8BAAgB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,4BAAc,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;QACzG,CAAC;gBAAS,CAAC;YACP,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAAiD,EAAE,mBAA8C;QACpH,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QACxD,MAAM,UAAU,GAAqB,MAAM,YAAY,8BAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,8BAAgB,CAAC,MAAM,CAAC,CAAC;QAChH,oEAAoE;QACpE,MAAM,QAAQ,GAAG,IAAA,8BAAgB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAErD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEvE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,4BAAc,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,mBAAmB;IACvF,CAAC;CACJ;AAtCD,8CAsCC;AAED,kBAAe,iBAAiB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { KustoConnectionStringBuilder } from \"azure-kusto-data\";\n\nimport { BlobDescriptor, generateBlobName, StreamDescriptor } from \"./descriptors\";\nimport { FileDescriptor } from \"./fileDescriptor\";\n\nimport { IngestionPropertiesInput } from \"./ingestionProperties\";\nimport { KustoIngestClientBase } from \"./ingestClientBase\";\nimport { Readable } from \"stream\";\nimport { IngestionResult } from \"./ingestionResult\";\n\nexport class KustoIngestClient extends KustoIngestClientBase {\n constructor(kcsb: string | KustoConnectionStringBuilder, defaultProps?: IngestionPropertiesInput, autoCorrectEndpoint?: boolean) {\n super(kcsb, defaultProps, autoCorrectEndpoint);\n }\n\n /**\n * Use string in Node.JS and Blob in browser\n */\n async ingestFromFile(file: FileDescriptor | string | Blob, ingestionProperties?: IngestionPropertiesInput): Promise<IngestionResult> {\n this.ensureOpen();\n const props = this._getMergedProps(ingestionProperties);\n\n const descriptor = file instanceof FileDescriptor ? file : new FileDescriptor(file);\n\n try {\n const blobName = generateBlobName(descriptor, props);\n const fileToUpload = await descriptor.prepare(ingestionProperties);\n const blobUri = await this.uploadToBlobWithRetry(fileToUpload, blobName);\n return this.ingestFromBlob(new BlobDescriptor(blobUri, descriptor.size, descriptor.sourceId), props);\n } finally {\n await descriptor.cleanup();\n }\n }\n\n /**\n * Use Readable in Node.JS and ArrayBuffer in browser\n */\n async ingestFromStream(stream: StreamDescriptor | Readable | ArrayBuffer, ingestionProperties?: IngestionPropertiesInput): Promise<IngestionResult> {\n this.ensureOpen();\n const props = this._getMergedProps(ingestionProperties);\n const descriptor: StreamDescriptor = stream instanceof StreamDescriptor ? stream : new StreamDescriptor(stream);\n // TODO we don't gzip on stream here, just ont streamingIngestClient\n const blobName = generateBlobName(descriptor, props);\n\n const blobUri = await this.uploadToBlobWithRetry(descriptor, blobName);\n\n return this.ingestFromBlob(new BlobDescriptor(blobUri), props); // descriptor.size?\n }\n}\n\nexport default KustoIngestClient;\n"]}
|
|
@@ -94,26 +94,33 @@ class KustoIngestClientBase extends abstractKustoClient_1.AbstractKustoClient {
|
|
|
94
94
|
for (let i = 0; i < retryCount; i++) {
|
|
95
95
|
const containerClient = new storage_blob_1.ContainerClient(containers[i].uri);
|
|
96
96
|
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
|
|
97
|
+
let uploadResponse;
|
|
97
98
|
try {
|
|
98
99
|
if (typeof descriptor == "string") {
|
|
99
|
-
await blockBlobClient.uploadFile(descriptor);
|
|
100
|
+
uploadResponse = await blockBlobClient.uploadFile(descriptor);
|
|
100
101
|
}
|
|
101
102
|
else if (descriptor instanceof descriptors_1.StreamDescriptor) {
|
|
102
103
|
if (descriptor.stream instanceof Buffer) {
|
|
103
|
-
await blockBlobClient.uploadData(descriptor.stream);
|
|
104
|
+
uploadResponse = await blockBlobClient.uploadData(descriptor.stream);
|
|
104
105
|
}
|
|
105
106
|
else {
|
|
106
|
-
await blockBlobClient.uploadStream(descriptor.stream);
|
|
107
|
+
uploadResponse = await blockBlobClient.uploadStream(descriptor.stream);
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
110
|
else {
|
|
110
|
-
await blockBlobClient.uploadData(descriptor);
|
|
111
|
+
uploadResponse = await blockBlobClient.uploadData(descriptor);
|
|
112
|
+
}
|
|
113
|
+
if ((uploadResponse === null || uploadResponse === void 0 ? void 0 : uploadResponse.errorCode) != null) {
|
|
114
|
+
throw new Error(`Failed to upload to blob: ${uploadResponse.errorCode}`);
|
|
111
115
|
}
|
|
112
116
|
this.resourceManager.reportResourceUsageResult(containerClient.accountName, true);
|
|
113
117
|
return blockBlobClient.url;
|
|
114
118
|
}
|
|
115
119
|
catch (ex) {
|
|
116
120
|
this.resourceManager.reportResourceUsageResult(containerClient.accountName, false);
|
|
121
|
+
if (i === retryCount - 1) {
|
|
122
|
+
throw ex;
|
|
123
|
+
}
|
|
117
124
|
}
|
|
118
125
|
}
|
|
119
126
|
throw new Error("Failed to upload to blob.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingestClientBase.js","sourceRoot":"","sources":["../../src/ingestClientBase.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Client as KustoClient, KustoConnectionStringBuilder } from \"azure-kusto-data\";\n\nimport ResourceManager from \"./resourceManager\";\n\nimport IngestionBlobInfo from \"./ingestionBlobInfo\";\nimport { ContainerClient } from \"@azure/storage-blob\";\n\nimport { QueueClient } from \"@azure/storage-queue\";\n\nimport IngestionProperties, { IngestionPropertiesInput, ReportLevel, ReportMethod } from \"./ingestionProperties\";\nimport { AbstractKustoClient } from \"./abstractKustoClient\";\nimport {\n IngestionStatus,\n TableReportIngestionResult,\n IngestionResult,\n IngestionStatusInTableDescription,\n IngestionStatusResult,\n OperationStatus,\n putRecordInTable,\n} from \"./ingestionResult\";\nimport { Readable } from \"stream\";\n\nimport { BlobDescriptor, StreamDescriptor } from \"./descriptors\";\n\nexport abstract class KustoIngestClientBase extends AbstractKustoClient {\n resourceManager: ResourceManager;\n applicationForTracing: string | null;\n clientVersionForTracing: string | null;\n static readonly MaxNumberOfRetryAttempts = 3;\n\n constructor(\n kcsb: string | KustoConnectionStringBuilder,\n defaultProps?: IngestionPropertiesInput,\n autoCorrectEndpoint: boolean = true,\n isBrowser?: boolean\n ) {\n super(defaultProps);\n if (typeof kcsb === \"string\") {\n kcsb = new KustoConnectionStringBuilder(kcsb);\n }\n if (autoCorrectEndpoint) {\n kcsb.dataSource = this.getIngestionEndpoint(kcsb.dataSource);\n }\n const kustoClient = new KustoClient(kcsb);\n this.resourceManager = new ResourceManager(kustoClient, isBrowser);\n this.defaultDatabase = kustoClient.defaultDatabase;\n const clientDetails = kcsb.clientDetails();\n this.applicationForTracing = clientDetails.applicationNameForTracing;\n this.clientVersionForTracing = clientDetails.versionForTracing;\n }\n\n async ingestFromBlob(\n blob: string | BlobDescriptor,\n ingestionProperties?: IngestionPropertiesInput,\n maxRetries: number = KustoIngestClientBase.MaxNumberOfRetryAttempts\n ): Promise<IngestionResult> {\n this.ensureOpen();\n const props = this._getMergedProps(ingestionProperties);\n\n const descriptor = blob instanceof BlobDescriptor ? blob : new BlobDescriptor(blob);\n\n const authorizationContext = await this.resourceManager.getAuthorizationContext();\n const ingestionBlobInfo = new IngestionBlobInfo(descriptor, props, authorizationContext, this.applicationForTracing, this.clientVersionForTracing);\n\n const reportToTable = props.reportLevel !== ReportLevel.DoNotReport && props.reportMethod !== ReportMethod.Queue;\n\n if (reportToTable) {\n const statusTableClient = await this.resourceManager.createStatusTable();\n const status = this.createStatusObject(props, OperationStatus.Pending, ingestionBlobInfo);\n await putRecordInTable(statusTableClient, { ...status, partitionKey: ingestionBlobInfo.Id, rowKey: ingestionBlobInfo.Id });\n\n const desc = new IngestionStatusInTableDescription(statusTableClient.url, ingestionBlobInfo.Id, ingestionBlobInfo.Id);\n ingestionBlobInfo.IngestionStatusInTable = desc;\n await this.sendQueueMessage(maxRetries, ingestionBlobInfo);\n return new TableReportIngestionResult(desc, statusTableClient);\n }\n\n await this.sendQueueMessage(maxRetries, ingestionBlobInfo);\n return new IngestionStatusResult(this.createStatusObject(props, OperationStatus.Queued, ingestionBlobInfo));\n }\n\n private async sendQueueMessage(maxRetries: number, blobInfo: IngestionBlobInfo) {\n const queues = await this.resourceManager.getIngestionQueues();\n if (queues == null) {\n throw new Error(\"Failed to get queues\");\n }\n const ingestionBlobInfoJson = JSON.stringify(blobInfo);\n const encoded = Buffer.from(ingestionBlobInfoJson).toString(\"base64\");\n const retryCount = Math.min(maxRetries, queues.length);\n\n for (let i = 0; i < retryCount; i++) {\n const queueClient = new QueueClient(queues[i].uri);\n try {\n const queueResponse = await queueClient.sendMessage(encoded);\n this.resourceManager.reportResourceUsageResult(queueClient.accountName, true);\n return queueResponse;\n } catch (_) {\n this.resourceManager.reportResourceUsageResult(queueClient.accountName, false);\n }\n }\n\n throw new Error(\"Failed to send message to queue.\");\n }\n\n private createStatusObject(props: IngestionProperties, status: OperationStatus, ingestionBlobInfo: IngestionBlobInfo): IngestionStatus {\n const time = Date.now().toString();\n return {\n Status: status,\n Timestamp: time,\n IngestionSourceId: ingestionBlobInfo.Id,\n IngestionSourcePath: ingestionBlobInfo.BlobPath.split(/[?;]/)[0],\n Database: props.database,\n Table: props.table,\n UpdatedOn: time,\n Details: \"\",\n } as IngestionStatus;\n }\n\n async uploadToBlobWithRetry(\n descriptor: string | Blob | ArrayBuffer | StreamDescriptor,\n blobName: string,\n maxRetries: number = KustoIngestClientBase.MaxNumberOfRetryAttempts\n ): Promise<string> {\n const containers = await this.resourceManager.getContainers();\n\n if (containers == null || containers.length === 0) {\n throw new Error(\"Failed to get containers\");\n }\n\n const retryCount = Math.min(maxRetries, containers.length);\n\n // Go over all containers and try to upload the file to the first one that succeeds\n for (let i = 0; i < retryCount; i++) {\n const containerClient = new ContainerClient(containers[i].uri);\n const blockBlobClient = containerClient.getBlockBlobClient(blobName);\n try {\n if (typeof descriptor == \"string\") {\n await blockBlobClient.uploadFile(descriptor);\n } else if (descriptor instanceof StreamDescriptor) {\n if (descriptor.stream instanceof Buffer) {\n await blockBlobClient.uploadData(descriptor.stream as Buffer);\n } else {\n await blockBlobClient.uploadStream(descriptor.stream as Readable);\n }\n } else {\n await blockBlobClient.uploadData(descriptor);\n }\n this.resourceManager.reportResourceUsageResult(containerClient.accountName, true);\n return blockBlobClient.url;\n } catch (ex) {\n this.resourceManager.reportResourceUsageResult(containerClient.accountName, false);\n }\n }\n\n throw new Error(\"Failed to upload to blob.\");\n }\n\n close() {\n if (!this._isClosed) {\n this.resourceManager.close();\n }\n super.close();\n }\n}\n\nexport default KustoIngestClientBase;\n"]}
|
|
1
|
+
{"version":3,"file":"ingestClientBase.js","sourceRoot":"","sources":["../../src/ingestClientBase.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Client as KustoClient, KustoConnectionStringBuilder } from \"azure-kusto-data\";\n\nimport ResourceManager from \"./resourceManager\";\n\nimport IngestionBlobInfo from \"./ingestionBlobInfo\";\nimport { BlobUploadCommonResponse, ContainerClient } from \"@azure/storage-blob\";\n\nimport { QueueClient } from \"@azure/storage-queue\";\n\nimport IngestionProperties, { IngestionPropertiesInput, ReportLevel, ReportMethod } from \"./ingestionProperties\";\nimport { AbstractKustoClient } from \"./abstractKustoClient\";\nimport {\n IngestionStatus,\n TableReportIngestionResult,\n IngestionResult,\n IngestionStatusInTableDescription,\n IngestionStatusResult,\n OperationStatus,\n putRecordInTable,\n} from \"./ingestionResult\";\nimport { Readable } from \"stream\";\n\nimport { BlobDescriptor, StreamDescriptor } from \"./descriptors\";\n\nexport abstract class KustoIngestClientBase extends AbstractKustoClient {\n resourceManager: ResourceManager;\n applicationForTracing: string | null;\n clientVersionForTracing: string | null;\n static readonly MaxNumberOfRetryAttempts = 3;\n\n constructor(\n kcsb: string | KustoConnectionStringBuilder,\n defaultProps?: IngestionPropertiesInput,\n autoCorrectEndpoint: boolean = true,\n isBrowser?: boolean\n ) {\n super(defaultProps);\n if (typeof kcsb === \"string\") {\n kcsb = new KustoConnectionStringBuilder(kcsb);\n }\n if (autoCorrectEndpoint) {\n kcsb.dataSource = this.getIngestionEndpoint(kcsb.dataSource);\n }\n const kustoClient = new KustoClient(kcsb);\n this.resourceManager = new ResourceManager(kustoClient, isBrowser);\n this.defaultDatabase = kustoClient.defaultDatabase;\n const clientDetails = kcsb.clientDetails();\n this.applicationForTracing = clientDetails.applicationNameForTracing;\n this.clientVersionForTracing = clientDetails.versionForTracing;\n }\n\n async ingestFromBlob(\n blob: string | BlobDescriptor,\n ingestionProperties?: IngestionPropertiesInput,\n maxRetries: number = KustoIngestClientBase.MaxNumberOfRetryAttempts\n ): Promise<IngestionResult> {\n this.ensureOpen();\n const props = this._getMergedProps(ingestionProperties);\n\n const descriptor = blob instanceof BlobDescriptor ? blob : new BlobDescriptor(blob);\n\n const authorizationContext = await this.resourceManager.getAuthorizationContext();\n const ingestionBlobInfo = new IngestionBlobInfo(descriptor, props, authorizationContext, this.applicationForTracing, this.clientVersionForTracing);\n\n const reportToTable = props.reportLevel !== ReportLevel.DoNotReport && props.reportMethod !== ReportMethod.Queue;\n\n if (reportToTable) {\n const statusTableClient = await this.resourceManager.createStatusTable();\n const status = this.createStatusObject(props, OperationStatus.Pending, ingestionBlobInfo);\n await putRecordInTable(statusTableClient, { ...status, partitionKey: ingestionBlobInfo.Id, rowKey: ingestionBlobInfo.Id });\n\n const desc = new IngestionStatusInTableDescription(statusTableClient.url, ingestionBlobInfo.Id, ingestionBlobInfo.Id);\n ingestionBlobInfo.IngestionStatusInTable = desc;\n await this.sendQueueMessage(maxRetries, ingestionBlobInfo);\n return new TableReportIngestionResult(desc, statusTableClient);\n }\n\n await this.sendQueueMessage(maxRetries, ingestionBlobInfo);\n return new IngestionStatusResult(this.createStatusObject(props, OperationStatus.Queued, ingestionBlobInfo));\n }\n\n private async sendQueueMessage(maxRetries: number, blobInfo: IngestionBlobInfo) {\n const queues = await this.resourceManager.getIngestionQueues();\n if (queues == null) {\n throw new Error(\"Failed to get queues\");\n }\n const ingestionBlobInfoJson = JSON.stringify(blobInfo);\n const encoded = Buffer.from(ingestionBlobInfoJson).toString(\"base64\");\n const retryCount = Math.min(maxRetries, queues.length);\n\n for (let i = 0; i < retryCount; i++) {\n const queueClient = new QueueClient(queues[i].uri);\n try {\n const queueResponse = await queueClient.sendMessage(encoded);\n this.resourceManager.reportResourceUsageResult(queueClient.accountName, true);\n return queueResponse;\n } catch (_) {\n this.resourceManager.reportResourceUsageResult(queueClient.accountName, false);\n }\n }\n\n throw new Error(\"Failed to send message to queue.\");\n }\n\n private createStatusObject(props: IngestionProperties, status: OperationStatus, ingestionBlobInfo: IngestionBlobInfo): IngestionStatus {\n const time = Date.now().toString();\n return {\n Status: status,\n Timestamp: time,\n IngestionSourceId: ingestionBlobInfo.Id,\n IngestionSourcePath: ingestionBlobInfo.BlobPath.split(/[?;]/)[0],\n Database: props.database,\n Table: props.table,\n UpdatedOn: time,\n Details: \"\",\n } as IngestionStatus;\n }\n\n async uploadToBlobWithRetry(\n descriptor: string | Blob | ArrayBuffer | StreamDescriptor,\n blobName: string,\n maxRetries: number = KustoIngestClientBase.MaxNumberOfRetryAttempts\n ): Promise<string> {\n const containers = await this.resourceManager.getContainers();\n\n if (containers == null || containers.length === 0) {\n throw new Error(\"Failed to get containers\");\n }\n\n const retryCount = Math.min(maxRetries, containers.length);\n\n // Go over all containers and try to upload the file to the first one that succeeds\n for (let i = 0; i < retryCount; i++) {\n const containerClient = new ContainerClient(containers[i].uri);\n const blockBlobClient = containerClient.getBlockBlobClient(blobName);\n let uploadResponse: BlobUploadCommonResponse;\n try {\n if (typeof descriptor == \"string\") {\n uploadResponse = await blockBlobClient.uploadFile(descriptor);\n } else if (descriptor instanceof StreamDescriptor) {\n if (descriptor.stream instanceof Buffer) {\n uploadResponse = await blockBlobClient.uploadData(descriptor.stream as Buffer);\n } else {\n uploadResponse = await blockBlobClient.uploadStream(descriptor.stream as Readable);\n }\n } else {\n uploadResponse = await blockBlobClient.uploadData(descriptor);\n }\n\n if (uploadResponse?.errorCode != null) {\n throw new Error(`Failed to upload to blob: ${uploadResponse.errorCode}`);\n }\n\n this.resourceManager.reportResourceUsageResult(containerClient.accountName, true);\n return blockBlobClient.url;\n } catch (ex) {\n this.resourceManager.reportResourceUsageResult(containerClient.accountName, false);\n\n if (i === retryCount - 1) {\n throw ex;\n }\n }\n }\n\n throw new Error(\"Failed to upload to blob.\");\n }\n\n close() {\n if (!this._isClosed) {\n this.resourceManager.close();\n }\n super.close();\n }\n}\n\nexport default KustoIngestClientBase;\n"]}
|
|
@@ -27,16 +27,16 @@ class IngestionBlobInfo {
|
|
|
27
27
|
additionalProperties.authorizationContext = authContext;
|
|
28
28
|
const tags = [];
|
|
29
29
|
if (ingestionProperties.additionalTags) {
|
|
30
|
-
tags.
|
|
30
|
+
tags.push(...ingestionProperties.additionalTags);
|
|
31
31
|
}
|
|
32
32
|
if (ingestionProperties.dropByTags) {
|
|
33
|
-
tags.
|
|
33
|
+
tags.push(...ingestionProperties.dropByTags.map((t) => "drop-by:" + t));
|
|
34
34
|
}
|
|
35
35
|
if (ingestionProperties.ingestByTags) {
|
|
36
|
-
tags.
|
|
36
|
+
tags.push(...ingestionProperties.ingestByTags.map((t) => "ingest-by:" + t));
|
|
37
37
|
}
|
|
38
|
-
if (tags
|
|
39
|
-
additionalProperties.tags = tags;
|
|
38
|
+
if (tags.length > 0) {
|
|
39
|
+
additionalProperties.tags = JSON.stringify(tags);
|
|
40
40
|
}
|
|
41
41
|
if (ingestionProperties.ingestIfNotExists) {
|
|
42
42
|
additionalProperties.ingestIfNotExists = ingestionProperties.ingestIfNotExists;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingestionBlobInfo.js","sourceRoot":"","sources":["../../src/ingestionBlobInfo.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,+BAAoC;AAKpC,MAAa,iBAAiB;IAiB1B,YACI,cAA8B,EAC9B,mBAAwC,EACxC,cAA6B,IAAI,EACjC,wBAAuC,IAAI,EAC3C,0BAAyC,IAAI;;QATjD,2BAAsB,GAA6C,IAAI,CAAC;QACxE,0BAAqB,GAAmB,IAAI,CAAC;QAC7C,4BAAuB,GAAmB,IAAI,CAAC;QAS3C,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,MAAA,mBAAmB,CAAC,QAAQ,mCAAI,IAAI,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,MAAA,mBAAmB,CAAC,KAAK,mCAAI,IAAI,CAAC;QACnD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,MAAA,mBAAmB,CAAC,gBAAgB,mCAAI,KAAK,CAAC;QACtE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,MAAA,mBAAmB,CAAC,WAAW,mCAAI,IAAI,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,MAAA,mBAAmB,CAAC,YAAY,mCAAI,IAAI,CAAC;QAC7D,IAAI,CAAC,yBAAyB,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,QAAQ,IAAI,IAAA,SAAM,GAAE,CAAC;QAC9C,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QAEvD,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,oBAAoB,IAAI,EAAE,CAAC;QAC5E,oBAAoB,CAAC,oBAAoB,GAAG,WAAW,CAAC;QAExD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,mBAAmB,CAAC,cAAc,EAAE;
|
|
1
|
+
{"version":3,"file":"ingestionBlobInfo.js","sourceRoot":"","sources":["../../src/ingestionBlobInfo.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,+BAAoC;AAKpC,MAAa,iBAAiB;IAiB1B,YACI,cAA8B,EAC9B,mBAAwC,EACxC,cAA6B,IAAI,EACjC,wBAAuC,IAAI,EAC3C,0BAAyC,IAAI;;QATjD,2BAAsB,GAA6C,IAAI,CAAC;QACxE,0BAAqB,GAAmB,IAAI,CAAC;QAC7C,4BAAuB,GAAmB,IAAI,CAAC;QAS3C,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,MAAA,mBAAmB,CAAC,QAAQ,mCAAI,IAAI,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,MAAA,mBAAmB,CAAC,KAAK,mCAAI,IAAI,CAAC;QACnD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,MAAA,mBAAmB,CAAC,gBAAgB,mCAAI,KAAK,CAAC;QACtE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,MAAA,mBAAmB,CAAC,WAAW,mCAAI,IAAI,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,MAAA,mBAAmB,CAAC,YAAY,mCAAI,IAAI,CAAC;QAC7D,IAAI,CAAC,yBAAyB,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,QAAQ,IAAI,IAAA,SAAM,GAAE,CAAC;QAC9C,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QAEvD,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,oBAAoB,IAAI,EAAE,CAAC;QAC5E,oBAAoB,CAAC,oBAAoB,GAAG,WAAW,CAAC;QAExD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,mBAAmB,CAAC,cAAc,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,mBAAmB,CAAC,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,mBAAmB,CAAC,YAAY,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClB,oBAAoB,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,mBAAmB,CAAC,iBAAiB,EAAE,CAAC;YACxC,oBAAoB,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;QACnF,CAAC;QAED,IAAI,mBAAmB,CAAC,uBAAuB,IAAI,mBAAmB,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxG,0BAA0B;YAC1B,oBAAoB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACrI,CAAC;QAED,IAAI,mBAAmB,CAAC,yBAAyB,EAAE,CAAC;YAChD,oBAAoB,CAAC,yBAAyB,GAAG,mBAAmB,CAAC,yBAAyB,CAAC;QACnG,CAAC;QAED,IAAI,mBAAmB,CAAC,oBAAoB,EAAE,CAAC;YAC3C,oBAAoB,CAAC,oBAAoB,GAAG,mBAAmB,CAAC,oBAAoB,CAAC;QACzF,CAAC;QAED,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,CAAC;YACvC,oBAAoB,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;QACjF,CAAC;QAED,IAAI,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAC7B,oBAAoB,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC7D,CAAC;QACD,IAAI,mBAAmB,CAAC,iBAAiB,EAAE,CAAC;YACxC,oBAAoB,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;QACnF,CAAC;QAED,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACrD,CAAC;CACJ;AAtFD,8CAsFC;AAED,kBAAe,iBAAiB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport { BlobDescriptor } from \"./descriptors\";\nimport IngestionProperties, { ReportLevel, ReportMethod } from \"./ingestionProperties\";\nimport { IngestionStatusInTableDescription } from \"./ingestionResult\";\n\nexport class IngestionBlobInfo {\n BlobPath: string;\n RawDataSize: number | null;\n DatabaseName: string | null;\n TableName: string | null;\n RetainBlobOnSuccess: boolean;\n FlushImmediately: boolean;\n IgnoreSizeLimit: boolean;\n ReportLevel: ReportLevel | null;\n ReportMethod: ReportMethod | null;\n SourceMessageCreationTime: Date;\n Id: string;\n AdditionalProperties: { [additional: string]: any };\n IngestionStatusInTable: IngestionStatusInTableDescription | null = null;\n ApplicationForTracing?: string | null = null;\n ClientVersionForTracing?: string | null = null;\n\n constructor(\n blobDescriptor: BlobDescriptor,\n ingestionProperties: IngestionProperties,\n authContext: string | null = null,\n applicationForTracing: string | null = null,\n clientVersionForTracing: string | null = null\n ) {\n this.BlobPath = blobDescriptor.path;\n this.RawDataSize = blobDescriptor.size;\n this.DatabaseName = ingestionProperties.database ?? null;\n this.TableName = ingestionProperties.table ?? null;\n this.RetainBlobOnSuccess = true;\n this.FlushImmediately = ingestionProperties.flushImmediately ?? false;\n this.IgnoreSizeLimit = false;\n this.ReportLevel = ingestionProperties.reportLevel ?? null;\n this.ReportMethod = ingestionProperties.reportMethod ?? null;\n this.SourceMessageCreationTime = new Date();\n this.Id = blobDescriptor.sourceId || uuidv4();\n this.ApplicationForTracing = applicationForTracing;\n this.ClientVersionForTracing = clientVersionForTracing;\n\n const additionalProperties = ingestionProperties.additionalProperties || {};\n additionalProperties.authorizationContext = authContext;\n\n const tags: string[] = [];\n if (ingestionProperties.additionalTags) {\n tags.push(...ingestionProperties.additionalTags);\n }\n if (ingestionProperties.dropByTags) {\n tags.push(...ingestionProperties.dropByTags.map((t) => \"drop-by:\" + t));\n }\n if (ingestionProperties.ingestByTags) {\n tags.push(...ingestionProperties.ingestByTags.map((t) => \"ingest-by:\" + t));\n }\n\n if (tags.length > 0) {\n additionalProperties.tags = JSON.stringify(tags);\n }\n\n if (ingestionProperties.ingestIfNotExists) {\n additionalProperties.ingestIfNotExists = ingestionProperties.ingestIfNotExists;\n }\n\n if (ingestionProperties.ingestionMappingColumns && ingestionProperties.ingestionMappingColumns.length > 0) {\n // server expects a string\n additionalProperties.ingestionMapping = JSON.stringify(ingestionProperties.ingestionMappingColumns.map((m) => m.toApiMapping()));\n }\n\n if (ingestionProperties.ingestionMappingReference) {\n additionalProperties.ingestionMappingReference = ingestionProperties.ingestionMappingReference;\n }\n\n if (ingestionProperties.ingestionMappingKind) {\n additionalProperties.ingestionMappingType = ingestionProperties.ingestionMappingKind;\n }\n\n if (ingestionProperties.validationPolicy) {\n additionalProperties.ValidationPolicy = ingestionProperties.validationPolicy;\n }\n\n if (ingestionProperties.format) {\n additionalProperties.format = ingestionProperties.format;\n }\n if (ingestionProperties.ignoreFirstRecord) {\n additionalProperties.ignoreFirstRecord = ingestionProperties.ignoreFirstRecord;\n }\n\n this.AdditionalProperties = additionalProperties;\n }\n}\n\nexport default IngestionBlobInfo;\n"]}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
// Copyright (c) Microsoft Corporation.
|
|
3
3
|
// Licensed under the MIT License.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.
|
|
5
|
+
exports.IngestionProperties = exports.ReportMethod = exports.ReportLevel = exports.ValidationPolicy = exports.ValidationImplications = exports.ValidationOptions = exports.dataFormatMappingKind = exports.IngestionMappingKind = exports.DataFormat = void 0;
|
|
6
|
+
exports.shouldCompressFileByFormat = shouldCompressFileByFormat;
|
|
6
7
|
const errors_1 = require("./errors");
|
|
7
8
|
/**
|
|
8
9
|
* Data formats supported for Kusto ingestion.
|
|
@@ -251,6 +252,5 @@ function shouldCompressFileByFormat(ingestionProperties) {
|
|
|
251
252
|
ingestionProperties.format === "apacheavro" ||
|
|
252
253
|
ingestionProperties.format === "sstream");
|
|
253
254
|
}
|
|
254
|
-
exports.shouldCompressFileByFormat = shouldCompressFileByFormat;
|
|
255
255
|
exports.default = IngestionProperties;
|
|
256
256
|
//# sourceMappingURL=ingestionProperties.js.map
|