rlz-engine 1.0.50 → 1.0.52
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/back/esbuild-plugin-pino.d.ts +6 -0
- package/dist/back/esbuild-plugin-pino.js +87 -0
- package/dist/back/esbuild-plugin-pino.js.map +1 -0
- package/dist/back/logger.d.ts +5 -2
- package/dist/back/logger.js +7 -7
- package/dist/back/logger.js.map +1 -1
- package/dist/back/server.d.ts +2 -1
- package/dist/back/server.js +5 -5
- package/dist/back/server.js.map +1 -1
- package/dist/client/sync.js +2 -2
- package/dist/client/sync.js.map +1 -1
- package/dist/shared/utils/datetime.d.ts +3 -1
- package/dist/shared/utils/datetime.js +10 -6
- package/dist/shared/utils/datetime.js.map +1 -1
- package/package.json +36 -36
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { build as esbuildBuild } from 'esbuild';
|
|
4
|
+
const REQUIRE = createRequire(import.meta.url);
|
|
5
|
+
export function esbuildPluginPino(options = {}) {
|
|
6
|
+
return {
|
|
7
|
+
name: 'pino-workers',
|
|
8
|
+
setup(build) {
|
|
9
|
+
const outdir = build.initialOptions.outdir;
|
|
10
|
+
if (!outdir) {
|
|
11
|
+
throw new Error('pinoWorkersPlugin requires "outdir" to be set');
|
|
12
|
+
}
|
|
13
|
+
const extraEntries = resolveExtraEntries(outdir, options.transports ?? []);
|
|
14
|
+
injectBundlerOverrides(build.initialOptions, extraEntries);
|
|
15
|
+
build.onEnd(async (result) => {
|
|
16
|
+
if (result.errors.length > 0) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
await Promise.all(extraEntries.map(entry => esbuildBuild(makeBuildOptions(build.initialOptions, entry))));
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function resolveExtraEntries(outdir, transports) {
|
|
25
|
+
const transportEntries = Array.from(new Set(['pino/file', ...transports])).map(transport => ({
|
|
26
|
+
entryPoint: REQUIRE.resolve(transport),
|
|
27
|
+
outfile: path.join(outdir, `${sanitizeTransportName(transport)}.js`),
|
|
28
|
+
overrideKey: transport
|
|
29
|
+
}));
|
|
30
|
+
return [
|
|
31
|
+
{
|
|
32
|
+
entryPoint: REQUIRE.resolve('thread-stream/lib/worker.js'),
|
|
33
|
+
outfile: path.join(outdir, 'thread-stream-worker.js'),
|
|
34
|
+
overrideKey: 'thread-stream-worker'
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
entryPoint: REQUIRE.resolve('pino/lib/worker.js'),
|
|
38
|
+
outfile: path.join(outdir, 'pino-worker.js'),
|
|
39
|
+
overrideKey: 'pino-worker'
|
|
40
|
+
},
|
|
41
|
+
...transportEntries
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
function makeBuildOptions(initialOptions, entry) {
|
|
45
|
+
return {
|
|
46
|
+
bundle: true,
|
|
47
|
+
define: initialOptions.define,
|
|
48
|
+
external: initialOptions.external,
|
|
49
|
+
format: initialOptions.format ?? 'cjs',
|
|
50
|
+
keepNames: initialOptions.keepNames,
|
|
51
|
+
minify: initialOptions.minify,
|
|
52
|
+
outfile: entry.outfile,
|
|
53
|
+
platform: initialOptions.platform ?? 'node',
|
|
54
|
+
sourcemap: initialOptions.sourcemap,
|
|
55
|
+
target: initialOptions.target,
|
|
56
|
+
entryPoints: [entry.entryPoint]
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function sanitizeTransportName(transport) {
|
|
60
|
+
return transport.replace(/[@/\\]/g, '-');
|
|
61
|
+
}
|
|
62
|
+
function injectBundlerOverrides(initialOptions, extraEntries) {
|
|
63
|
+
const existingBanner = initialOptions.banner?.js;
|
|
64
|
+
const overrideLines = extraEntries.map((entry) => {
|
|
65
|
+
const relativePath = `./${path.basename(entry.outfile)}`;
|
|
66
|
+
return `${JSON.stringify(entry.overrideKey)}: pinoBundlerAbsolutePath(${JSON.stringify(relativePath)})`;
|
|
67
|
+
});
|
|
68
|
+
const banner = [
|
|
69
|
+
existingBanner,
|
|
70
|
+
'function pinoBundlerAbsolutePath(path) {',
|
|
71
|
+
' try {',
|
|
72
|
+
' return require(\'path\').join((process.cwd() + require(\'path\').sep + \'dist\').replace(/\\\\/g, \'/\'), path)',
|
|
73
|
+
' } catch {',
|
|
74
|
+
' return new Function(\'p\', \'return new URL(p, import.meta.url).pathname\')(path)',
|
|
75
|
+
' }',
|
|
76
|
+
'}',
|
|
77
|
+
'globalThis.__bundlerPathsOverrides = {',
|
|
78
|
+
' ...(globalThis.__bundlerPathsOverrides || {}),',
|
|
79
|
+
` ${overrideLines.join(',\n ')}`,
|
|
80
|
+
'};'
|
|
81
|
+
].filter(Boolean).join('\n');
|
|
82
|
+
initialOptions.banner = {
|
|
83
|
+
...initialOptions.banner,
|
|
84
|
+
js: banner
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=esbuild-plugin-pino.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esbuild-plugin-pino.js","sourceRoot":"","sources":["../../src/back/esbuild-plugin-pino.ts"],"names":[],"mappings":"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"}
|
package/dist/back/logger.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { WritableDraft } from 'immer';
|
|
2
2
|
import { Logger, LoggerOptions } from 'pino';
|
|
3
|
-
export
|
|
4
|
-
|
|
3
|
+
export interface LoggerConfig {
|
|
4
|
+
debug?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function logger(name: string, config?: LoggerConfig, optionsRecipe?: (draft: WritableDraft<LoggerOptions>) => WritableDraft<LoggerOptions>): Logger;
|
|
7
|
+
export declare function loggerOptions(name: string, { debug }?: LoggerConfig): LoggerOptions;
|
package/dist/back/logger.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { produce } from 'immer';
|
|
2
2
|
import { pino } from 'pino';
|
|
3
3
|
import { PRODUCTION } from './config.js';
|
|
4
|
-
export function logger(name, optionsRecipe) {
|
|
4
|
+
export function logger(name, config, optionsRecipe) {
|
|
5
5
|
const options = optionsRecipe === undefined
|
|
6
|
-
? loggerOptions(name)
|
|
7
|
-
: produce(loggerOptions(name), optionsRecipe);
|
|
6
|
+
? loggerOptions(name, config)
|
|
7
|
+
: produce(loggerOptions(name, config), optionsRecipe);
|
|
8
8
|
return pino(options);
|
|
9
9
|
}
|
|
10
|
-
export function loggerOptions(name) {
|
|
10
|
+
export function loggerOptions(name, { debug = false } = {}) {
|
|
11
11
|
if (PRODUCTION) {
|
|
12
12
|
return {
|
|
13
13
|
name,
|
|
14
14
|
transport: {
|
|
15
15
|
targets: [
|
|
16
16
|
{
|
|
17
|
-
level: 'info',
|
|
17
|
+
level: debug ? 'debug' : 'info',
|
|
18
18
|
target: 'pino/file',
|
|
19
19
|
options: { destination: 1 }
|
|
20
20
|
}
|
|
@@ -24,7 +24,7 @@ export function loggerOptions(name) {
|
|
|
24
24
|
// }
|
|
25
25
|
]
|
|
26
26
|
},
|
|
27
|
-
level: 'info'
|
|
27
|
+
level: debug ? 'debug' : 'info'
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
return {
|
|
@@ -37,7 +37,7 @@ export function loggerOptions(name) {
|
|
|
37
37
|
}
|
|
38
38
|
]
|
|
39
39
|
},
|
|
40
|
-
level: 'trace'
|
|
40
|
+
level: debug ? 'trace' : 'info'
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
//# sourceMappingURL=logger.js.map
|
package/dist/back/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/back/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,OAAO,CAAA;AAC9C,OAAO,EAAyB,IAAI,EAAE,MAAM,MAAM,CAAA;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/back/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,OAAO,CAAA;AAC9C,OAAO,EAAyB,IAAI,EAAE,MAAM,MAAM,CAAA;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAMxC,MAAM,UAAU,MAAM,CAClB,IAAY,EACZ,MAAqB,EACrB,aAAqF;IAErF,MAAM,OAAO,GAAG,aAAa,KAAK,SAAS;QACvC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC;QAC7B,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,CAAA;IACzD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,EAAE,KAAK,GAAG,KAAK,KAAmB,EAAE;IAC5E,IAAI,UAAU,EAAE,CAAC;QACb,OAAO;YACH,IAAI;YACJ,SAAS,EAAE;gBACP,OAAO,EAAE;oBACL;wBACI,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;wBAC/B,MAAM,EAAE,WAAW;wBACnB,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;qBAC9B;oBACD,IAAI;oBACJ,qBAAqB;oBACrB,sBAAsB;oBACtB,IAAI;iBACP;aACJ;YACD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;SAClC,CAAA;IACL,CAAC;IAED,OAAO;QACH,IAAI;QACJ,SAAS,EAAE;YACP,OAAO,EAAE;gBACL;oBACI,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,aAAa;iBACxB;aACJ;SACJ;QACD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;KAClC,CAAA;AACL,CAAC"}
|
package/dist/back/server.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { Logger } from 'pino';
|
|
|
3
3
|
export type InitServerFuncType = <S extends RawServerBase>(server: FastifyInstance<S, RawRequestDefaultExpression<S>, RawReplyDefaultExpression<S>, Logger>) => Promise<void>;
|
|
4
4
|
export interface RunServerParams {
|
|
5
5
|
production: boolean;
|
|
6
|
+
debug?: boolean;
|
|
6
7
|
unsecurePort?: number;
|
|
7
8
|
securePort?: number;
|
|
8
9
|
domain: string;
|
|
@@ -10,4 +11,4 @@ export interface RunServerParams {
|
|
|
10
11
|
staticDir: string;
|
|
11
12
|
init: InitServerFuncType;
|
|
12
13
|
}
|
|
13
|
-
export declare function runServer({ production, domain, certDir, staticDir, securePort, unsecurePort, init }: RunServerParams): Promise<() => Promise<void>>;
|
|
14
|
+
export declare function runServer({ production, debug, domain, certDir, staticDir, securePort, unsecurePort, init }: RunServerParams): Promise<() => Promise<void>>;
|
package/dist/back/server.js
CHANGED
|
@@ -11,11 +11,11 @@ import { installIntoGlobal } from 'iterator-helpers-polyfill';
|
|
|
11
11
|
import path from 'path';
|
|
12
12
|
import { logger } from './logger.js';
|
|
13
13
|
installIntoGlobal();
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
export async function runServer({ production, debug = false, domain, certDir, staticDir, securePort, unsecurePort, init }) {
|
|
15
|
+
const L = logger('init', { debug });
|
|
16
16
|
L.info({ production }, 'runServer');
|
|
17
17
|
const httpServer = fastify({
|
|
18
|
-
loggerInstance: logger('http'),
|
|
18
|
+
loggerInstance: logger('http', { debug }),
|
|
19
19
|
ajv: { plugins: [formatsPlugin.default], customOptions: { useDefaults: false, coerceTypes: false, allErrors: true, verbose: true } }
|
|
20
20
|
});
|
|
21
21
|
if (!production) {
|
|
@@ -40,7 +40,7 @@ export async function runServer({ production, domain, certDir, staticDir, secure
|
|
|
40
40
|
httpServer.register(fastifyAcmeUnsecurePlugin, { redirectDomain: domain });
|
|
41
41
|
await httpServer.listen({ port: unsecurePort ?? 80, host: '::' });
|
|
42
42
|
L.info('Get certificates');
|
|
43
|
-
const certAndKey = await getCertAndKey(certDir, domain);
|
|
43
|
+
const certAndKey = await getCertAndKey(certDir, domain, httpServer.log);
|
|
44
44
|
L.info('Init secure server');
|
|
45
45
|
const httpsServer = fastify({
|
|
46
46
|
http2: true,
|
|
@@ -49,7 +49,7 @@ export async function runServer({ production, domain, certDir, staticDir, secure
|
|
|
49
49
|
cert: certAndKey.cert,
|
|
50
50
|
key: certAndKey.pkey
|
|
51
51
|
},
|
|
52
|
-
loggerInstance: logger('https'),
|
|
52
|
+
loggerInstance: logger('https', { debug }),
|
|
53
53
|
ajv: { plugins: [formatsPlugin.default], customOptions: { useDefaults: false, coerceTypes: false, allErrors: true, verbose: true } }
|
|
54
54
|
});
|
|
55
55
|
await httpsServer.register(fastifyAcmeSecurePlugin, {
|
package/dist/back/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/back/server.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,WAAW,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AACxE,OAAO,eAAe,EAAE,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAE3C,OAAO,aAAa,MAAM,aAAa,CAAA;AACvC,OAAO,OAAmG,MAAM,SAAS,CAAA;AACzH,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,iBAAiB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/back/server.ts"],"names":[],"mappings":"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"}
|
package/dist/client/sync.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { DateTime } from 'luxon';
|
|
2
|
-
import {
|
|
2
|
+
import { toValidDateTime } from '../shared/utils/datetime.js';
|
|
3
3
|
export async function syncItems({ getRemoteLastModified, localItems, pushRemote, getRemote, pushLocal, lastSyncDate }) {
|
|
4
4
|
const remoteItems = (await getRemoteLastModified()).items;
|
|
5
|
-
const remoteItemsMap = Object.fromEntries(remoteItems.map(i => [i.id,
|
|
5
|
+
const remoteItemsMap = Object.fromEntries(remoteItems.map(i => [i.id, toValidDateTime(DateTime.fromISO(i.lastModified, { zone: 'utc' }))]));
|
|
6
6
|
const itemsToGet = [];
|
|
7
7
|
const itemsToPush = [];
|
|
8
8
|
for (const i of localItems) {
|
package/dist/client/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/client/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAGhC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/client/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAGhC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAyD,EACpF,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,EAQf;IACG,MAAM,WAAW,GAAG,CAAC,MAAM,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAA;IACzD,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CACrC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CACnG,CAAA;IAED,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,MAAM,WAAW,GAAQ,EAAE,CAAA;IAE3B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC/B,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACnB,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC;gBACzD,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvB,CAAC;YACD,SAAQ;QACZ,CAAC;QAED,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5B,SAAQ;QACZ,CAAC;QAED,IAAI,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;YACtB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACnB,SAAQ;QACZ,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACzB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACrD,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvB,CAAC;IACL,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,UAAU,CAAC,WAAW,CAAC,CAAA;IACjC,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,SAAS,CAAC,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC;AACL,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { DateTime } from 'luxon';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function isValidDateTime(dt: DateTime): dt is DateTime<true>;
|
|
3
|
+
export declare function assertValidDateTime(dt: DateTime<boolean> | undefined | null): asserts dt is DateTime<true>;
|
|
4
|
+
export declare function toValidDateTime(datetime: DateTime): DateTime<true>;
|
|
3
5
|
export declare function utcToday(): DateTime<true>;
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { DateTime } from 'luxon';
|
|
2
|
-
export function
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
export function isValidDateTime(dt) {
|
|
3
|
+
return dt.isValid;
|
|
4
|
+
}
|
|
5
|
+
export function assertValidDateTime(dt) {
|
|
6
|
+
if (dt !== undefined && dt !== null && !dt.isValid) {
|
|
7
|
+
throw new Error('Invalid DateTime');
|
|
5
8
|
}
|
|
9
|
+
}
|
|
10
|
+
export function toValidDateTime(datetime) {
|
|
11
|
+
assertValidDateTime(datetime);
|
|
6
12
|
return datetime;
|
|
7
13
|
}
|
|
8
14
|
export function utcToday() {
|
|
9
15
|
const local = DateTime.local();
|
|
10
16
|
const utc = DateTime.utc(local.year, local.month, local.day);
|
|
11
|
-
|
|
12
|
-
throw Error('Invalid DateTime');
|
|
13
|
-
}
|
|
17
|
+
assertValidDateTime(utc);
|
|
14
18
|
return utc;
|
|
15
19
|
}
|
|
16
20
|
//# sourceMappingURL=datetime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datetime.js","sourceRoot":"","sources":["../../../src/shared/utils/datetime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,MAAM,UAAU,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"datetime.js","sourceRoot":"","sources":["../../../src/shared/utils/datetime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,MAAM,UAAU,eAAe,CAAC,EAAY;IACxC,OAAO,EAAE,CAAC,OAAO,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAwC;IACxE,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACvC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAkB;IAC9C,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAE7B,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,QAAQ;IACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAA;IAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5D,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACxB,OAAO,GAAG,CAAA;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rlz-engine",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.52",
|
|
4
4
|
"description": "Deps and tools for my style of development",
|
|
5
5
|
"author": "Dmitry Maslennikov <maslennikovdm@gmail.com>",
|
|
6
6
|
"license": "ISC",
|
|
@@ -22,51 +22,51 @@
|
|
|
22
22
|
"dist"
|
|
23
23
|
],
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@stylistic/eslint-plugin": "^5.
|
|
26
|
-
"@types/luxon": "^3.4
|
|
27
|
-
"@types/node": "^
|
|
28
|
-
"@
|
|
29
|
-
"
|
|
30
|
-
"eslint
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
25
|
+
"@stylistic/eslint-plugin": "^5.10.0",
|
|
26
|
+
"@types/luxon": "^3.7.4",
|
|
27
|
+
"@types/node": "^26.2.0",
|
|
28
|
+
"@types/react": "^19.2.18",
|
|
29
|
+
"@types/react-dom": "^19.2.4",
|
|
30
|
+
"@typescript-eslint/parser": "^8.67.0",
|
|
31
|
+
"eslint": "^10.8.1",
|
|
32
|
+
"eslint-plugin-simple-import-sort": "^14.0.0",
|
|
33
|
+
"tsx": "^4.23.12",
|
|
34
|
+
"typescript": "^6.0.3",
|
|
35
|
+
"typescript-eslint": "^8.67.0"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@emotion/react": "^11.14.0",
|
|
39
|
-
"@emotion/styled": "^11.14.
|
|
40
|
-
"@fastify/compress": "^
|
|
41
|
-
"@fastify/cors": "^11.0
|
|
42
|
-
"@fastify/response-validation": "^3.0.
|
|
43
|
-
"@fastify/sensible": "^6.0.
|
|
44
|
-
"@fastify/static": "^
|
|
45
|
-
"@fontsource/roboto": "^5.0
|
|
46
|
-
"@mui/icons-material": "^9.
|
|
47
|
-
"@mui/material": "^9.
|
|
39
|
+
"@emotion/styled": "^11.14.1",
|
|
40
|
+
"@fastify/compress": "^9.2.0",
|
|
41
|
+
"@fastify/cors": "^11.3.0",
|
|
42
|
+
"@fastify/response-validation": "^3.0.4",
|
|
43
|
+
"@fastify/sensible": "^6.0.5",
|
|
44
|
+
"@fastify/static": "^10.1.3",
|
|
45
|
+
"@fontsource/roboto": "^5.3.0",
|
|
46
|
+
"@mui/icons-material": "^9.3.1",
|
|
47
|
+
"@mui/material": "^9.3.1",
|
|
48
48
|
"@types/react-router-dom": "^5.3.3",
|
|
49
49
|
"acme-client": "^5.4.0",
|
|
50
50
|
"ajv": "^8.20.0",
|
|
51
51
|
"ajv-formats": "^3.0.1",
|
|
52
52
|
"cmd-ts": "^0.15.0",
|
|
53
|
-
"embla-carousel-react": "^8.
|
|
54
|
-
"embla-carousel-wheel-gestures": "^8.0
|
|
55
|
-
"fastify": "^5.1
|
|
56
|
-
"fastify-acme": "^1.0.
|
|
57
|
-
"fastify-plugin": "^
|
|
58
|
-
"immer": "^11.1.
|
|
53
|
+
"embla-carousel-react": "^8.6.0",
|
|
54
|
+
"embla-carousel-wheel-gestures": "^8.1.0",
|
|
55
|
+
"fastify": "^5.12.1",
|
|
56
|
+
"fastify-acme": "^1.0.12",
|
|
57
|
+
"fastify-plugin": "^6.0.0",
|
|
58
|
+
"immer": "^11.1.18",
|
|
59
59
|
"iterator-helpers-polyfill": "^3.0.1",
|
|
60
|
-
"luxon": "^3.
|
|
61
|
-
"mongodb": "^7.
|
|
62
|
-
"pino": "^10.
|
|
63
|
-
"pino-pretty": "^13.
|
|
60
|
+
"luxon": "^3.7.2",
|
|
61
|
+
"mongodb": "^7.5.0",
|
|
62
|
+
"pino": "^10.3.1",
|
|
63
|
+
"pino-pretty": "^13.1.3",
|
|
64
64
|
"react-resize-detector": "^12.3.0",
|
|
65
|
-
"react-router-dom": "^7.
|
|
66
|
-
"uuidv7": "^1.
|
|
67
|
-
"zod": "^4.3
|
|
68
|
-
"zod-to-ts": "^2.
|
|
69
|
-
"zustand": "^5.0.
|
|
65
|
+
"react-router-dom": "^7.18.2",
|
|
66
|
+
"uuidv7": "^1.2.1",
|
|
67
|
+
"zod": "^4.4.3",
|
|
68
|
+
"zod-to-ts": "^2.1.0",
|
|
69
|
+
"zustand": "^5.0.15"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
72
|
"react": "^19.0.0",
|