Skip to content

Commit 12b5444

Browse files
authored
Merge pull request #11 from cdr/refactor
2 parents 82e2acb + 7741a7c commit 12b5444

15 files changed

+2333
-3269
lines changed

.editorconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
root = true
2+
3+
[*]
4+
indent_style = space
5+
trim_trailing_whitespace = true
6+
indent_size = 2

.eslintrc.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
parser: "@typescript-eslint/parser"
2+
env:
3+
browser: true
4+
es6: true # Map, etc.
5+
jest: true
6+
node: true
7+
8+
parserOptions:
9+
ecmaVersion: 2018
10+
sourceType: module
11+
12+
extends:
13+
- eslint:recommended
14+
- plugin:@typescript-eslint/recommended
15+
- plugin:import/recommended
16+
- plugin:import/typescript
17+
- plugin:prettier/recommended
18+
# Prettier should always be last
19+
# Removes eslint rules that conflict with prettier.
20+
- prettier
21+
22+
rules:
23+
# For overloads.
24+
no-dupe-class-members: off
25+
eqeqeq: error
26+
import/order:
27+
[error, { alphabetize: { order: "asc" }, groups: [["builtin", "external", "internal"], "parent", "sibling"] }]

.github/workflows/ci.yaml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: ci
2+
3+
on:
4+
push:
5+
branches: "**"
6+
tags-ignore: "v*"
7+
pull_request:
8+
9+
jobs:
10+
prebuild:
11+
name: Pre-build checks
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Checkout repo
15+
uses: actions/checkout@v2
16+
17+
- name: Install Node.js v12
18+
uses: actions/setup-node@v2
19+
with:
20+
node-version: "12"
21+
22+
- name: Fetch dependencies from cache
23+
id: cache-yarn
24+
uses: actions/cache@v2
25+
with:
26+
path: "**/node_modules"
27+
key: yarn-build-${{ hashFiles('**/yarn.lock') }}
28+
29+
- name: Install dependencies
30+
if: steps.cache-yarn.outputs.cache-hit != 'true'
31+
run: yarn --frozen-lockfile
32+
33+
- name: Run yarn lint
34+
run: yarn lint
35+
36+
- name: Run yarn test
37+
run: yarn test

.prettierrc.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
printWidth: 95
2+
semi: false
3+
trailingComma: all
4+
arrowParens: always

.stylelintrc.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
extends:
2+
- stylelint-config-recommended

package.json

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,33 @@
11
{
2-
"name": "@coder/logger",
3-
"description": "Beautiful logging inspired by https://github.com/uber-go/zap.",
4-
"scripts": {
5-
"prepare": "tsc",
6-
"test": "jest"
7-
},
8-
"version": "1.1.16",
9-
"main": "out/index.js",
10-
"types": "out/index.d.ts",
11-
"author": "Coder",
12-
"license": "MIT",
13-
"peerDependencies": {
14-
"@google-cloud/logging": "^4.5.2"
15-
},
16-
"devDependencies": {
17-
"@types/jest": "^24.0.16",
18-
"@types/node": "^12.6.8",
19-
"jest": "^24.8.0",
20-
"ts-jest": "^24.0.2",
21-
"tslint": "^5.18.0",
22-
"typescript": "^3.5.3"
23-
},
24-
"jest": {
25-
"moduleFileExtensions": [
26-
"js",
27-
"ts"
28-
],
29-
"transform": {
30-
"^.+\\.tsx?$": "ts-jest"
31-
},
32-
"testRegex": ".*\\.test\\.ts"
33-
}
2+
"name": "@coder/logger",
3+
"description": "Beautiful logging inspired by https://github.com/uber-go/zap.",
4+
"scripts": {
5+
"lint": "eslint src/**",
6+
"prepare": "tsc",
7+
"test": "mocha --require ts-node/register ./test/*.test.ts"
8+
},
9+
"version": "2.0.0",
10+
"main": "out/index.js",
11+
"types": "out/index.d.ts",
12+
"author": "Coder",
13+
"license": "MIT",
14+
"peerDependencies": {
15+
"@google-cloud/logging": "^9.2.1"
16+
},
17+
"devDependencies": {
18+
"@google-cloud/logging": "^9.2.1",
19+
"@types/mocha": "^8.2.2",
20+
"@types/node": "^12.6.8",
21+
"@typescript-eslint/eslint-plugin": "^4.22.0",
22+
"@typescript-eslint/parser": "^4.22.0",
23+
"eslint": "^7.25.0",
24+
"eslint-config-prettier": "^8.3.0",
25+
"eslint-plugin-import": "^2.22.1",
26+
"eslint-plugin-prettier": "^3.4.0",
27+
"mocha": "^8.3.2",
28+
"prettier": "^2.2.1",
29+
"ts-node": "^9.1.1",
30+
"typescript": "^3.5.3"
31+
},
32+
"dependencies": {}
3433
}

src/extender.test.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { field, logger } from "./logger";
2-
import { createStackdriverExtender } from "./extender";
1+
import { createStackdriverExtender } from "./extender"
2+
import { field, logger } from "./logger"
33

