From fc1067137b16d10083b0a51dd9eb7ad4b54f3aa6 Mon Sep 17 00:00:00 2001 From: hardiknai-techm Date: Fri, 6 Aug 2021 20:07:01 +0530 Subject: [PATCH] resolve esint error Constants --- .eslintignore | 1 - src/Common/Constants.ts | 372 ------------------ src/Common/Constants/AfecFeatures.ts | 3 + src/Common/Constants/AnalyticalStorageTtl.ts | 3 + src/Common/Constants/ApiEndpoints.ts | 2 + src/Common/Constants/ApiType.ts | 6 + src/Common/Constants/Areas.ts | 5 + src/Common/Constants/ArmApiVersions.ts | 6 + src/Common/Constants/ArmResourceTypes.ts | 2 + src/Common/Constants/BackendDefaults.ts | 5 + src/Common/Constants/CapabilityNames.ts | 8 + src/Common/Constants/CassandraBackend.ts | 9 + src/Common/Constants/ClientDefaults.ts | 11 + .../Constants/CodeOfConductEndpoints.ts | 3 + .../Constants/ConfigurationOverridesValues.ts | 1 + src/Common/Constants/CorrelationBackend.ts | 1 + src/Common/Constants/DocumentsGridMetrics.ts | 8 + src/Common/Constants/EndpointsRegex.ts | 8 + src/Common/Constants/Flights.ts | 7 + src/Common/Constants/HashRoutePrefixes.ts | 45 +++ src/Common/Constants/HttpHeaders.ts | 31 ++ src/Common/Constants/HttpStatusCodes.ts | 23 ++ src/Common/Constants/KeyCodes.ts | 8 + src/Common/Constants/MongoDBAccounts.ts | 2 + src/Common/Constants/NormalizedEventKey.ts | 8 + src/Common/Constants/Notebook.ts | 5 + src/Common/Constants/OfferVersions.ts | 3 + src/Common/Constants/Queries.ts | 8 + src/Common/Constants/SavedQueries.ts | 4 + src/Common/Constants/ServerIds.ts | 6 + src/Common/Constants/SparkLibrary.ts | 2 + src/Common/Constants/TagNames.ts | 1 + src/Common/Constants/TerminalQueryParams.ts | 5 + src/Common/Constants/TryCosmosExperience.ts | 5 + src/Common/Constants/Urls.ts | 4 + src/Common/Constants/index.ts | 68 ++++ 36 files changed, 316 insertions(+), 373 deletions(-) delete mode 100644 src/Common/Constants.ts create mode 100644 src/Common/Constants/AfecFeatures.ts create mode 100644 src/Common/Constants/AnalyticalStorageTtl.ts create mode 100644 src/Common/Constants/ApiEndpoints.ts create mode 100644 src/Common/Constants/ApiType.ts create mode 100644 src/Common/Constants/Areas.ts create mode 100644 src/Common/Constants/ArmApiVersions.ts create mode 100644 src/Common/Constants/ArmResourceTypes.ts create mode 100644 src/Common/Constants/BackendDefaults.ts create mode 100644 src/Common/Constants/CapabilityNames.ts create mode 100644 src/Common/Constants/CassandraBackend.ts create mode 100644 src/Common/Constants/ClientDefaults.ts create mode 100644 src/Common/Constants/CodeOfConductEndpoints.ts create mode 100644 src/Common/Constants/ConfigurationOverridesValues.ts create mode 100644 src/Common/Constants/CorrelationBackend.ts create mode 100644 src/Common/Constants/DocumentsGridMetrics.ts create mode 100644 src/Common/Constants/EndpointsRegex.ts create mode 100644 src/Common/Constants/Flights.ts create mode 100644 src/Common/Constants/HashRoutePrefixes.ts create mode 100644 src/Common/Constants/HttpHeaders.ts create mode 100644 src/Common/Constants/HttpStatusCodes.ts create mode 100644 src/Common/Constants/KeyCodes.ts create mode 100644 src/Common/Constants/MongoDBAccounts.ts create mode 100644 src/Common/Constants/NormalizedEventKey.ts create mode 100644 src/Common/Constants/Notebook.ts create mode 100644 src/Common/Constants/OfferVersions.ts create mode 100644 src/Common/Constants/Queries.ts create mode 100644 src/Common/Constants/SavedQueries.ts create mode 100644 src/Common/Constants/ServerIds.ts create mode 100644 src/Common/Constants/SparkLibrary.ts create mode 100644 src/Common/Constants/TagNames.ts create mode 100644 src/Common/Constants/TerminalQueryParams.ts create mode 100644 src/Common/Constants/TryCosmosExperience.ts create mode 100644 src/Common/Constants/Urls.ts create mode 100644 src/Common/Constants/index.ts diff --git a/.eslintignore b/.eslintignore index 7a5d06bbf..33de7912c 100644 --- a/.eslintignore +++ b/.eslintignore @@ -6,7 +6,6 @@ src/Api/Apis.ts src/AuthType.ts src/Bindings/BindingHandlersRegisterer.ts src/Bindings/ReactBindingHandler.ts -src/Common/Constants.ts src/Common/CosmosClient.test.ts src/Common/CosmosClient.ts src/Common/DataAccessUtilityBase.test.ts diff --git a/src/Common/Constants.ts b/src/Common/Constants.ts deleted file mode 100644 index cbdd2da8e..000000000 --- a/src/Common/Constants.ts +++ /dev/null @@ -1,372 +0,0 @@ -export class CodeOfConductEndpoints { - public static privacyStatement: string = "https://aka.ms/ms-privacy-policy"; - public static codeOfConduct: string = "https://aka.ms/cosmos-code-of-conduct"; - public static termsOfUse: string = "https://aka.ms/ms-terms-of-use"; -} - -export class EndpointsRegex { - public static readonly cassandra = [ - "AccountEndpoint=(.*).cassandra.cosmosdb.azure.com", - "HostName=(.*).cassandra.cosmos.azure.com", - ]; - public static readonly mongo = "mongodb://.*:(.*)@(.*).documents.azure.com"; - public static readonly mongoCompute = "mongodb://.*:(.*)@(.*).mongo.cosmos.azure.com"; - public static readonly sql = "AccountEndpoint=https://(.*).documents.azure.com"; - public static readonly table = "TableEndpoint=https://(.*).table.cosmosdb.azure.com"; -} - -export class ApiEndpoints { - public static runtimeProxy: string = "/api/RuntimeProxy"; - public static guestRuntimeProxy: string = "/api/guest/RuntimeProxy"; -} - -export class ServerIds { - public static localhost: string = "localhost"; - public static blackforest: string = "blackforest"; - public static fairfax: string = "fairfax"; - public static mooncake: string = "mooncake"; - public static productionPortal: string = "prod"; - public static dev: string = "dev"; -} - -export class ArmApiVersions { - public static readonly documentDB: string = "2015-11-06"; - public static readonly arcadia: string = "2019-06-01-preview"; - public static readonly arcadiaLivy: string = "2019-11-01-preview"; - public static readonly arm: string = "2015-11-01"; - public static readonly armFeatures: string = "2014-08-01-preview"; - public static readonly publicVersion = "2020-04-01"; -} - -export class ArmResourceTypes { - public static readonly notebookWorkspaces = "Microsoft.DocumentDB/databaseAccounts/notebookWorkspaces"; - public static readonly synapseWorkspaces = "Microsoft.Synapse/workspaces"; -} - -export class BackendDefaults { - public static partitionKeyKind = "Hash"; - public static singlePartitionStorageInGb: string = "10"; - public static multiPartitionStorageInGb: string = "100"; - public static maxChangeFeedRetentionDuration: number = 10; - public static partitionKeyVersion = 2; -} - -export class ClientDefaults { - public static requestTimeoutMs: number = 60000; - public static portalCacheTimeoutMs: number = 10000; - public static errorNotificationTimeoutMs: number = 5000; - public static copyHelperTimeoutMs: number = 2000; - public static waitForDOMElementMs: number = 500; - public static cacheBustingTimeoutMs: number = - 10 /** minutes **/ * 60 /** to seconds **/ * 1000 /** to milliseconds **/; - public static databaseThroughputIncreaseFactor: number = 100; - public static readonly arcadiaTokenRefreshInterval: number = - 20 /** minutes **/ * 60 /** to seconds **/ * 1000 /** to milliseconds **/; - public static readonly arcadiaTokenRefreshIntervalPaddingMs: number = 2000; -} - -export enum AccountKind { - DocumentDB = "DocumentDB", - MongoDB = "MongoDB", - Parse = "Parse", - GlobalDocumentDB = "GlobalDocumentDB", - Default = "DocumentDB", -} - -export class CorrelationBackend { - public static Url: string = "https://aka.ms/cosmosdbanalytics"; -} - -export class CapabilityNames { - public static EnableTable: string = "EnableTable"; - public static EnableGremlin: string = "EnableGremlin"; - public static EnableCassandra: string = "EnableCassandra"; - public static EnableAutoScale: string = "EnableAutoScale"; - public static readonly EnableNotebooks: string = "EnableNotebooks"; - public static readonly EnableStorageAnalytics: string = "EnableStorageAnalytics"; - public static readonly EnableMongo: string = "EnableMongo"; - public static readonly EnableServerless: string = "EnableServerless"; -} - -// flight names returned from the portal are always lowercase -export class Flights { - public static readonly SettingsV2 = "settingsv2"; - public static readonly MongoIndexEditor = "mongoindexeditor"; - public static readonly MongoIndexing = "mongoindexing"; - public static readonly AutoscaleTest = "autoscaletest"; - public static readonly PartitionKeyTest = "partitionkeytest"; - public static readonly PKPartitionKeyTest = "pkpartitionkeytest"; -} - -export class AfecFeatures { - public static readonly Spark = "spark-public-preview"; - public static readonly Notebooks = "sparknotebooks-public-preview"; - public static readonly StorageAnalytics = "storageanalytics-public-preview"; -} - -export class TagNames { - public static defaultExperience: string = "defaultExperience"; -} - -export class MongoDBAccounts { - public static protocol: string = "https"; - public static defaultPort: string = "10255"; -} - -export enum MongoBackendEndpointType { - local, - remote, -} - -// TODO: 435619 Add default endpoints per cloud and use regional only when available -export class CassandraBackend { - public static readonly createOrDeleteApi: string = "api/cassandra/createordelete"; - public static readonly guestCreateOrDeleteApi: string = "api/guest/cassandra/createordelete"; - public static readonly queryApi: string = "api/cassandra"; - public static readonly guestQueryApi: string = "api/guest/cassandra"; - public static readonly keysApi: string = "api/cassandra/keys"; - public static readonly guestKeysApi: string = "api/guest/cassandra/keys"; - public static readonly schemaApi: string = "api/cassandra/schema"; - public static readonly guestSchemaApi: string = "api/guest/cassandra/schema"; -} - -export class Queries { - public static CustomPageOption: string = "custom"; - public static UnlimitedPageOption: string = "unlimited"; - public static itemsPerPage: number = 100; - public static unlimitedItemsPerPage: number = 100; // TODO: Figure out appropriate value so it works for accounts with a large number of partitions - - public static QueryEditorMinHeightRatio: number = 0.1; - public static QueryEditorMaxHeightRatio: number = 0.4; - public static readonly DefaultMaxDegreeOfParallelism = 6; -} - -export class SavedQueries { - public static readonly CollectionName: string = "___Query"; - public static readonly DatabaseName: string = "___Cosmos"; - public static readonly OfferThroughput: number = 400; - public static readonly PartitionKeyProperty: string = "id"; -} - -export class DocumentsGridMetrics { - public static DocumentsPerPage: number = 100; - public static IndividualRowHeight: number = 34; - public static BufferHeight: number = 28; - public static SplitterMinWidth: number = 200; - public static SplitterMaxWidth: number = 360; - - public static DocumentEditorMinWidthRatio: number = 0.2; - public static DocumentEditorMaxWidthRatio: number = 0.4; -} - -export class Areas { - public static ResourceTree: string = "Resource Tree"; - public static ContextualPane: string = "Contextual Pane"; - public static Tab: string = "Tab"; - public static ShareDialog: string = "Share Access Dialog"; - public static Notebook: string = "Notebook"; -} - -export class HttpHeaders { - public static activityId: string = "x-ms-activity-id"; - public static apiType: string = "x-ms-cosmos-apitype"; - public static authorization: string = "authorization"; - public static collectionIndexTransformationProgress: string = - "x-ms-documentdb-collection-index-transformation-progress"; - public static continuation: string = "x-ms-continuation"; - public static correlationRequestId: string = "x-ms-correlation-request-id"; - public static enableScriptLogging: string = "x-ms-documentdb-script-enable-logging"; - public static guestAccessToken: string = "x-ms-encrypted-auth-token"; - public static getReadOnlyKey: string = "x-ms-get-read-only-key"; - public static connectionString: string = "x-ms-connection-string"; - public static msDate: string = "x-ms-date"; - public static location: string = "Location"; - public static contentType: string = "Content-Type"; - public static offerReplacePending: string = "x-ms-offer-replace-pending"; - public static user: string = "x-ms-user"; - public static populatePartitionStatistics: string = "x-ms-documentdb-populatepartitionstatistics"; - public static queryMetrics: string = "x-ms-documentdb-query-metrics"; - public static requestCharge: string = "x-ms-request-charge"; - public static resourceQuota: string = "x-ms-resource-quota"; - public static resourceUsage: string = "x-ms-resource-usage"; - public static retryAfterMs: string = "x-ms-retry-after-ms"; - public static scriptLogResults: string = "x-ms-documentdb-script-log-results"; - public static populateCollectionThroughputInfo = "x-ms-documentdb-populatecollectionthroughputinfo"; - public static supportSpatialLegacyCoordinates = "x-ms-documentdb-supportspatiallegacycoordinates"; - public static usePolygonsSmallerThanAHemisphere = "x-ms-documentdb-usepolygonssmallerthanahemisphere"; - public static autoPilotThroughput = "autoscaleSettings"; - public static autoPilotThroughputSDK = "x-ms-cosmos-offer-autopilot-settings"; - public static partitionKey: string = "x-ms-documentdb-partitionkey"; - public static migrateOfferToManualThroughput: string = "x-ms-cosmos-migrate-offer-to-manual-throughput"; - public static migrateOfferToAutopilot: string = "x-ms-cosmos-migrate-offer-to-autopilot"; -} - -export class ApiType { - // Mapped to hexadecimal values in the backend - public static readonly MongoDB: number = 1; - public static readonly Gremlin: number = 2; - public static readonly Cassandra: number = 4; - public static readonly Table: number = 8; - public static readonly SQL: number = 16; -} - -export class HttpStatusCodes { - public static readonly OK: number = 200; - public static readonly Created: number = 201; - public static readonly Accepted: number = 202; - public static readonly NoContent: number = 204; - public static readonly NotModified: number = 304; - public static readonly Unauthorized: number = 401; - public static readonly Forbidden: number = 403; - public static readonly NotFound: number = 404; - public static readonly TooManyRequests: number = 429; - public static readonly Conflict: number = 409; - - public static readonly InternalServerError: number = 500; - public static readonly BadGateway: number = 502; - public static readonly ServiceUnavailable: number = 503; - public static readonly GatewayTimeout: number = 504; - - public static readonly RetryableStatusCodes: number[] = [ - HttpStatusCodes.TooManyRequests, - HttpStatusCodes.InternalServerError, // TODO: Handle all 500s on Portal backend and remove from retries list - HttpStatusCodes.BadGateway, - HttpStatusCodes.ServiceUnavailable, - HttpStatusCodes.GatewayTimeout, - ]; -} - -export class Urls { - public static feedbackEmail = "https://aka.ms/cosmosdbfeedback?subject=Cosmos%20DB%20Data%20Explorer%20Feedback"; - public static autoscaleMigration = "https://aka.ms/cosmos-autoscale-migration"; - public static freeTierInformation = "https://aka.ms/cosmos-free-tier"; - public static cosmosPricing = "https://aka.ms/azure-cosmos-db-pricing"; -} - -export class HashRoutePrefixes { - public static databases: string = "/dbs/{db_id}"; - public static collections: string = "/dbs/{db_id}/colls/{coll_id}"; - public static sprocHash: string = "/sprocs/"; - public static sprocs: string = HashRoutePrefixes.collections + HashRoutePrefixes.sprocHash + "{sproc_id}"; - public static docs: string = HashRoutePrefixes.collections + "/docs/{doc_id}/"; - public static conflicts: string = HashRoutePrefixes.collections + "/conflicts"; - - public static databasesWithId(databaseId: string): string { - return this.databases.replace("{db_id}", databaseId).replace("/", ""); // strip the first slash since hasher adds it - } - - public static collectionsWithIds(databaseId: string, collectionId: string): string { - const transformedDatabasePrefix: string = this.collections.replace("{db_id}", databaseId); - - return transformedDatabasePrefix.replace("{coll_id}", collectionId).replace("/", ""); // strip the first slash since hasher adds it - } - - public static sprocWithIds( - databaseId: string, - collectionId: string, - sprocId: string, - stripFirstSlash: boolean = true - ): string { - const transformedDatabasePrefix: string = this.sprocs.replace("{db_id}", databaseId); - - const transformedSprocRoute: string = transformedDatabasePrefix - .replace("{coll_id}", collectionId) - .replace("{sproc_id}", sprocId); - if (!!stripFirstSlash) { - return transformedSprocRoute.replace("/", ""); // strip the first slash since hasher adds it - } - - return transformedSprocRoute; - } - - public static conflictsWithIds(databaseId: string, collectionId: string) { - const transformedDatabasePrefix: string = this.conflicts.replace("{db_id}", databaseId); - - return transformedDatabasePrefix.replace("{coll_id}", collectionId).replace("/", ""); // strip the first slash since hasher adds it; - } - - public static docsWithIds(databaseId: string, collectionId: string, docId: string) { - const transformedDatabasePrefix: string = this.docs.replace("{db_id}", databaseId); - - return transformedDatabasePrefix.replace("{coll_id}", collectionId).replace("{doc_id}", docId).replace("/", ""); // strip the first slash since hasher adds it - } -} - -export class ConfigurationOverridesValues { - public static IsBsonSchemaV2: string = "true"; -} - -export class KeyCodes { - public static Space: number = 32; - public static Enter: number = 13; - public static Escape: number = 27; - public static UpArrow: number = 38; - public static DownArrow: number = 40; - public static LeftArrow: number = 37; - public static RightArrow: number = 39; - public static Tab: number = 9; -} - -// Normalized per: https://www.w3.org/TR/uievents-key/#named-key-attribute-values -export class NormalizedEventKey { - public static readonly Space = " "; - public static readonly Enter = "Enter"; - public static readonly Escape = "Escape"; - public static readonly UpArrow = "ArrowUp"; - public static readonly DownArrow = "ArrowDown"; - public static readonly LeftArrow = "ArrowLeft"; - public static readonly RightArrow = "ArrowRight"; -} - -export class TryCosmosExperience { - public static extendUrl: string = "https://trycosmosdb.azure.com/api/resource/extendportal?userId={0}"; - public static deleteUrl: string = "https://trycosmosdb.azure.com/api/resource/deleteportal?userId={0}"; - public static collectionsPerAccount: number = 3; - public static maxRU: number = 5000; - public static defaultRU: number = 3000; -} - -export class OfferVersions { - public static V1: string = "V1"; - public static V2: string = "V2"; -} - -export enum ConflictOperationType { - Replace = "replace", - Create = "create", - Delete = "delete", -} - -export const EmulatorMasterKey = - //[SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Well known public masterKey for emulator")] - "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="; - -// A variable @MyVariable defined in Constants.less is accessible as StyleConstants.MyVariable -export const StyleConstants = require("less-vars-loader!../../less/Common/Constants.less"); - -export class Notebook { - public static readonly defaultBasePath = "./notebooks"; - public static readonly heartbeatDelayMs = 5000; - public static readonly kernelRestartInitialDelayMs = 1000; - public static readonly kernelRestartMaxDelayMs = 20000; - public static readonly autoSaveIntervalMs = 120000; -} - -export class SparkLibrary { - public static readonly nameMinLength = 3; - public static readonly nameMaxLength = 63; -} - -export class AnalyticalStorageTtl { - public static readonly Days90: number = 7776000; - public static readonly Infinite: number = -1; - public static readonly Disabled: number = 0; -} - -export class TerminalQueryParams { - public static readonly Terminal = "terminal"; - public static readonly Server = "server"; - public static readonly Token = "token"; - public static readonly SubscriptionId = "subscriptionId"; - public static readonly TerminalEndpoint = "terminalEndpoint"; -} diff --git a/src/Common/Constants/AfecFeatures.ts b/src/Common/Constants/AfecFeatures.ts new file mode 100644 index 000000000..7c0881e79 --- /dev/null +++ b/src/Common/Constants/AfecFeatures.ts @@ -0,0 +1,3 @@ +export const Spark = "spark-public-preview"; +export const Notebooks = "sparknotebooks-public-preview"; +export const StorageAnalytics = "storageanalytics-public-preview"; \ No newline at end of file diff --git a/src/Common/Constants/AnalyticalStorageTtl.ts b/src/Common/Constants/AnalyticalStorageTtl.ts new file mode 100644 index 000000000..5e6617f90 --- /dev/null +++ b/src/Common/Constants/AnalyticalStorageTtl.ts @@ -0,0 +1,3 @@ +export const Days90 = 7776000; +export const Infinite = -1; +export const Disabled = 0; \ No newline at end of file diff --git a/src/Common/Constants/ApiEndpoints.ts b/src/Common/Constants/ApiEndpoints.ts new file mode 100644 index 000000000..c9f976d3b --- /dev/null +++ b/src/Common/Constants/ApiEndpoints.ts @@ -0,0 +1,2 @@ +export const runtimeProxy = "/api/RuntimeProxy"; +export const guestRuntimeProxy = "/api/guest/RuntimeProxy"; \ No newline at end of file diff --git a/src/Common/Constants/ApiType.ts b/src/Common/Constants/ApiType.ts new file mode 100644 index 000000000..ad79a966b --- /dev/null +++ b/src/Common/Constants/ApiType.ts @@ -0,0 +1,6 @@ +// Mapped to hexadecimal values in the backend +export const MongoDB = 1; +export const Gremlin = 2; +export const Cassandra = 4; +export const Table = 8; +export const SQL = 16; \ No newline at end of file diff --git a/src/Common/Constants/Areas.ts b/src/Common/Constants/Areas.ts new file mode 100644 index 000000000..8690f3f92 --- /dev/null +++ b/src/Common/Constants/Areas.ts @@ -0,0 +1,5 @@ +export const ResourceTree = "Resource Tree"; +export const ContextualPane = "Contextual Pane"; +export const Tab = "Tab"; +export const ShareDialog = "Share Access Dialog"; +export const Notebook = "Notebook"; \ No newline at end of file diff --git a/src/Common/Constants/ArmApiVersions.ts b/src/Common/Constants/ArmApiVersions.ts new file mode 100644 index 000000000..8e9011c07 --- /dev/null +++ b/src/Common/Constants/ArmApiVersions.ts @@ -0,0 +1,6 @@ +export const documentDB = "2015-11-06"; +export const arcadia = "2019-06-01-preview"; +export const arcadiaLivy = "2019-11-01-preview"; +export const arm = "2015-11-01"; +export const armFeatures = "2014-08-01-preview"; +export const publicVersion = "2020-04-01"; \ No newline at end of file diff --git a/src/Common/Constants/ArmResourceTypes.ts b/src/Common/Constants/ArmResourceTypes.ts new file mode 100644 index 000000000..f0fa2b513 --- /dev/null +++ b/src/Common/Constants/ArmResourceTypes.ts @@ -0,0 +1,2 @@ +export const notebookWorkspaces = "Microsoft.DocumentDB/databaseAccounts/notebookWorkspaces"; +export const synapseWorkspaces = "Microsoft.Synapse/workspaces"; \ No newline at end of file diff --git a/src/Common/Constants/BackendDefaults.ts b/src/Common/Constants/BackendDefaults.ts new file mode 100644 index 000000000..b28853a30 --- /dev/null +++ b/src/Common/Constants/BackendDefaults.ts @@ -0,0 +1,5 @@ +export const partitionKeyKind = "Hash"; +export const singlePartitionStorageInGb = "10"; +export const multiPartitionStorageInGb = "100"; +export const maxChangeFeedRetentionDuration = 10; +export const partitionKeyVersion = 2; \ No newline at end of file diff --git a/src/Common/Constants/CapabilityNames.ts b/src/Common/Constants/CapabilityNames.ts new file mode 100644 index 000000000..095509dd7 --- /dev/null +++ b/src/Common/Constants/CapabilityNames.ts @@ -0,0 +1,8 @@ +export const EnableTable = "EnableTable"; +export const EnableGremlin = "EnableGremlin"; +export const EnableCassandra = "EnableCassandra"; +export const EnableAutoScale = "EnableAutoScale"; +export const EnableNotebooks = "EnableNotebooks"; +export const EnableStorageAnalytics = "EnableStorageAnalytics"; +export const EnableMongo = "EnableMongo"; +export const EnableServerless = "EnableServerless"; \ No newline at end of file diff --git a/src/Common/Constants/CassandraBackend.ts b/src/Common/Constants/CassandraBackend.ts new file mode 100644 index 000000000..0c0f9626d --- /dev/null +++ b/src/Common/Constants/CassandraBackend.ts @@ -0,0 +1,9 @@ +// TODO: 435619 Add default endpoints per cloud and use regional only when available +export const createOrDeleteApi = "api/cassandra/createordelete"; +export const guestCreateOrDeleteApi = "api/guest/cassandra/createordelete"; +export const queryApi = "api/cassandra"; +export const guestQueryApi = "api/guest/cassandra"; +export const keysApi = "api/cassandra/keys"; +export const guestKeysApi = "api/guest/cassandra/keys"; +export const schemaApi = "api/cassandra/schema"; +export const guestSchemaApi = "api/guest/cassandra/schema"; \ No newline at end of file diff --git a/src/Common/Constants/ClientDefaults.ts b/src/Common/Constants/ClientDefaults.ts new file mode 100644 index 000000000..3e7eb4151 --- /dev/null +++ b/src/Common/Constants/ClientDefaults.ts @@ -0,0 +1,11 @@ +export const requestTimeoutMs = 60000; +export const portalCacheTimeoutMs = 10000; +export const errorNotificationTimeoutMs = 5000; +export const copyHelperTimeoutMs = 2000; +export const waitForDOMElementMs = 500; +export const cacheBustingTimeoutMs = + 10 /** minutes **/ * 60 /** to seconds **/ * 1000 /** to milliseconds **/; +export const databaseThroughputIncreaseFactor = 100; +export const arcadiaTokenRefreshInterval = + 20 /** minutes **/ * 60 /** to seconds **/ * 1000 /** to milliseconds **/; +export const arcadiaTokenRefreshIntervalPaddingMs = 2000; \ No newline at end of file diff --git a/src/Common/Constants/CodeOfConductEndpoints.ts b/src/Common/Constants/CodeOfConductEndpoints.ts new file mode 100644 index 000000000..a5c47f70a --- /dev/null +++ b/src/Common/Constants/CodeOfConductEndpoints.ts @@ -0,0 +1,3 @@ +export const privacyStatement = "https://aka.ms/ms-privacy-policy"; +export const codeOfConduct = "https://aka.ms/cosmos-code-of-conduct"; +export const termsOfUse = "https://aka.ms/ms-terms-of-use"; \ No newline at end of file diff --git a/src/Common/Constants/ConfigurationOverridesValues.ts b/src/Common/Constants/ConfigurationOverridesValues.ts new file mode 100644 index 000000000..e68935c2e --- /dev/null +++ b/src/Common/Constants/ConfigurationOverridesValues.ts @@ -0,0 +1 @@ +export const IsBsonSchemaV2 = "true"; \ No newline at end of file diff --git a/src/Common/Constants/CorrelationBackend.ts b/src/Common/Constants/CorrelationBackend.ts new file mode 100644 index 000000000..a9459e60f --- /dev/null +++ b/src/Common/Constants/CorrelationBackend.ts @@ -0,0 +1 @@ +export const Url = "https://aka.ms/cosmosdbanalytics"; \ No newline at end of file diff --git a/src/Common/Constants/DocumentsGridMetrics.ts b/src/Common/Constants/DocumentsGridMetrics.ts new file mode 100644 index 000000000..d001af399 --- /dev/null +++ b/src/Common/Constants/DocumentsGridMetrics.ts @@ -0,0 +1,8 @@ +export const DocumentsPerPage = 100; +export const IndividualRowHeight = 34; +export const BufferHeight = 28; +export const SplitterMinWidth = 200; +export const SplitterMaxWidth = 360; + +export const DocumentEditorMinWidthRatio = 0.2; +export const DocumentEditorMaxWidthRatio = 0.4; \ No newline at end of file diff --git a/src/Common/Constants/EndpointsRegex.ts b/src/Common/Constants/EndpointsRegex.ts new file mode 100644 index 000000000..c6a8c54e4 --- /dev/null +++ b/src/Common/Constants/EndpointsRegex.ts @@ -0,0 +1,8 @@ +export const cassandra = [ + "AccountEndpoint=(.*).cassandra.cosmosdb.azure.com", + "HostName=(.*).cassandra.cosmos.azure.com", +]; +export const mongo = "mongodb://.*:(.*)@(.*).documents.azure.com"; +export const mongoCompute = "mongodb://.*:(.*)@(.*).mongo.cosmos.azure.com"; +export const sql = "AccountEndpoint=https://(.*).documents.azure.com"; +export const table = "TableEndpoint=https://(.*).table.cosmosdb.azure.com"; diff --git a/src/Common/Constants/Flights.ts b/src/Common/Constants/Flights.ts new file mode 100644 index 000000000..6725535d9 --- /dev/null +++ b/src/Common/Constants/Flights.ts @@ -0,0 +1,7 @@ +// flight names returned from the portal are always lowercase +export const SettingsV2 = "settingsv2"; +export const MongoIndexEditor = "mongoindexeditor"; +export const MongoIndexing = "mongoindexing"; +export const AutoscaleTest = "autoscaletest"; +export const PartitionKeyTest = "partitionkeytest"; +export const PKPartitionKeyTest = "pkpartitionkeytest"; \ No newline at end of file diff --git a/src/Common/Constants/HashRoutePrefixes.ts b/src/Common/Constants/HashRoutePrefixes.ts new file mode 100644 index 000000000..92f8751b2 --- /dev/null +++ b/src/Common/Constants/HashRoutePrefixes.ts @@ -0,0 +1,45 @@ +export const databases = "/dbs/{db_id}"; +export const collections = "/dbs/{db_id}/colls/{coll_id}"; +export const sprocHash = "/sprocs/"; +export const sprocs = collections + sprocHash + "{sproc_id}"; +export const docs = collections + "/docs/{doc_id}/"; +export const conflicts = collections + "/conflicts"; + +export const databasesWithId = (databaseId: string) => { + return databases.replace("{db_id}", databaseId).replace("/", ""); // strip the first slash since hasher adds it +} + +export const collectionsWithIds = (databaseId: string, collectionId: string) => { + const transformedDatabasePrefix = collections.replace("{db_id}", databaseId); + + return transformedDatabasePrefix.replace("{coll_id}", collectionId).replace("/", ""); // strip the first slash since hasher adds it +} + +export const sprocWithIds = ( + databaseId: string, + collectionId: string, + sprocId: string, + stripFirstSlash = true +) => { + const transformedDatabasePrefix = sprocs.replace("{db_id}", databaseId); + + const transformedSprocRoute = transformedDatabasePrefix + .replace("{coll_id}", collectionId) + .replace("{sproc_id}", sprocId); + if (stripFirstSlash) { + return transformedSprocRoute.replace("/", ""); // strip the first slash since hasher adds it + } + + return transformedSprocRoute; +} + +export const conflictsWithIds = (databaseId: string, collectionId: string) => { + const transformedDatabasePrefix = conflicts.replace("{db_id}", databaseId); + + return transformedDatabasePrefix.replace("{coll_id}", collectionId).replace("/", ""); // strip the first slash since hasher adds it; +} + +export const docsWithIds = (databaseId: string, collectionId: string, docId: string): string => { + const transformedDatabasePrefix = docs.replace("{db_id}", databaseId); + return transformedDatabasePrefix.replace("{coll_id}", collectionId).replace("{doc_id}", docId).replace("/", ""); // strip the first slash since hasher adds it +} \ No newline at end of file diff --git a/src/Common/Constants/HttpHeaders.ts b/src/Common/Constants/HttpHeaders.ts new file mode 100644 index 000000000..ccd6dd617 --- /dev/null +++ b/src/Common/Constants/HttpHeaders.ts @@ -0,0 +1,31 @@ +export const activityId = "x-ms-activity-id"; +export const apiType = "x-ms-cosmos-apitype"; +export const authorization = "authorization"; +export const collectionIndexTransformationProgress = + "x-ms-documentdb-collection-index-transformation-progress"; +export const continuation = "x-ms-continuation"; +export const correlationRequestId = "x-ms-correlation-request-id"; +export const enableScriptLogging = "x-ms-documentdb-script-enable-logging"; +export const guestAccessToken = "x-ms-encrypted-auth-token"; +export const getReadOnlyKey = "x-ms-get-read-only-key"; +export const connectionString = "x-ms-connection-string"; +export const msDate = "x-ms-date"; +export const location = "Location"; +export const contentType = "Content-Type"; +export const offerReplacePending = "x-ms-offer-replace-pending"; +export const user = "x-ms-user"; +export const populatePartitionStatistics = "x-ms-documentdb-populatepartitionstatistics"; +export const queryMetrics = "x-ms-documentdb-query-metrics"; +export const requestCharge = "x-ms-request-charge"; +export const resourceQuota = "x-ms-resource-quota"; +export const resourceUsage = "x-ms-resource-usage"; +export const retryAfterMs = "x-ms-retry-after-ms"; +export const scriptLogResults = "x-ms-documentdb-script-log-results"; +export const populateCollectionThroughputInfo = "x-ms-documentdb-populatecollectionthroughputinfo"; +export const supportSpatialLegacyCoordinates = "x-ms-documentdb-supportspatiallegacycoordinates"; +export const usePolygonsSmallerThanAHemisphere = "x-ms-documentdb-usepolygonssmallerthanahemisphere"; +export const autoPilotThroughput = "autoscaleSettings"; +export const autoPilotThroughputSDK = "x-ms-cosmos-offer-autopilot-settings"; +export const partitionKey = "x-ms-documentdb-partitionkey"; +export const migrateOfferToManualThroughput = "x-ms-cosmos-migrate-offer-to-manual-throughput"; +export const migrateOfferToAutopilot = "x-ms-cosmos-migrate-offer-to-autopilot"; \ No newline at end of file diff --git a/src/Common/Constants/HttpStatusCodes.ts b/src/Common/Constants/HttpStatusCodes.ts new file mode 100644 index 000000000..c436b7544 --- /dev/null +++ b/src/Common/Constants/HttpStatusCodes.ts @@ -0,0 +1,23 @@ +export const OK = 200; +export const Created = 201; +export const Accepted = 202; +export const NoContent = 204; +export const NotModified = 304; +export const Unauthorized = 401; +export const Forbidden = 403; +export const NotFound = 404; +export const TooManyRequests = 429; +export const Conflict = 409; + +export const InternalServerError = 500; +export const BadGateway = 502; +export const ServiceUnavailable = 503; +export const GatewayTimeout = 504; + +export const RetryableStatusCodes: number[] = [ + TooManyRequests, + InternalServerError, // TODO: Handle all 500s on Portal backend and remove from retries list + BadGateway, + ServiceUnavailable, + GatewayTimeout, +]; \ No newline at end of file diff --git a/src/Common/Constants/KeyCodes.ts b/src/Common/Constants/KeyCodes.ts new file mode 100644 index 000000000..0f7e36ebc --- /dev/null +++ b/src/Common/Constants/KeyCodes.ts @@ -0,0 +1,8 @@ +export const Space = 32; +export const Enter = 13; +export const Escape = 27; +export const UpArrow = 38; +export const DownArrow = 40; +export const LeftArrow = 37; +export const RightArrow = 39; +export const Tab = 9; \ No newline at end of file diff --git a/src/Common/Constants/MongoDBAccounts.ts b/src/Common/Constants/MongoDBAccounts.ts new file mode 100644 index 000000000..80005a15f --- /dev/null +++ b/src/Common/Constants/MongoDBAccounts.ts @@ -0,0 +1,2 @@ +export const protocol = "https"; +export const defaultPort = "10255"; \ No newline at end of file diff --git a/src/Common/Constants/NormalizedEventKey.ts b/src/Common/Constants/NormalizedEventKey.ts new file mode 100644 index 000000000..421a09be2 --- /dev/null +++ b/src/Common/Constants/NormalizedEventKey.ts @@ -0,0 +1,8 @@ +// Normalized per: https://www.w3.org/TR/uievents-key/#named-key-attribute-values +export const Space = " "; +export const Enter = "Enter"; +export const Escape = "Escape"; +export const UpArrow = "ArrowUp"; +export const DownArrow = "ArrowDown"; +export const LeftArrow = "ArrowLeft"; +export const RightArrow = "ArrowRight"; \ No newline at end of file diff --git a/src/Common/Constants/Notebook.ts b/src/Common/Constants/Notebook.ts new file mode 100644 index 000000000..3c44459df --- /dev/null +++ b/src/Common/Constants/Notebook.ts @@ -0,0 +1,5 @@ +export const defaultBasePath = "./notebooks"; +export const heartbeatDelayMs = 5000; +export const kernelRestartInitialDelayMs = 1000; +export const kernelRestartMaxDelayMs = 20000; +export const autoSaveIntervalMs = 120000; \ No newline at end of file diff --git a/src/Common/Constants/OfferVersions.ts b/src/Common/Constants/OfferVersions.ts new file mode 100644 index 000000000..dd3295d5e --- /dev/null +++ b/src/Common/Constants/OfferVersions.ts @@ -0,0 +1,3 @@ + +export const V1 = "V1"; +export const V2 = "V2"; \ No newline at end of file diff --git a/src/Common/Constants/Queries.ts b/src/Common/Constants/Queries.ts new file mode 100644 index 000000000..f43a37c38 --- /dev/null +++ b/src/Common/Constants/Queries.ts @@ -0,0 +1,8 @@ +export const CustomPageOption = "custom"; +export const UnlimitedPageOption = "unlimited"; +export const itemsPerPage = 100; +export const unlimitedItemsPerPage = 100; // TODO: Figure out appropriate value so it works for accounts with a large number of partitions + +export const QueryEditorMinHeightRatio = 0.1; +export const QueryEditorMaxHeightRatio = 0.4; +export const DefaultMaxDegreeOfParallelism = 6; \ No newline at end of file diff --git a/src/Common/Constants/SavedQueries.ts b/src/Common/Constants/SavedQueries.ts new file mode 100644 index 000000000..fe848f4b0 --- /dev/null +++ b/src/Common/Constants/SavedQueries.ts @@ -0,0 +1,4 @@ +export const CollectionName = "___Query"; +export const DatabaseName = "___Cosmos"; +export const OfferThroughput = 400; +export const PartitionKeyProperty = "id"; \ No newline at end of file diff --git a/src/Common/Constants/ServerIds.ts b/src/Common/Constants/ServerIds.ts new file mode 100644 index 000000000..57d5cba8c --- /dev/null +++ b/src/Common/Constants/ServerIds.ts @@ -0,0 +1,6 @@ +export const localhost = "localhost"; +export const blackforest = "blackforest"; +export const fairfax = "fairfax"; +export const mooncake = "mooncake"; +export const productionPortal = "prod"; +export const dev = "dev"; \ No newline at end of file diff --git a/src/Common/Constants/SparkLibrary.ts b/src/Common/Constants/SparkLibrary.ts new file mode 100644 index 000000000..ddfb879bb --- /dev/null +++ b/src/Common/Constants/SparkLibrary.ts @@ -0,0 +1,2 @@ +export const nameMinLength = 3; +export const nameMaxLength = 63; \ No newline at end of file diff --git a/src/Common/Constants/TagNames.ts b/src/Common/Constants/TagNames.ts new file mode 100644 index 000000000..8db73a2b5 --- /dev/null +++ b/src/Common/Constants/TagNames.ts @@ -0,0 +1 @@ +export const defaultExperience = "defaultExperience"; \ No newline at end of file diff --git a/src/Common/Constants/TerminalQueryParams.ts b/src/Common/Constants/TerminalQueryParams.ts new file mode 100644 index 000000000..e7cd7e121 --- /dev/null +++ b/src/Common/Constants/TerminalQueryParams.ts @@ -0,0 +1,5 @@ +export const Terminal = "terminal"; +export const Server = "server"; +export const Token = "token"; +export const SubscriptionId = "subscriptionId"; +export const TerminalEndpoint = "terminalEndpoint"; \ No newline at end of file diff --git a/src/Common/Constants/TryCosmosExperience.ts b/src/Common/Constants/TryCosmosExperience.ts new file mode 100644 index 000000000..90ebf4553 --- /dev/null +++ b/src/Common/Constants/TryCosmosExperience.ts @@ -0,0 +1,5 @@ +export const extendUrl = "https://trycosmosdb.azure.com/api/resource/extendportal?userId={0}"; +export const deleteUrl = "https://trycosmosdb.azure.com/api/resource/deleteportal?userId={0}"; +export const collectionsPerAccount = 3; +export const maxRU = 5000; +export const defaultRU = 3000; \ No newline at end of file diff --git a/src/Common/Constants/Urls.ts b/src/Common/Constants/Urls.ts new file mode 100644 index 000000000..d85623673 --- /dev/null +++ b/src/Common/Constants/Urls.ts @@ -0,0 +1,4 @@ +export const feedbackEmail = "https://aka.ms/cosmosdbfeedback?subject=Cosmos%20DB%20Data%20Explorer%20Feedback"; +export const autoscaleMigration = "https://aka.ms/cosmos-autoscale-migration"; +export const freeTierInformation = "https://aka.ms/cosmos-free-tier"; +export const cosmosPricing = "https://aka.ms/azure-cosmos-db-pricing"; \ No newline at end of file diff --git a/src/Common/Constants/index.ts b/src/Common/Constants/index.ts new file mode 100644 index 000000000..ee34bf8a1 --- /dev/null +++ b/src/Common/Constants/index.ts @@ -0,0 +1,68 @@ +import * as AfecFeatures from './AfecFeatures'; +import * as AnalyticalStorageTtl from './AnalyticalStorageTtl'; +import * as ApiEndpoints from './ApiEndpoints'; +import * as ApiType from './ApiType'; +import * as Areas from './Areas'; +import * as ArmApiVersions from './ArmApiVersions'; +import * as ArmResourceTypes from './ArmResourceTypes'; +import * as BackendDefaults from './BackendDefaults'; +import * as CapabilityNames from './CapabilityNames'; +import * as CassandraBackend from './CassandraBackend'; +import * as ClientDefaults from './ClientDefaults'; +import * as CodeOfConductEndpoints from './CodeOfConductEndpoints'; +import * as ConfigurationOverridesValues from './ConfigurationOverridesValues'; +import * as CorrelationBackend from './CorrelationBackend'; +import * as DocumentsGridMetrics from './DocumentsGridMetrics'; +import * as EndpointsRegex from './EndpointsRegex'; +import * as Flights from './Flights'; +import * as HashRoutePrefixes from './HashRoutePrefixes'; +import * as HttpHeaders from './HttpHeaders'; +import * as HttpStatusCodes from './HttpStatusCodes'; +import * as KeyCodes from './KeyCodes'; +import * as MongoDBAccounts from './MongoDBAccounts'; +import * as NormalizedEventKey from './NormalizedEventKey'; +import * as Notebook from './Notebook'; +import * as OfferVersions from './OfferVersions'; +import * as Queries from './Queries'; +import * as SavedQueries from './SavedQueries'; +import * as ServerIds from './ServerIds'; +import * as SparkLibrary from './SparkLibrary'; +import * as TagNames from './TagNames'; +import * as TerminalQueryParams from './TerminalQueryParams'; +import * as TryCosmosExperience from './TryCosmosExperience'; +import * as Urls from './Urls'; +const StyleConstants = require("less-vars-loader!../../less/Common/Constants.less"); + +export { + StyleConstants, + SparkLibrary, ConfigurationOverridesValues, OfferVersions, AnalyticalStorageTtl, Notebook, TryCosmosExperience, NormalizedEventKey, KeyCodes, + HashRoutePrefixes, Urls, HttpStatusCodes, ApiType, HttpHeaders, Areas, + DocumentsGridMetrics, SavedQueries, Queries, CassandraBackend, MongoDBAccounts, TagNames, AfecFeatures, Flights, CorrelationBackend, CapabilityNames, ClientDefaults, BackendDefaults, ArmResourceTypes, ArmApiVersions, TerminalQueryParams, CodeOfConductEndpoints, ApiEndpoints, EndpointsRegex, ServerIds +}; + + +export enum ConflictOperationType { + Replace = "replace", + Create = "create", + Delete = "delete", +} + +export const EmulatorMasterKey = + //[SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Well known public masterKey for emulator")] + "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="; + +// A variable @MyVariable defined in Constants.less is accessible as StyleConstants.MyVariable + + +export enum AccountKind { + DocumentDB = "DocumentDB", + MongoDB = "MongoDB", + Parse = "Parse", + GlobalDocumentDB = "GlobalDocumentDB", + Default = "DocumentDB", +} + +export enum MongoBackendEndpointType { + local, + remote, +}