@emberkit/core 0.3.1 → 0.3.2

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.
@@ -1,4 +1,4 @@
1
- import { createLogger } from '../logger/helpers/create-logger.js';
1
+ import { createLogger } from '../logger/node.js';
2
2
  export class DevServer {
3
3
  errorCount = 0;
4
4
  logger;
package/dist/index.d.ts CHANGED
@@ -16,7 +16,6 @@ export type { HeadProps } from './meta/index.js';
16
16
  export { generateMeta, generateBreadcrumbs, generateArticleSchema, generateProductSchema, } from './meta/index.js';
17
17
  export type { MetaData, OpenGraphData, TwitterCardData } from './meta/index.js';
18
18
  export type { FC, RouteComponent, RouteChildren } from './runtime/types.js';
19
- export { createLogger } from './logger/index.js';
20
- export type { Logger, LoggerOptions, LogLevel, RequestLog, ResponseLog } from './logger/index.js';
19
+ export type { Logger, LoggerOptions, LogLevel, RequestLog, ResponseLog } from './logger/types.js';
21
20
  export declare function defineConfig(config: Record<string, unknown>): Record<string, unknown>;
22
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,GACP,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnF,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEzF,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEhF,YAAY,EAAE,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElG,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAErF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,GACP,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnF,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEzF,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEhF,YAAY,EAAE,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE5E,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElG,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAErF"}
package/dist/index.js CHANGED
@@ -11,7 +11,6 @@ export { compileMDX, compileSync, useMDX } from './mdx/index.js';
11
11
  export { DataCache, createCache, getCached, setCache, prefetch } from './cache/index.js';
12
12
  export { Head } from './meta/index.js';
13
13
  export { generateMeta, generateBreadcrumbs, generateArticleSchema, generateProductSchema, } from './meta/index.js';
14
- export { createLogger } from './logger/index.js';
15
14
  export function defineConfig(config) {
16
15
  return config;
17
16
  }
@@ -0,0 +1,3 @@
1
+ export type { Logger, LoggerOptions, LogLevel, RequestLog, ResponseLog } from './types.js';
2
+ export { createLogger } from './helpers/create-logger-browser.js';
3
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/logger/browser.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1 @@
1
+ export { createLogger } from './helpers/create-logger-browser.js';
@@ -0,0 +1,6 @@
1
+ import type { Logger, LoggerOptions } from '../types.js';
2
+ /**
3
+ * Browser-safe logger (console). Use when `import` resolves with the `browser` condition.
4
+ */
5
+ export declare function createLogger(options?: LoggerOptions): Logger;
6
+ //# sourceMappingURL=create-logger-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-logger-browser.d.ts","sourceRoot":"","sources":["../../../src/logger/helpers/create-logger-browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAenE;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CAwChE"}
@@ -0,0 +1,49 @@
1
+ const LEVEL_RANK = {
2
+ trace: 10,
3
+ debug: 20,
4
+ info: 30,
5
+ warn: 40,
6
+ error: 50,
7
+ fatal: 60,
8
+ };
9
+ function enabled(threshold, level) {
10
+ return LEVEL_RANK[level] >= LEVEL_RANK[threshold ?? 'info'];
11
+ }
12
+ /**
13
+ * Browser-safe logger (console). Use when `import` resolves with the `browser` condition.
14
+ */
15
+ export function createLogger(options = {}) {
16
+ const name = options.name ?? '@emberkit/core';
17
+ const threshold = options.level ?? 'info';
18
+ function createWithBindings(baseBindings) {
19
+ const prefix = `[${name}]`;
20
+ const out = (level, consoleFn, msg, errOrObj) => {
21
+ if (!enabled(threshold, level))
22
+ return;
23
+ const ctx = { ...baseBindings };
24
+ if (errOrObj instanceof Error) {
25
+ consoleFn(prefix, msg, ctx, errOrObj);
26
+ }
27
+ else if (errOrObj) {
28
+ Object.assign(ctx, errOrObj);
29
+ consoleFn(prefix, msg, ctx);
30
+ }
31
+ else if (Object.keys(ctx).length) {
32
+ consoleFn(prefix, msg, ctx);
33
+ }
34
+ else {
35
+ consoleFn(prefix, msg);
36
+ }
37
+ };
38
+ return {
39
+ fatal: (msg, err) => out('fatal', console.error.bind(console), msg, err),
40
+ error: (msg, err) => out('error', console.error.bind(console), msg, err),
41
+ warn: (msg, obj) => out('warn', console.warn.bind(console), msg, obj),
42
+ info: (msg, obj) => out('info', console.info.bind(console), msg, obj),
43
+ debug: (msg, obj) => out('debug', console.debug.bind(console), msg, obj),
44
+ trace: (msg, obj) => out('trace', console.debug.bind(console), msg, obj),
45
+ child: (bindings) => createWithBindings({ ...baseBindings, ...bindings }),
46
+ };
47
+ }
48
+ return createWithBindings({});
49
+ }
@@ -0,0 +1,8 @@
1
+ import type { Logger, LoggerOptions } from '../types.js';
2
+ /**
3
+ * Node-only logger backed by pino. Do not import from client bundles.
4
+ */
5
+ export declare function createLogger(options?: LoggerOptions): Logger;
6
+ /** Default Node logger; import only from server code */
7
+ export declare const logger: Logger;
8
+ //# sourceMappingURL=create-logger-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-logger-node.d.ts","sourceRoot":"","sources":["../../../src/logger/helpers/create-logger-node.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAsDzD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CAqChE;AAED,wDAAwD;AACxD,eAAO,MAAM,MAAM,QAAiB,CAAC"}
@@ -0,0 +1,103 @@
1
+ import pino from 'pino';
2
+ function wrapPino(pinoLogger) {
3
+ return {
4
+ fatal: (msg, err) => {
5
+ if (err instanceof Error) {
6
+ pinoLogger.fatal({ err }, msg);
7
+ }
8
+ else if (err) {
9
+ pinoLogger.fatal(err, msg);
10
+ }
11
+ else {
12
+ pinoLogger.fatal(msg);
13
+ }
14
+ },
15
+ error: (msg, err) => {
16
+ if (err instanceof Error) {
17
+ pinoLogger.error({ err }, msg);
18
+ }
19
+ else if (err) {
20
+ pinoLogger.error(err, msg);
21
+ }
22
+ else {
23
+ pinoLogger.error(msg);
24
+ }
25
+ },
26
+ warn: (msg, obj) => {
27
+ if (obj) {
28
+ pinoLogger.warn(obj, msg);
29
+ }
30
+ else {
31
+ pinoLogger.warn(msg);
32
+ }
33
+ },
34
+ info: (msg, obj) => {
35
+ if (obj) {
36
+ pinoLogger.info(obj, msg);
37
+ }
38
+ else {
39
+ pinoLogger.info(msg);
40
+ }
41
+ },
42
+ debug: (msg, obj) => {
43
+ if (obj) {
44
+ pinoLogger.debug(obj, msg);
45
+ }
46
+ else {
47
+ pinoLogger.debug(msg);
48
+ }
49
+ },
50
+ trace: (msg, obj) => {
51
+ if (obj) {
52
+ pinoLogger.trace(obj, msg);
53
+ }
54
+ else {
55
+ pinoLogger.trace(msg);
56
+ }
57
+ },
58
+ child: (bindings) => wrapPino(pinoLogger.child(bindings)),
59
+ };
60
+ }
61
+ /**
62
+ * Node-only logger backed by pino. Do not import from client bundles.
63
+ */
64
+ export function createLogger(options = {}) {
65
+ const isProduction = process.env.NODE_ENV === 'production';
66
+ const isDev = !isProduction;
67
+ const pinoOptions = {
68
+ name: options.name ?? '@emberkit/core',
69
+ level: options.level ?? 'info',
70
+ };
71
+ let pinoBase;
72
+ if (options.transport === false) {
73
+ pinoBase = pino(pinoOptions);
74
+ }
75
+ else if (options.transport) {
76
+ pinoOptions.transport = options.transport;
77
+ pinoBase = pino(pinoOptions);
78
+ }
79
+ else if (isDev && !process.env.CI && typeof window === 'undefined') {
80
+ try {
81
+ pinoOptions.transport = {
82
+ target: 'pino-pretty',
83
+ options: {
84
+ colorize: true,
85
+ singleLine: false,
86
+ translateTime: 'SYS:standard',
87
+ ignore: 'pid,hostname',
88
+ },
89
+ };
90
+ pinoBase = pino(pinoOptions);
91
+ }
92
+ catch {
93
+ delete pinoOptions.transport;
94
+ pinoBase = pino(pinoOptions);
95
+ }
96
+ }
97
+ else {
98
+ pinoBase = pino(pinoOptions);
99
+ }
100
+ return wrapPino(pinoBase);
101
+ }
102
+ /** Default Node logger; import only from server code */
103
+ export const logger = createLogger();
@@ -1,3 +1,7 @@
1
1
  export type { Logger, LoggerOptions, LogLevel, RequestLog, ResponseLog } from './types.js';
2
- export { createLogger } from './helpers/create-logger.js';
2
+ /**
3
+ * Default entry when tooling resolves the `logger/` folder (e.g. Vite workspace alias
4
+ * `@emberkit/core` → `src/`). Must stay free of pino so the client bundle never loads Node deps.
5
+ */
6
+ export { createLogger } from './helpers/create-logger-browser.js';
3
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG3F,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3F;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC"}
@@ -1,2 +1,5 @@
1
- // Only export types and lazy-loaded functions to avoid pino in browser
2
- export { createLogger } from './helpers/create-logger.js';
1
+ /**
2
+ * Default entry when tooling resolves the `logger/` folder (e.g. Vite workspace alias
3
+ * `@emberkit/core` → `src/`). Must stay free of pino so the client bundle never loads Node deps.
4
+ */
5
+ export { createLogger } from './helpers/create-logger-browser.js';
@@ -0,0 +1,4 @@
1
+ export type { Logger, LoggerOptions, LogLevel, RequestLog, ResponseLog } from './types.js';
2
+ export { createLogger, logger } from './helpers/create-logger-node.js';
3
+ export { createHttpLogger } from './server.js';
4
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/logger/node.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createLogger, logger } from './helpers/create-logger-node.js';
2
+ export { createHttpLogger } from './server.js';
@@ -1,2 +1,7 @@
1
- export declare function createHttpLogger(loggerInstance?: import('./types.js').Logger): any;
1
+ import pinoHttp from 'pino-http';
2
+ import type { Logger } from './types.js';
3
+ /**
4
+ * HTTP request logger middleware (Node only). Pass a pino-backed logger from {@link createLogger} on the server.
5
+ */
6
+ export declare function createHttpLogger(loggerInstance?: Logger): ReturnType<typeof pinoHttp>;
2
7
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/logger/server.ts"],"names":[],"mappings":"AAGA,wBAAgB,gBAAgB,CAAC,cAAc,CAAC,EAAE,OAAO,YAAY,EAAE,MAAM,OAe5E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/logger/server.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAWrF"}
@@ -1,13 +1,13 @@
1
- // Server-only HTTP logger export
2
- // This file should only be imported in server contexts, not browser
1
+ import pinoHttp from 'pino-http';
2
+ import { createLogger } from './helpers/create-logger-node.js';
3
+ /**
4
+ * HTTP request logger middleware (Node only). Pass a pino-backed logger from {@link createLogger} on the server.
5
+ */
3
6
  export function createHttpLogger(loggerInstance) {
4
- // Lazy load pino modules only when called (server-side)
5
- const pinoHttp = require('pino-http');
6
- const { createLogger: create } = require('./helpers/create-logger.js');
7
- const logger = loggerInstance ?? create({ name: '@emberkit/http' });
7
+ const log = loggerInstance ?? createLogger({ name: '@emberkit/http' });
8
8
  return pinoHttp({
9
- logger: logger,
9
+ logger: log,
10
10
  customErrorMessage: (error) => error.message,
11
11
  customSuccessMessage: () => 'Request processed',
12
- }, logger);
12
+ }, log);
13
13
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emberkit/core",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "Lightweight TypeScript-first JSX framework core",
@@ -44,6 +44,18 @@
44
44
  "./jsx-dev-runtime": {
45
45
  "import": "./dist/jsx-dev-runtime.js",
46
46
  "types": "./dist/jsx-dev-runtime.d.ts"
47
+ },
48
+ "./logger": {
49
+ "browser": {
50
+ "types": "./dist/logger/browser.d.ts",
51
+ "import": "./dist/logger/browser.js"
52
+ },
53
+ "types": "./dist/logger/node.d.ts",
54
+ "import": "./dist/logger/node.js"
55
+ },
56
+ "./logger/node": {
57
+ "types": "./dist/logger/node.d.ts",
58
+ "import": "./dist/logger/node.js"
47
59
  }
48
60
  },
49
61
  "dependencies": {