@luzzle/cli 0.0.126 → 0.0.127

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.
Files changed (89) hide show
  1. package/dist/src/index.d.ts +2 -0
  2. package/dist/src/index.js +4 -0
  3. package/dist/src/index.js.map +1 -0
  4. package/dist/src/lib/cli.d.ts +2 -0
  5. package/dist/src/lib/cli.js +112 -0
  6. package/dist/src/lib/cli.js.map +1 -0
  7. package/dist/src/lib/cli.test.d.ts +1 -0
  8. package/dist/src/lib/cli.test.js +197 -0
  9. package/dist/src/lib/cli.test.js.map +1 -0
  10. package/dist/src/lib/commands/command/assistant.d.ts +11 -0
  11. package/dist/src/lib/commands/command/assistant.js +67 -0
  12. package/dist/src/lib/commands/command/assistant.js.map +1 -0
  13. package/dist/src/lib/commands/command/assistant.test.d.ts +1 -0
  14. package/dist/src/lib/commands/command/assistant.test.js +161 -0
  15. package/dist/src/lib/commands/command/assistant.test.js.map +1 -0
  16. package/dist/src/lib/commands/command/config.d.ts +8 -0
  17. package/dist/src/lib/commands/command/config.js +67 -0
  18. package/dist/src/lib/commands/command/config.js.map +1 -0
  19. package/dist/src/lib/commands/command/config.test.d.ts +1 -0
  20. package/dist/src/lib/commands/command/config.test.js +113 -0
  21. package/dist/src/lib/commands/command/config.test.js.map +1 -0
  22. package/dist/src/lib/commands/command/create.d.ts +10 -0
  23. package/dist/src/lib/commands/command/create.js +63 -0
  24. package/dist/src/lib/commands/command/create.js.map +1 -0
  25. package/dist/src/lib/commands/command/create.test.d.ts +1 -0
  26. package/dist/src/lib/commands/command/create.test.js +126 -0
  27. package/dist/src/lib/commands/command/create.test.js.map +1 -0
  28. package/dist/src/lib/commands/command/field.d.ts +10 -0
  29. package/dist/src/lib/commands/command/field.js +90 -0
  30. package/dist/src/lib/commands/command/field.js.map +1 -0
  31. package/dist/src/lib/commands/command/field.test.d.ts +1 -0
  32. package/dist/src/lib/commands/command/field.test.js +395 -0
  33. package/dist/src/lib/commands/command/field.test.js.map +1 -0
  34. package/dist/src/lib/commands/command/init.d.ts +6 -0
  35. package/dist/src/lib/commands/command/init.js +42 -0
  36. package/dist/src/lib/commands/command/init.js.map +1 -0
  37. package/dist/src/lib/commands/command/init.test.d.ts +1 -0
  38. package/dist/src/lib/commands/command/init.test.js +84 -0
  39. package/dist/src/lib/commands/command/init.test.js.map +1 -0
  40. package/dist/src/lib/commands/command/sync.d.ts +7 -0
  41. package/dist/src/lib/commands/command/sync.js +85 -0
  42. package/dist/src/lib/commands/command/sync.js.map +1 -0
  43. package/dist/src/lib/commands/command/sync.test.d.ts +1 -0
  44. package/dist/src/lib/commands/command/sync.test.js +117 -0
  45. package/dist/src/lib/commands/command/sync.test.js.map +1 -0
  46. package/dist/src/lib/commands/command/validate.d.ts +5 -0
  47. package/dist/src/lib/commands/command/validate.js +22 -0
  48. package/dist/src/lib/commands/command/validate.js.map +1 -0
  49. package/dist/src/lib/commands/command/validate.test.d.ts +1 -0
  50. package/dist/src/lib/commands/command/validate.test.js +59 -0
  51. package/dist/src/lib/commands/command/validate.test.js.map +1 -0
  52. package/dist/src/lib/commands/index.d.ts +6 -0
  53. package/dist/src/lib/commands/index.js +19 -0
  54. package/dist/src/lib/commands/index.js.map +1 -0
  55. package/dist/src/lib/commands/index.test.d.ts +1 -0
  56. package/dist/src/lib/commands/index.test.js +31 -0
  57. package/dist/src/lib/commands/index.test.js.map +1 -0
  58. package/dist/src/lib/commands/utils/context.fixtures.d.ts +23 -0
  59. package/dist/src/lib/commands/utils/context.fixtures.js +76 -0
  60. package/dist/src/lib/commands/utils/context.fixtures.js.map +1 -0
  61. package/dist/src/lib/commands/utils/pieces.d.ts +27 -0
  62. package/dist/src/lib/commands/utils/pieces.js +47 -0
  63. package/dist/src/lib/commands/utils/pieces.js.map +1 -0
  64. package/dist/src/lib/commands/utils/pieces.test.d.ts +1 -0
  65. package/dist/src/lib/commands/utils/pieces.test.js +97 -0
  66. package/dist/src/lib/commands/utils/pieces.test.js.map +1 -0
  67. package/dist/src/lib/config.d.ts +35 -0
  68. package/dist/src/lib/config.js +145 -0
  69. package/dist/src/lib/config.js.map +1 -0
  70. package/dist/src/lib/config.mock.d.ts +5 -0
  71. package/dist/src/lib/config.mock.js +10 -0
  72. package/dist/src/lib/config.mock.js.map +1 -0
  73. package/dist/src/lib/config.test.d.ts +1 -0
  74. package/dist/src/lib/config.test.js +129 -0
  75. package/dist/src/lib/config.test.js.map +1 -0
  76. package/dist/src/lib/database.mock.d.ts +22 -0
  77. package/dist/src/lib/database.mock.js +34 -0
  78. package/dist/src/lib/database.mock.js.map +1 -0
  79. package/dist/src/lib/log.d.ts +2 -0
  80. package/dist/src/lib/log.js +9 -0
  81. package/dist/src/lib/log.js.map +1 -0
  82. package/dist/src/version.d.ts +2 -0
  83. package/dist/src/version.js +2 -0
  84. package/dist/src/version.js.map +1 -0
  85. package/dist/tsconfig.tsbuildinfo +1 -0
  86. package/dist/vite.config.d.ts +2 -0
  87. package/dist/vite.config.js +38 -0
  88. package/dist/vite.config.js.map +1 -0
  89. package/package.json +2 -2
