@kywi-software/mcp 0.1.0

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 (119) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +77 -0
  3. package/dist/__tests__/auto-detect.test.d.ts +2 -0
  4. package/dist/__tests__/auto-detect.test.d.ts.map +1 -0
  5. package/dist/__tests__/auto-detect.test.js +134 -0
  6. package/dist/__tests__/auto-detect.test.js.map +1 -0
  7. package/dist/__tests__/config.test.d.ts +2 -0
  8. package/dist/__tests__/config.test.d.ts.map +1 -0
  9. package/dist/__tests__/config.test.js +72 -0
  10. package/dist/__tests__/config.test.js.map +1 -0
  11. package/dist/__tests__/developer-mutation.test.d.ts +2 -0
  12. package/dist/__tests__/developer-mutation.test.d.ts.map +1 -0
  13. package/dist/__tests__/developer-mutation.test.js +511 -0
  14. package/dist/__tests__/developer-mutation.test.js.map +1 -0
  15. package/dist/__tests__/developer-read-only.test.d.ts +2 -0
  16. package/dist/__tests__/developer-read-only.test.d.ts.map +1 -0
  17. package/dist/__tests__/developer-read-only.test.js +192 -0
  18. package/dist/__tests__/developer-read-only.test.js.map +1 -0
  19. package/dist/__tests__/site-content-tools.test.d.ts +2 -0
  20. package/dist/__tests__/site-content-tools.test.d.ts.map +1 -0
  21. package/dist/__tests__/site-content-tools.test.js +446 -0
  22. package/dist/__tests__/site-content-tools.test.js.map +1 -0
  23. package/dist/__tests__/site-layout-tools.test.d.ts +2 -0
  24. package/dist/__tests__/site-layout-tools.test.d.ts.map +1 -0
  25. package/dist/__tests__/site-layout-tools.test.js +316 -0
  26. package/dist/__tests__/site-layout-tools.test.js.map +1 -0
  27. package/dist/__tests__/site-other-tools.test.d.ts +2 -0
  28. package/dist/__tests__/site-other-tools.test.d.ts.map +1 -0
  29. package/dist/__tests__/site-other-tools.test.js +318 -0
  30. package/dist/__tests__/site-other-tools.test.js.map +1 -0
  31. package/dist/config.d.ts +31 -0
  32. package/dist/config.d.ts.map +1 -0
  33. package/dist/config.js +4 -0
  34. package/dist/config.js.map +1 -0
  35. package/dist/developer/auto-detect.d.ts +17 -0
  36. package/dist/developer/auto-detect.d.ts.map +1 -0
  37. package/dist/developer/auto-detect.js +54 -0
  38. package/dist/developer/auto-detect.js.map +1 -0
  39. package/dist/developer/cli.d.ts +3 -0
  40. package/dist/developer/cli.d.ts.map +1 -0
  41. package/dist/developer/cli.js +14 -0
  42. package/dist/developer/cli.js.map +1 -0
  43. package/dist/developer/index.d.ts +4 -0
  44. package/dist/developer/index.d.ts.map +1 -0
  45. package/dist/developer/index.js +9 -0
  46. package/dist/developer/index.js.map +1 -0
  47. package/dist/developer/server.d.ts +4 -0
  48. package/dist/developer/server.d.ts.map +1 -0
  49. package/dist/developer/server.js +29 -0
  50. package/dist/developer/server.js.map +1 -0
  51. package/dist/developer/tools/api-keys.d.ts +48 -0
  52. package/dist/developer/tools/api-keys.d.ts.map +1 -0
  53. package/dist/developer/tools/api-keys.js +51 -0
  54. package/dist/developer/tools/api-keys.js.map +1 -0
  55. package/dist/developer/tools/config-mutation.d.ts +139 -0
  56. package/dist/developer/tools/config-mutation.d.ts.map +1 -0
  57. package/dist/developer/tools/config-mutation.js +277 -0
  58. package/dist/developer/tools/config-mutation.js.map +1 -0
  59. package/dist/developer/tools/content-type-tools.d.ts +32 -0
  60. package/dist/developer/tools/content-type-tools.d.ts.map +1 -0
  61. package/dist/developer/tools/content-type-tools.js +92 -0
  62. package/dist/developer/tools/content-type-tools.js.map +1 -0
  63. package/dist/developer/tools/read-only.d.ts +86 -0
  64. package/dist/developer/tools/read-only.d.ts.map +1 -0
  65. package/dist/developer/tools/read-only.js +235 -0
  66. package/dist/developer/tools/read-only.js.map +1 -0
  67. package/dist/developer/tools/scaffolding.d.ts +67 -0
  68. package/dist/developer/tools/scaffolding.d.ts.map +1 -0
  69. package/dist/developer/tools/scaffolding.js +207 -0
  70. package/dist/developer/tools/scaffolding.js.map +1 -0
  71. package/dist/index.d.ts +7 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +6 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/shared.d.ts +15 -0
  76. package/dist/shared.d.ts.map +1 -0
  77. package/dist/shared.js +7 -0
  78. package/dist/shared.js.map +1 -0
  79. package/dist/site/cli.d.ts +3 -0
  80. package/dist/site/cli.d.ts.map +1 -0
  81. package/dist/site/cli.js +12 -0
  82. package/dist/site/cli.js.map +1 -0
  83. package/dist/site/index.d.ts +4 -0
  84. package/dist/site/index.d.ts.map +1 -0
  85. package/dist/site/index.js +9 -0
  86. package/dist/site/index.js.map +1 -0
  87. package/dist/site/server.d.ts +10 -0
  88. package/dist/site/server.d.ts.map +1 -0
  89. package/dist/site/server.js +73 -0
  90. package/dist/site/server.js.map +1 -0
  91. package/dist/site/tools/content.d.ts +250 -0
  92. package/dist/site/tools/content.d.ts.map +1 -0
  93. package/dist/site/tools/content.js +329 -0
  94. package/dist/site/tools/content.js.map +1 -0
  95. package/dist/site/tools/feeds.d.ts +62 -0
  96. package/dist/site/tools/feeds.d.ts.map +1 -0
  97. package/dist/site/tools/feeds.js +97 -0
  98. package/dist/site/tools/feeds.js.map +1 -0
  99. package/dist/site/tools/layout.d.ts +163 -0
  100. package/dist/site/tools/layout.d.ts.map +1 -0
  101. package/dist/site/tools/layout.js +226 -0
  102. package/dist/site/tools/layout.js.map +1 -0
  103. package/dist/site/tools/media.d.ts +38 -0
  104. package/dist/site/tools/media.d.ts.map +1 -0
  105. package/dist/site/tools/media.js +52 -0
  106. package/dist/site/tools/media.js.map +1 -0
  107. package/dist/site/tools/search.d.ts +40 -0
  108. package/dist/site/tools/search.d.ts.map +1 -0
  109. package/dist/site/tools/search.js +60 -0
  110. package/dist/site/tools/search.js.map +1 -0
  111. package/dist/site/tools/users.d.ts +60 -0
  112. package/dist/site/tools/users.d.ts.map +1 -0
  113. package/dist/site/tools/users.js +71 -0
  114. package/dist/site/tools/users.js.map +1 -0
  115. package/dist/site/tools/webhooks.d.ts +34 -0
  116. package/dist/site/tools/webhooks.d.ts.map +1 -0
  117. package/dist/site/tools/webhooks.js +44 -0
  118. package/dist/site/tools/webhooks.js.map +1 -0
  119. package/package.json +61 -0