44
describe("Extender", () => {
5-
it("should add stackdriver extender", () => {
6-
logger.extend(createStackdriverExtender("coder-dev-1", "logging-package-tests"));
7-
});
5+
it("should add stackdriver extender", () => {
6+
logger.extend(createStackdriverExtender("coder-dev-1", "logging-package-tests"))
7+
})
88

9-
it("should log", async () => {
10-
logger.debug("Bananas!", field("frog", { hi: "wow" }));
11-
});
12-
});
9+
it("should log", async () => {
10+
logger.debug("Bananas!", field("frog", { hi: "wow" }))
11+
})
12+
})

src/extender.ts

Lines changed: 43 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,49 @@
1-
// @ts-ignore
2-
import * as gcl from "@google-cloud/logging";
3-
import { Extender, logger, field } from "./logger";
1+
import * as gcl from "@google-cloud/logging"
2+
import { Extender, field, Level, logger } from "./logger"
43

54
export const createStackdriverExtender = (projectId: string, logId: string): Extender => {
6-
enum GcpLogSeverity {
7-
DEFAULT = 0,
8-
DEBUG = 100,
9-
INFO = 200,
10-
NOTICE = 300,
11-
WARNING = 400,
12-
ERROR = 500,
13-
CRITICAL = 600,
14-
ALERT = 700,
15-
EMERGENCY = 800,
16-
}
5+
const logging = new gcl.Logging({
6+
autoRetry: true,
7+
projectId,
8+
})
179

18-
const logging = new gcl.Logging({
19-
autoRetry: true,
20-
projectId,
21-
});
10+
const log = logging.log(logId)
11+
const convertSeverity = (severity: Level): gcl.protos.google.logging.type.LogSeverity => {
12+
switch (severity) {
13+
case Level.Trace:
14+
case Level.Debug:
15+
return gcl.protos.google.logging.type.LogSeverity.DEBUG
16+
case Level.Info:
17+
return gcl.protos.google.logging.type.LogSeverity.INFO
18+
case Level.Warn:
19+
return gcl.protos.google.logging.type.LogSeverity.WARNING
20+
case Level.Error:
21+
return gcl.protos.google.logging.type.LogSeverity.ERROR
22+
}
23+
}
2224

23-
const log = logging.log(logId);
24-
const convertSeverity = (severity: "trace" | "info" | "warn" | "debug" | "error"): GcpLogSeverity => {
25-
switch (severity) {
26-
case "trace":
27-
case "debug":
28-
return GcpLogSeverity.DEBUG;
29-
case "info":
30-
return GcpLogSeverity.INFO;
31-
case "error":
32-
return GcpLogSeverity.ERROR;
33-
case "warn":
34-
return GcpLogSeverity.WARNING;
35-
}
36-
};
25+
return (options): void => {
26+
const severity = convertSeverity(options.level)
27+
const metadata: { [id: string]: string } = {}
28+
if (options.fields) {
29+
options.fields.forEach((f) => {
30+
if (!f) {
31+
return
32+
}
33+
metadata[f.identifier] = f.value
34+
})
35+
}
3736

38-
return (options): void => {
39-
const severity = convertSeverity(options.type);
40-
// tslint:disable-next-line:no-any
41-
const metadata = {} as any;
42-
if (options.fields) {
43-
options.fields.forEach((f) => {
44-
if (!f) {
45-
return;
46-
}
47-
metadata[f.identifier] = f.value;
48-
});
49-
}
37+
const entry = log.entry(
38+
{ severity },
39+
{
40+
...metadata,
41+
message: options.message,
42+
},
43+
)
5044

51-
const entry = log.entry({
52-
// tslint:disable-next-line:no-any
53-
severity: severity as any,
54-
}, {
55-
...metadata,
56-
message: options.message,
57-
});
58-
59-
log.write(entry).catch((ex: Error) => {
60-
logger.named("GCP").error("Failed to log", field("error", ex));
61-
});
62-
};
63-
64-
};
45+
log.write(entry).catch((ex: Error) => {
46+
logger.named("GCP").error("Failed to log", field("error", ex))
47+
})
48+
}
49+
}

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export * from "./logger";
1+
export * from "./logger"

src/logger.test.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
import { field, logger, BrowserFormatter, Time } from "./logger";
1+
import { field, logger, BrowserFormatter, Time } from "./logger"
22

33
describe("Logger", () => {
4-
it("should use server formatter", () => {
5-
logger.info("test", field("key", "value"), field("time", new Time(100, Date.now())));
6-
logger.named("name").debug("test name");
7-
logger.named("another name").warn("another test name");
8-
});
4+
it("should use server formatter", () => {
5+
logger.info("test", field("key", "value"), field("time", new Time(100, Date.now())))
6+
logger.named("name").debug("test name")
7+
logger.named("another name").warn("another test name")
8+
})
99

10-
it("should use browser formatter", () => {
11-
logger.formatter = new BrowserFormatter();
12-
logger.info("test", field("key", "value"), field("time", new Time(100, Date.now())));
13-
logger.named("name").debug("test name");
14-
logger.named("another name").warn("another test name");
15-
});
16-
});
10+
it("should use browser formatter", () => {
11+
logger.formatter = new BrowserFormatter()
12+
logger.info("test", field("key", "value"), field("time", new Time(100, Date.now())))
13+
logger.named("name").debug("test name")
14+
logger.named("another name").warn("another test name")
15+
})
16+
})

0 commit comments

Comments
 (0)