@@ -0,0 +1,97 @@
1
+ import { vi, describe, test, afterEach, expect } from 'vitest';
2
+ import yargs from 'yargs';
3
+ import { makeContext, makeMarkdownSample, makePieceMock } from '../utils/context.fixtures.js';
4
+ import { Piece } from '@luzzle/core';
5
+ import { makePieceOption, makePiecePathPositional, parsePieceOptionArgv, parsePiecePathPositionalArgv, } from './pieces.js';
6
+ vi.mock('@luzzle/core');
7
+ const mocks = {
8
+ Piece: vi.mocked(Piece),
9
+ };
10
+ const spies = {};
11
+ describe('lib/commands/utils/pieces.ts', () => {
12
+ afterEach(() => {
13
+ Object.values(mocks).forEach((mock) => {
14
+ mock.mockReset();
15
+ });
16
+ Object.keys(spies).forEach((key) => {
17
+ spies[key].mockRestore();
18
+ delete spies[key];
19
+ });
20
+ });
21
+ test('makePieceOption', async () => {
22
+ const args = yargs();
23
+ spies.option = vi.spyOn(args, 'option');
24
+ spies.positional = vi.spyOn(args, 'positional');
25
+ makePieceOption(args);
26
+ expect(spies.option).toHaveBeenCalledOnce();
27
+ });
28
+ test('makePiecePathPositional', async () => {
29
+ const args = yargs();
30
+ spies.option = vi.spyOn(args, 'option');
31
+ spies.positional = vi.spyOn(args, 'positional');
32
+ makePiecePathPositional(args);
33
+ expect(spies.positional).toHaveBeenCalledOnce();
34
+ });
35
+ test('parsePieceOptionArgv', async () => {
36
+ const name = 'books';
37
+ const context = makeContext();
38
+ const piece = makePieceMock();
39
+ spies.getTypes = vi.spyOn(context.pieces, 'getTypes').mockResolvedValueOnce([name]);
40
+ spies.getPiece = vi.spyOn(context.pieces, 'getPiece').mockResolvedValueOnce(piece);
41
+ const result = await parsePieceOptionArgv(context, { piece: name });
42
+ expect(result.piece).toBeInstanceOf(Piece);
43
+ });
44
+ test('parsePieceOptionArgv throws', async () => {
45
+ const name = 'links';
46
+ const context = makeContext();
47
+ spies.getTypes = vi.spyOn(context.pieces, 'getTypes').mockResolvedValueOnce(['books']);
48
+ const parsing = parsePieceOptionArgv(context, { piece: name });
49
+ await expect(parsing).rejects.toThrow();
50
+ });
51
+ test('parsePiecePathPositionalArgv', async () => {
52
+ const name = 'books';
53
+ const context = makeContext();
54
+ const path = `./path/file.${name}.md`;
55
+ const piece = makePieceMock();
56
+ const markdown = makeMarkdownSample();
57
+ spies.findPieceNames = vi.spyOn(context.pieces, 'getTypes').mockResolvedValueOnce(['books']);
58
+ spies.getPiece = vi.spyOn(context.pieces, 'getPiece').mockResolvedValueOnce(piece);
59
+ spies.parseFilename = vi
60
+ .spyOn(context.pieces, 'parseFilename')
61
+ .mockReturnValueOnce({ type: name, file: piece.type, format: 'md', slug: 'file' });
62
+ spies.get = vi.spyOn(piece, 'get').mockResolvedValueOnce(markdown);
63
+ const result = await parsePiecePathPositionalArgv(context, { piece: path });
64
+ expect(result.markdown).toEqual(markdown);
65
+ expect(result.piece).toEqual(piece);
66
+ expect(result.file).toEqual(path);
67
+ });
68
+ test('parsePiecePathPositionalArgv no valid piece types', async () => {
69
+ const name = 'books';
70
+ const context = makeContext();
71
+ const path = `./path/file.${name}.md`;
72
+ const piece = makePieceMock();
73
+ const markdown = makeMarkdownSample();
74
+ spies.findPieceNames = vi.spyOn(context.pieces, 'getTypes').mockResolvedValueOnce([]);
75
+ spies.getPiece = vi.spyOn(context.pieces, 'getPiece').mockResolvedValueOnce(piece);
76
+ spies.get = vi.spyOn(piece, 'get').mockResolvedValueOnce(markdown);
77
+ spies.parseFilename = vi
78
+ .spyOn(context.pieces, 'parseFilename')
79
+ .mockReturnValueOnce({ type: name, file: piece.type, format: 'md', slug: 'file' });
80
+ const parsing = parsePiecePathPositionalArgv(context, { piece: path });
81
+ await expect(parsing).rejects.toThrow();
82
+ });
83
+ test('parsePiecePathPositionalArgv invalid piece type', async () => {
84
+ const name = 'books';
85
+ const context = makeContext();
86
+ const path = `./path/file.${name}-2.md`;
87
+ const piece = makePieceMock();
88
+ spies.findPieceNames = vi.spyOn(context.pieces, 'getTypes').mockResolvedValueOnce([name]);
89
+ spies.getPiece = vi.spyOn(context.pieces, 'getPiece').mockResolvedValueOnce(piece);
90
+ spies.parseFilename = vi
91
+ .spyOn(context.pieces, 'parseFilename')
92
+ .mockReturnValueOnce({ type: 'books-2', file: path, format: 'md', slug: 'file' });
93
+ const resulting = parsePiecePathPositionalArgv(context, { piece: path });
94
+ await expect(resulting).rejects.toThrow();
95
+ });
96
+ });
97
+ //# sourceMappingURL=pieces.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pieces.test.js","sourceRoot":"","sources":["../../../../../src/lib/commands/utils/pieces.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import Conf from 'conf';
2
+ import { LuzzleStorage } from '@luzzle/core';
3
+ type SchemaConfig = {
4
+ api_keys?: {
5
+ google?: string;
6
+ };
7
+ database?: {
8
+ type?: 'sqlite';
9
+ path?: string;
10
+ };
11
+ storage?: {
12
+ type?: 'filesystem' | 'webdav';
13
+ root?: string;
14
+ options?: Record<string, string>;
15
+ };
16
+ };
17
+ type Config = Conf<SchemaConfig>;
18
+ declare function getConfig(_path?: string): Conf<SchemaConfig>;
19
+ declare function withDefaults(config: Conf<SchemaConfig>): {
20
+ storage: {
21
+ type: string;
22
+ root: string;
23
+ options: Record<string, string>;
24
+ };
25
+ database: {
26
+ type: string;
27
+ path: string;
28
+ };
29
+ api_keys: {
30
+ google: string;
31
+ };
32
+ };
33
+ declare function getDatabasePath(config: Conf<SchemaConfig>): string;
34
+ declare function getStorage(config: Conf<SchemaConfig>): LuzzleStorage;
35
+ export { getConfig, getStorage, getDatabasePath, withDefaults, type Config, type SchemaConfig };
@@ -0,0 +1,145 @@
1
+ import YAML from 'yaml';
2
+ import Conf from 'conf';
3
+ import { StorageFileSystem, StorageWebDAV } from '@luzzle/core';
4
+ import path from 'path';
5
+ const configOptions = {
6
+ fileExtension: 'yaml',
7
+ serialize: YAML.stringify,
8
+ deserialize: YAML.parse,
9
+ projectSuffix: '',
10
+ projectName: '@luzzle/cli',
11
+ schema: {
12
+ storage: {
13
+ type: 'object',
14
+ properties: {
15
+ type: {
16
+ type: 'string',
17
+ enum: ['filesystem', 'webdav'],
18
+ description: 'storage type',
19
+ },
20
+ root: {
21
+ type: 'string',
22
+ description: 'root directory for luzzle files',
23
+ },
24
+ options: {
25
+ type: 'object',
26
+ description: 'options for webdav storage',
27
+ properties: {
28
+ url: {
29
+ type: 'string',
30
+ description: 'url for webdav',
31
+ },
32
+ username: {
33
+ type: 'string',
34
+ description: 'username for webdav',
35
+ },
36
+ password: {
37
+ type: 'string',
38
+ description: 'password for webdav',
39
+ },
40
+ },
41
+ },
42
+ },
43
+ },
44
+ database: {
45
+ type: 'object',
46
+ properties: {
47
+ path: {
48
+ type: 'string',
49
+ description: 'path to database file',
50
+ },
51
+ type: {
52
+ type: 'string',
53
+ enum: ['sqlite'],
54
+ description: 'database type',
55
+ },
56
+ },
57
+ },
58
+ api_keys: {
59
+ type: 'object',
60
+ properties: {
61
+ google: {
62
+ type: 'string',
63
+ description: 'google key for prompting',
64
+ },
65
+ },
66
+ },
67
+ },
68
+ };
69
+ function getConfig(_path) {
70
+ if (_path) {
71
+ const resolvedPath = path.resolve(_path);
72
+ const configDir = path.dirname(resolvedPath);
73
+ const extension = path.extname(resolvedPath);
74
+ const configName = path.basename(resolvedPath, extension);
75
+ return new Conf({
76
+ ...configOptions,
77
+ cwd: configDir,
78
+ configName: configName,
79
+ fileExtension: extension.replace(/^\./, ''),
80
+ projectName: '',
81
+ });
82
+ }
83
+ else {
84
+ return new Conf(configOptions);
85
+ }
86
+ }
87
+ function withDefaults(config) {
88
+ const store = config.store;
89
+ const configDir = path.dirname(path.resolve(config.path));
90
+ const defaults = {
91
+ storage: {
92
+ root: configDir,
93
+ type: 'filesystem',
94
+ options: undefined,
95
+ },
96
+ database: {
97
+ type: 'sqlite',
98
+ path: path.join(configDir, 'luzzle.sqlite'),
99
+ },
100
+ api_keys: {
101
+ google: undefined,
102
+ },
103
+ };
104
+ return {
105
+ storage: {
106
+ ...defaults.storage,
107
+ ...store.storage,
108
+ },
109
+ database: {
110
+ ...defaults.database,
111
+ ...store.database,
112
+ },
113
+ api_keys: {
114
+ ...defaults.api_keys,
115
+ ...store.api_keys,
116
+ },
117
+ };
118
+ }
119
+ function getDatabasePath(config) {
120
+ const defaults = withDefaults(config);
121
+ const databasePath = config.get('database.path', defaults.database.path);
122
+ const databaseType = config.get('database.type', defaults.database.type);
123
+ if (databaseType == 'sqlite') {
124
+ return databasePath;
125
+ }
126
+ throw new Error(`unknown database type: ${databaseType}`);
127
+ }
128
+ function getStorage(config) {
129
+ const defaults = withDefaults(config);
130
+ const storageRoot = config.get('storage.root', defaults.storage.root);
131
+ const storageType = config.get('storage.type', defaults.storage.type);
132
+ const storageOptions = config.get('storage.options', defaults.storage.options);
133
+ if (storageType == 'filesystem') {
134
+ return new StorageFileSystem(storageRoot);
135
+ }
136
+ else if (storageType == 'webdav' && storageOptions?.url) {
137
+ const url = storageOptions.url;
138
+ const username = storageOptions.username;
139
+ const password = storageOptions.password;
140
+ return new StorageWebDAV(url, storageRoot, { username, password });
141
+ }
142
+ throw new Error(`unknown storage type: ${storageType}`);
143
+ }
144
+ export { getConfig, getStorage, getDatabasePath, withDefaults };
145
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Mocked } from 'vitest';
2
+ import Conf from 'conf';
3
+ import { SchemaConfig } from './config.js';
4
+ declare function mockConfig(): Mocked<Conf<SchemaConfig>>;
5
+ export { mockConfig };
@@ -0,0 +1,10 @@
1
+ import { vi } from 'vitest';
2
+ vi.mock('./config.js');
3
+ function mockConfig() {
4
+ return {
5
+ set: vi.fn(),
6
+ get: vi.fn(),
7
+ };
8
+ }
9
+ export { mockConfig };
10
+ //# sourceMappingURL=config.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.mock.js","sourceRoot":"","sources":["../../../src/lib/config.mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAU,MAAM,QAAQ,CAAA;AAInC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AAEtB,SAAS,UAAU;IAClB,OAAO;QACN,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;QACZ,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;KAC6B,CAAA;AAC3C,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,129 @@
1
+ import { describe, expect, test, vi, afterEach } from 'vitest';
2
+ import Conf from 'conf';
3
+ import { getConfig, getDatabasePath, getStorage } from './config.js';
4
+ import log from './log.js';
5
+ import path from 'path';
6
+ import { StorageFileSystem, StorageWebDAV } from '@luzzle/core';
7
+ vi.mock('@luzzle/core');
8
+ vi.mock('./log.js');
9
+ vi.mock('path');
10
+ vi.mock('conf', () => {
11
+ const ConfMock = vi.fn();
12
+ ConfMock.prototype.get = vi.fn();
13
+ ConfMock.prototype.set = vi.fn();
14
+ ConfMock.prototype.store = {};
15
+ ConfMock.prototype.path = '/some/path';
16
+ return { default: ConfMock };
17
+ });
18
+ const mocks = {
19
+ Conf: Conf,
20
+ ConfGet: vi.spyOn(Conf.prototype, 'get'),
21
+ ConfSet: vi.spyOn(Conf.prototype, 'set'),
22
+ logWarn: vi.spyOn(log, 'warn'),
23
+ pathResolve: vi.spyOn(path, 'resolve'),
24
+ pathDirname: vi.spyOn(path, 'dirname'),
25
+ pathBasename: vi.spyOn(path, 'basename'),
26
+ pathExtname: vi.spyOn(path, 'extname'),
27
+ };
28
+ const spies = {};
29
+ describe('lib/config', () => {
30
+ afterEach(() => {
31
+ Object.values(mocks).forEach((mock) => {
32
+ mock.mockReset();
33
+ });
34
+ Object.keys(spies).forEach((key) => {
35
+ spies[key].mockRestore();
36
+ delete spies[key];
37
+ });
38
+ });
39
+ test('getConfig', async () => {
40
+ getConfig();
41
+ expect(mocks.Conf).toHaveBeenCalledOnce();
42
+ expect(mocks.Conf).not.toHaveBeenCalledWith(expect.objectContaining({ cwd: expect.anything() }));
43
+ });
44
+ test('getConfig with path', async () => {
45
+ const configPath = '/test/dir/config.yaml';
46
+ mocks.pathResolve.mockReturnValueOnce(configPath);
47
+ mocks.pathDirname.mockReturnValueOnce('/test/dir');
48
+ mocks.pathBasename.mockReturnValueOnce('config');
49
+ mocks.pathExtname.mockReturnValueOnce('.yaml');
50
+ getConfig(configPath);
51
+ expect(mocks.Conf).toHaveBeenCalledOnce();
52
+ expect(mocks.Conf).toHaveBeenCalledWith(expect.objectContaining({
53
+ cwd: '/test/dir',
54
+ configName: 'config',
55
+ fileExtension: 'yaml',
56
+ projectName: '',
57
+ }));
58
+ });
59
+ test('getDatabasePath', async () => {
60
+ mocks.pathResolve.mockReturnValueOnce('/test/dir/some-path.yaml');
61
+ mocks.pathDirname.mockReturnValueOnce('/test/dir');
62
+ mocks.pathBasename.mockReturnValueOnce('some-path');
63
+ mocks.pathExtname.mockReturnValueOnce('.yaml');
64
+ const config = getConfig('some-path');
65
+ const dbPath = '/db/path/to/here';
66
+ const dbType = 'sqlite';
67
+ mocks.ConfGet.mockReturnValueOnce(dbPath);
68
+ mocks.ConfGet.mockReturnValueOnce(dbType);
69
+ const databasePath = getDatabasePath(config);
70
+ expect(databasePath).toBe(dbPath);
71
+ });
72
+ test('getDatabasePath throws', async () => {
73
+ mocks.pathResolve.mockReturnValueOnce('/test/dir/some-path.yaml');
74
+ mocks.pathDirname.mockReturnValueOnce('/test/dir');
75
+ mocks.pathBasename.mockReturnValueOnce('some-path');
76
+ mocks.pathExtname.mockReturnValueOnce('.yaml');
77
+ const config = getConfig('some-path');
78
+ const dbPath = '/db/path/to/here';
79
+ const dbType = 'postgres';
80
+ mocks.ConfGet.mockReturnValueOnce(dbPath);
81
+ mocks.ConfGet.mockReturnValueOnce(dbType);
82
+ expect(() => getDatabasePath(config)).toThrow();
83
+ });
84
+ test('getStorage type filesystem', async () => {
85
+ mocks.pathResolve.mockReturnValueOnce('/test/dir/some-path.yaml');
86
+ mocks.pathDirname.mockReturnValueOnce('/test/dir');
87
+ mocks.pathBasename.mockReturnValueOnce('some-path');
88
+ mocks.pathExtname.mockReturnValueOnce('.yaml');
89
+ const config = getConfig('some-path');
90
+ const root = 'root';
91
+ const type = 'filesystem';
92
+ const options = undefined;
93
+ mocks.ConfGet.mockReturnValueOnce(root);
94
+ mocks.ConfGet.mockReturnValueOnce(type);
95
+ mocks.ConfGet.mockReturnValueOnce(options);
96
+ const storage = getStorage(config);
97
+ expect(storage).toBeInstanceOf(StorageFileSystem);
98
+ });
99
+ test('getStorage type webdav', async () => {
100
+ mocks.pathResolve.mockReturnValueOnce('/test/dir/some-path.yaml');
101
+ mocks.pathDirname.mockReturnValueOnce('/test/dir');
102
+ mocks.pathBasename.mockReturnValueOnce('some-path');
103
+ mocks.pathExtname.mockReturnValueOnce('.yaml');
104
+ const config = getConfig('some-path');
105
+ const root = 'root';
106
+ const type = 'webdav';
107
+ const options = { username: 'a', password: 'p', url: 'u' };
108
+ mocks.ConfGet.mockReturnValueOnce(root);
109
+ mocks.ConfGet.mockReturnValueOnce(type);
110
+ mocks.ConfGet.mockReturnValueOnce(options);
111
+ const storage = getStorage(config);
112
+ expect(storage).toBeInstanceOf(StorageWebDAV);
113
+ });
114
+ test('getStorage invalid type', async () => {
115
+ mocks.pathResolve.mockReturnValueOnce('/test/dir/some-path.yaml');
116
+ mocks.pathDirname.mockReturnValueOnce('/test/dir');
117
+ mocks.pathBasename.mockReturnValueOnce('some-path');
118
+ mocks.pathExtname.mockReturnValueOnce('.yaml');
119
+ const config = getConfig('some-path');
120
+ const root = 'root';
121
+ const type = 'webdax';
122
+ const options = { username: 'a', password: 'p', url: 'u' };
123
+ mocks.ConfGet.mockReturnValueOnce(root);
124
+ mocks.ConfGet.mockReturnValueOnce(type);
125
+ mocks.ConfGet.mockReturnValueOnce(options);
126
+ expect(() => getStorage(config)).toThrowError();
127
+ });
128
+ });
129
+ //# sourceMappingURL=config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../../src/lib/config.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Mocked } from 'vitest';
2
+ import { LuzzleDatabase } from '@luzzle/core';
3
+ declare function mockDatabase(): {
4
+ db: Mocked<LuzzleDatabase>;
5
+ queries: {
6
+ where: import("vitest").Mock<(...args: any[]) => any>;
7
+ whereRef: import("vitest").Mock<(...args: any[]) => any>;
8
+ select: import("vitest").Mock<(...args: any[]) => any>;
9
+ selectAll: import("vitest").Mock<(...args: any[]) => any>;
10
+ execute: import("vitest").Mock<(...args: any[]) => any>;
11
+ executeTakeFirst: import("vitest").Mock<(...args: any[]) => any>;
12
+ executeTakeFirstOrThrow: import("vitest").Mock<(...args: any[]) => any>;
13
+ set: import("vitest").Mock<(...args: any[]) => any>;
14
+ as: import("vitest").Mock<(...args: any[]) => any>;
15
+ values: import("vitest").Mock<(...args: any[]) => any>;
16
+ onConflict: import("vitest").Mock<(...args: any[]) => any>;
17
+ returning: import("vitest").Mock<(...args: any[]) => any>;
18
+ groupBy: import("vitest").Mock<(...args: any[]) => any>;
19
+ returningAll: import("vitest").Mock<(...args: any[]) => any>;
20
+ };
21
+ };
22
+ export { mockDatabase };
@@ -0,0 +1,34 @@
1
+ import { vi } from 'vitest';
2
+ function mockDatabase() {
3
+ const queries = {
4
+ where: vi.fn().mockReturnThis(),
5
+ whereRef: vi.fn().mockReturnThis(),
6
+ select: vi.fn().mockReturnThis(),
7
+ selectAll: vi.fn().mockReturnThis(),
8
+ execute: vi.fn(),
9
+ executeTakeFirst: vi.fn(),
10
+ executeTakeFirstOrThrow: vi.fn(),
11
+ set: vi.fn().mockReturnThis(),
12
+ as: vi.fn(),
13
+ values: vi.fn().mockReturnThis(),
14
+ onConflict: vi.fn().mockReturnThis(),
15
+ returning: vi.fn().mockReturnThis(),
16
+ groupBy: vi.fn().mockReturnThis(),
17
+ returningAll: vi.fn().mockReturnThis(),
18
+ };
19
+ const db = {
20
+ selectFrom: vi.fn().mockImplementation(() => queries),
21
+ deleteFrom: vi.fn().mockImplementation(() => queries),
22
+ insertInto: vi.fn().mockImplementation(() => queries),
23
+ updateTable: vi.fn().mockImplementation(() => queries),
24
+ fn: {
25
+ count: vi.fn(() => ({
26
+ as: queries.as,
27
+ })),
28
+ },
29
+ destroy: vi.fn(),
30
+ };
31
+ return { db, queries };
32
+ }
33
+ export { mockDatabase };
34
+ //# sourceMappingURL=database.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.mock.js","sourceRoot":"","sources":["../../../src/lib/database.mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAU,MAAM,QAAQ,CAAA;AAGnC,SAAS,YAAY;IACpB,MAAM,OAAO,GAAG;QACf,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC/B,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAClC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAChC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACnC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;QAChB,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;QACzB,uBAAuB,EAAE,EAAE,CAAC,EAAE,EAAE;QAChC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC7B,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;QACX,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAChC,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACpC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACnC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACjC,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;KACtC,CAAA;IAED,MAAM,EAAE,GAAG;QACV,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;QACrD,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;QACrD,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;QACrD,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;QACtD,EAAE,EAAE;YACH,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnB,EAAE,EAAE,OAAO,CAAC,EAAE;aACd,CAAC,CAAC;SACH;QACD,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;KACqB,CAAA;IAEtC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAA;AACvB,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const log: import("pino").Logger<never, boolean>;
2
+ export default log;
@@ -0,0 +1,9 @@
1
+ import { pino } from 'pino';
2
+ import pretty from 'pino-pretty';
3
+ const log = pino(pretty({
4
+ levelFirst: true,
5
+ colorize: true,
6
+ ignore: 'time,hostname,pid',
7
+ }));
8
+ export default log;
9
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/lib/log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,MAAM,GAAG,GAAG,IAAI,CACf,MAAM,CAAC;IACN,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,mBAAmB;CAC3B,CAAC,CACF,CAAA;AAED,eAAe,GAAG,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: "unbuilt";
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export default "0.0.127";
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAe,SAAS,CAAA"}