@@ -0,0 +1,192 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { handleGetConfigSummary, handleGetContentTypes, handleGetThemes, handleGetModules, handleGetPlugins, handlePreviewSchema, } from '../developer/tools/read-only.js';
3
+ vi.mock('node:fs', () => ({
4
+ readFileSync: vi.fn(),
5
+ }));
6
+ import { readFileSync } from 'node:fs';
7
+ const mockedReadFileSync = vi.mocked(readFileSync);
8
+ function createMockHttp() {
9
+ return {
10
+ get: vi.fn(),
11
+ post: vi.fn(),
12
+ put: vi.fn(),
13
+ delete: vi.fn(),
14
+ setToken: vi.fn(),
15
+ };
16
+ }
17
+ const sampleConfig = `
18
+ import { defineContentType, defineTheme, definePlugin, defineModule } from '@kywi/core'
19
+
20
+ defineContentType('page', {
21
+ label: 'Page',
22
+ baseType: 'page',
23
+ fields: [
24
+ { name: 'title', type: 'text', label: 'Title' },
25
+ ],
26
+ })
27
+
28
+ defineContentType('post', {
29
+ label: 'Blog Post',
30
+ baseType: 'page',
31
+ fields: [
32
+ { name: 'title', type: 'text', label: 'Title' },
33
+ { name: 'body', type: 'richtext', label: 'Body' },
34
+ ],
35
+ })
36
+
37
+ defineTheme('default', {
38
+ label: 'Default Theme',
39
+ regions: ['header', 'main', 'footer'],
40
+ })
41
+
42
+ definePlugin('seo', {
43
+ label: 'SEO Plugin',
44
+ })
45
+
46
+ defineModule('analytics', {
47
+ label: 'Analytics',
48
+ })
49
+ `;
50
+ beforeEach(() => {
51
+ vi.clearAllMocks();
52
+ });
53
+ describe('Developer read-only tools', () => {
54
+ // ─── get_config_summary ──────────────────────────────────────────────────
55
+ describe('handleGetConfigSummary', () => {
56
+ it('filesystem mode: returns config summary', async () => {
57
+ mockedReadFileSync.mockReturnValue(sampleConfig);
58
+ const ctx = { mode: 'filesystem', configPath: '/project/kywi.config.ts' };
59
+ const result = await handleGetConfigSummary(ctx);
60
+ const data = JSON.parse(result.content[0].text);
61
+ expect(data.mode).toBe('filesystem');
62
+ expect(data.contentTypes).toBe(2);
63
+ expect(data.themes).toBe(1);
64
+ expect(data.plugins).toBe(1);
65
+ });
66
+ it('api mode: fetches from API', async () => {
67
+ const http = createMockHttp();
68
+ vi.mocked(http.get)
69
+ .mockResolvedValueOnce([{ name: 'page' }, { name: 'post' }])
70
+ .mockResolvedValueOnce([{ id: 'site1' }]);
71
+ const ctx = { mode: 'api', http };
72
+ const result = await handleGetConfigSummary(ctx);
73
+ const data = JSON.parse(result.content[0].text);
74
+ expect(data.mode).toBe('api');
75
+ expect(data.contentTypes).toBe(2);
76
+ expect(data.sites).toBe(1);
77
+ });
78
+ it('returns error when no source available', async () => {
79
+ const ctx = { mode: 'filesystem' };
80
+ const result = await handleGetConfigSummary(ctx);
81
+ expect(result.isError).toBe(true);
82
+ });
83
+ });
84
+ // ─── get_content_types ───────────────────────────────────────────────────
85
+ describe('handleGetContentTypes', () => {
86
+ it('filesystem mode: extracts content type names', async () => {
87
+ mockedReadFileSync.mockReturnValue(sampleConfig);
88
+ const ctx = { mode: 'filesystem', configPath: '/project/kywi.config.ts' };
89
+ const result = await handleGetContentTypes(ctx);
90
+ const data = JSON.parse(result.content[0].text);
91
+ expect(data.contentTypes).toEqual(['page', 'post']);
92
+ });
93
+ it('api mode: fetches from API', async () => {
94
+ const http = createMockHttp();
95
+ vi.mocked(http.get).mockResolvedValue([{ name: 'page' }, { name: 'post' }]);
96
+ const ctx = { mode: 'api', http };
97
+ const result = await handleGetContentTypes(ctx);
98
+ const data = JSON.parse(result.content[0].text);
99
+ expect(data.contentTypes).toEqual([{ name: 'page' }, { name: 'post' }]);
100
+ });
101
+ });
102
+ // ─── get_themes ──────────────────────────────────────────────────────────
103
+ describe('handleGetThemes', () => {
104
+ it('filesystem mode: extracts theme names', async () => {
105
+ mockedReadFileSync.mockReturnValue(sampleConfig);
106
+ const ctx = { mode: 'filesystem', configPath: '/project/kywi.config.ts' };
107
+ const result = await handleGetThemes(ctx);
108
+ const data = JSON.parse(result.content[0].text);
109
+ expect(data.themes).toEqual(['default']);
110
+ });
111
+ it('api mode: fetches from API', async () => {
112
+ const http = createMockHttp();
113
+ vi.mocked(http.get).mockResolvedValue([{ name: 'default' }]);
114
+ const ctx = { mode: 'api', http };
115
+ const result = await handleGetThemes(ctx);
116
+ const data = JSON.parse(result.content[0].text);
117
+ expect(data.themes).toEqual([{ name: 'default' }]);
118
+ });
119
+ it('api mode without http: returns error', async () => {
120
+ const ctx = { mode: 'api' };
121
+ const result = await handleGetThemes(ctx);
122
+ expect(result.isError).toBe(true);
123
+ expect(result.content[0].text).toContain('No config source available');
124
+ });
125
+ });
126
+ // ─── get_modules ─────────────────────────────────────────────────────────
127
+ describe('handleGetModules', () => {
128
+ it('filesystem mode: extracts module names', async () => {
129
+ mockedReadFileSync.mockReturnValue(sampleConfig);
130
+ const ctx = { mode: 'filesystem', configPath: '/project/kywi.config.ts' };
131
+ const result = await handleGetModules(ctx);
132
+ const data = JSON.parse(result.content[0].text);
133
+ expect(data.modules).toEqual(['analytics']);
134
+ });
135
+ it('api mode: fetches from API', async () => {
136
+ const http = createMockHttp();
137
+ vi.mocked(http.get).mockResolvedValue([{ name: 'analytics' }]);
138
+ const ctx = { mode: 'api', http };
139
+ const result = await handleGetModules(ctx);
140
+ const data = JSON.parse(result.content[0].text);
141
+ expect(data.modules).toEqual([{ name: 'analytics' }]);
142
+ });
143
+ it('api mode without http: returns error', async () => {
144
+ const ctx = { mode: 'api' };
145
+ const result = await handleGetModules(ctx);
146
+ expect(result.isError).toBe(true);
147
+ expect(result.content[0].text).toContain('No config source available');
148
+ });
149
+ });
150
+ // ─── get_plugins ─────────────────────────────────────────────────────────
151
+ describe('handleGetPlugins', () => {
152
+ it('filesystem mode: extracts plugin names', async () => {
153
+ mockedReadFileSync.mockReturnValue(sampleConfig);
154
+ const ctx = { mode: 'filesystem', configPath: '/project/kywi.config.ts' };
155
+ const result = await handleGetPlugins(ctx);
156
+ const data = JSON.parse(result.content[0].text);
157
+ expect(data.plugins).toEqual(['seo']);
158
+ });
159
+ it('api mode: fetches from API', async () => {
160
+ const http = createMockHttp();
161
+ vi.mocked(http.get).mockResolvedValue([{ name: 'seo' }]);
162
+ const ctx = { mode: 'api', http };
163
+ const result = await handleGetPlugins(ctx);
164
+ const data = JSON.parse(result.content[0].text);
165
+ expect(data.plugins).toEqual([{ name: 'seo' }]);
166
+ });
167
+ it('api mode without http: returns error', async () => {
168
+ const ctx = { mode: 'api' };
169
+ const result = await handleGetPlugins(ctx);
170
+ expect(result.isError).toBe(true);
171
+ expect(result.content[0].text).toContain('No config source available');
172
+ });
173
+ });
174
+ // ─── preview_schema ──────────────────────────────────────────────────────
175
+ describe('handlePreviewSchema', () => {
176
+ it('filesystem mode: returns schema preview note', async () => {
177
+ mockedReadFileSync.mockReturnValue(sampleConfig);
178
+ const ctx = { mode: 'filesystem', configPath: '/project/kywi.config.ts' };
179
+ const result = await handlePreviewSchema(ctx, {});
180
+ const data = JSON.parse(result.content[0].text);
181
+ expect(data.mode).toBe('filesystem');
182
+ expect(data.source).toBe('/project/kywi.config.ts');
183
+ });
184
+ it('non-filesystem mode: returns limitation note', async () => {
185
+ const ctx = { mode: 'api' };
186
+ const result = await handlePreviewSchema(ctx, {});
187
+ const data = JSON.parse(result.content[0].text);
188
+ expect(data.note).toContain('only available in filesystem or api mode');
189
+ });
190
+ });
191
+ });
192
+ //# sourceMappingURL=developer-read-only.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developer-read-only.test.js","sourceRoot":"","sources":["../../src/__tests__/developer-read-only.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAE7D,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,iCAAiC,CAAA;AAGxC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACxB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;CACtB,CAAC,CAAC,CAAA;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,MAAM,kBAAkB,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AAElD,SAAS,cAAc;IACrB,OAAO;QACL,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;QACZ,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;QACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;QACf,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;KACW,CAAA;AAChC,CAAC;AAED,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCpB,CAAA;AAED,UAAU,CAAC,GAAG,EAAE;IACd,EAAE,CAAC,aAAa,EAAE,CAAA;AACpB,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,4EAA4E;IAE5E,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,kBAAkB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;YAEhD,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,yBAAyB,EAAE,CAAA;YAC1F,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAA;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAE/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACpC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC3B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;YAC7B,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;iBAChB,qBAAqB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;iBAC3D,qBAAqB,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;YAE3C,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;YAClD,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAA;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAE/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC7B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC5B,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAA;YACnD,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAA;YAChD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAE5E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,kBAAkB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;YAEhD,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,yBAAyB,EAAE,CAAA;YAC1F,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAA;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAE/C,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;YAC7B,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;YAE3E,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;YAClD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAA;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAE/C,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAE5E,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,kBAAkB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;YAEhD,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,yBAAyB,EAAE,CAAA;YAC1F,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAA;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAE/C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;YAC7B,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;YAE5D,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;YAClD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAA;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAE/C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;YAC5C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAA;YACzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAE5E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,kBAAkB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;YAEhD,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,yBAAyB,EAAE,CAAA;YAC1F,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAE/C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;YAC7B,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;YAE9D,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;YAClD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAE/C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;YAC5C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAE5E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,kBAAkB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;YAEhD,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,yBAAyB,EAAE,CAAA;YAC1F,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAE/C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;YAC7B,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;YAExD,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;YAClD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAE/C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;YAC5C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAE5E,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,kBAAkB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;YAEhD,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,yBAAyB,EAAE,CAAA;YAC1F,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAE/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;YAC5C,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAE/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,0CAA0C,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=site-content-tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site-content-tools.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/site-content-tools.test.ts"],"names":[],"mappings":""}