UNPKG

3 kBJavaScriptView Raw
1"use strict";
2/*!
3 * Copyright 2021 Google LLC
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17Object.defineProperty(exports, "__esModule", { value: true });
18exports.formatLogName = exports.assignSeverityToEntries = exports.snakecaseKeys = exports.Severity = void 0;
19/**
20 * Common construct and functions used by both Log and LogSync
21 */
22const entry_1 = require("../entry");
23const extend = require("extend");
24const arrify = require("arrify");
25var Severity;
26(function (Severity) {
27 Severity[Severity["emergency"] = 0] = "emergency";
28 Severity[Severity["alert"] = 1] = "alert";
29 Severity[Severity["critical"] = 2] = "critical";
30 Severity[Severity["error"] = 3] = "error";
31 Severity[Severity["warning"] = 4] = "warning";
32 Severity[Severity["notice"] = 5] = "notice";
33 Severity[Severity["info"] = 6] = "info";
34 Severity[Severity["debug"] = 7] = "debug";
35})(Severity = exports.Severity || (exports.Severity = {}));
36/**
37 * snakecaseKeys turns label keys from camel case to snake case.
38 * @param labels
39 */
40function snakecaseKeys(labels) {
41 for (const key in labels) {
42 const replaced = key.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
43 Object.defineProperty(labels, replaced, Object.getOwnPropertyDescriptor(labels, key));
44 if (replaced !== key) {
45 delete labels[key];
46 }
47 }
48 return labels;
49}
50exports.snakecaseKeys = snakecaseKeys;
51/**
52 * Return an array of log entries with the desired severity assigned.
53 *
54 * @private
55 *
56 * @param {object|object[]} entries - Log entries.
57 * @param {string} severity - The desired severity level.
58 */
59function assignSeverityToEntries(entries, severity) {
60 return arrify(entries).map(entry => {
61 const metadata = extend(true, {}, entry.metadata, {
62 severity,
63 });
64 return extend(new entry_1.Entry(), entry, {
65 metadata,
66 });
67 });
68}
69exports.assignSeverityToEntries = assignSeverityToEntries;
70/**
71 * Format the name of a log. A log's full name is in the format of
72 * 'projects/{projectId}/logs/{logName}'.
73 *
74 * @param projectId
75 * @param name
76 */
77function formatLogName(projectId, name) {
78 const path = 'projects/' + projectId + '/logs/';
79 name = name.replace(path, '');
80 if (decodeURIComponent(name) === name) {
81 // The name has not been encoded yet.
82 name = encodeURIComponent(name);
83 }
84 return path + name;
85}
86exports.formatLogName = formatLogName;
87//# sourceMappingURL=log-common.js.map
\No newline at end of file