Skip to content

Commit 510e333

Browse files
committed
add new features
1 parent 8273181 commit 510e333

64 files changed

Lines changed: 3471 additions & 10 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

angular.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
],
3737
"allowedCommonJsDependencies": [
3838
"ajv",
39-
"papaparse"
39+
"papaparse",
40+
"json5",
41+
"nearley"
4042
]
4143
},
4244
"configurations": {

package-lock.json

Lines changed: 120 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,15 @@
4343
"@codemirror/theme-one-dark": "^6.1.3",
4444
"@codemirror/view": "^6.39.13",
4545
"ajv": "^8.17.1",
46+
"dompurify": "^3.2.4",
4647
"diff": "^8.0.3",
48+
"fast-json-patch": "^3.1.1",
4749
"js-yaml": "^4.1.1",
50+
"json5": "^2.2.3",
4851
"jsonpath-plus": "^10.3.0",
52+
"marked": "^15.0.7",
4953
"papaparse": "^5.5.3",
54+
"sql-formatter": "^15.6.4",
5055
"rxjs": "~7.8.0",
5156
"tslib": "^2.3.0"
5257
},

src/app/app.routes.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,9 @@ export const routes: Routes = [
2020
path: 'tools/data',
2121
loadChildren: () => import('./tools/data/data-tools.module').then(m => m.DataToolsModule)
2222
},
23+
{
24+
path: 'tools/sql',
25+
loadChildren: () => import('./tools/sql/sql-tools.module').then(m => m.SqlToolsModule)
26+
},
2327
{ path: '**', redirectTo: 'tools/json/formatter' }
2428
];

src/app/shared/services/tool-registry.service.ts

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,34 @@ export class ToolRegistryService {
6969
route: '/tools/json/jsonpath',
7070
description: 'Query JSON with JSONPath.',
7171
keywords: ['json', 'jsonpath', 'query']
72+
},
73+
{
74+
id: 'json-patch',
75+
label: 'JSON Patch (RFC 6902)',
76+
route: '/tools/json/patch',
77+
description: 'Generate or apply JSON patches.',
78+
keywords: ['json', 'patch', 'rfc6902']
79+
},
80+
{
81+
id: 'json-merge-patch',
82+
label: 'JSON Merge Patch',
83+
route: '/tools/json/merge-patch',
84+
description: 'Apply merge patches (RFC 7396).',
85+
keywords: ['json', 'merge', 'patch']
86+
},
87+
{
88+
id: 'json-types',
89+
label: 'JSON → Types',
90+
route: '/tools/json/types',
91+
description: 'Generate types from JSON.',
92+
keywords: ['json', 'types', 'schema']
93+
},
94+
{
95+
id: 'json5',
96+
label: 'JSON5 / JSONC → JSON',
97+
route: '/tools/json/json5',
98+
description: 'Parse JSON with comments.',
99+
keywords: ['json5', 'jsonc', 'convert']
72100
}
73101
]
74102
},
@@ -96,6 +124,27 @@ export class ToolRegistryService {
96124
route: '/tools/text/stats',
97125
description: 'Count characters, bytes, and line endings.',
98126
keywords: ['text', 'count', 'characters', 'lines']
127+
},
128+
{
129+
id: 'whitespace',
130+
label: 'Whitespace Normalizer',
131+
route: '/tools/text/whitespace',
132+
description: 'Trim and normalize line endings.',
133+
keywords: ['text', 'whitespace', 'normalize']
134+
},
135+
{
136+
id: 'markdown',
137+
label: 'Markdown Preview',
138+
route: '/tools/text/markdown',
139+
description: 'Preview markdown with sanitized HTML.',
140+
keywords: ['markdown', 'preview', 'html']
141+
},
142+
{
143+
id: 'unicode',
144+
label: 'Unicode Inspector',
145+
route: '/tools/text/unicode',
146+
description: 'Inspect code points and escapes.',
147+
keywords: ['unicode', 'codepoint', 'text']
99148
}
100149
]
101150
},
@@ -144,6 +193,20 @@ export class ToolRegistryService {
144193
route: '/tools/crypto/sortable-ids',
145194
description: 'Generate sortable identifiers.',
146195
keywords: ['uuid', 'ulid', 'v7', 'sortable']
196+
},
197+
{
198+
id: 'hmac',
199+
label: 'HMAC Generator',
200+
route: '/tools/crypto/hmac',
201+
description: 'Generate HMAC signatures.',
202+
keywords: ['hmac', 'hash', 'crypto']
203+
},
204+
{
205+
id: 'password',
206+
label: 'Password Generator',
207+
route: '/tools/crypto/password',
208+
description: 'Generate secure random tokens.',
209+
keywords: ['password', 'token', 'random']
147210
}
148211
]
149212
},
@@ -178,6 +241,54 @@ export class ToolRegistryService {
178241
route: '/tools/data/timezone',
179242
description: 'Convert time between zones.',
180243
keywords: ['timezone', 'time', 'convert']
244+
},
245+
{
246+
id: 'csv-profiler',
247+
label: 'CSV Profiler',
248+
route: '/tools/data/csv-profiler',
249+
description: 'Analyze CSV columns and stats.',
250+
keywords: ['csv', 'profile', 'stats']
251+
},
252+
{
253+
id: 'openapi',
254+
label: 'OpenAPI Snippet Viewer',
255+
route: '/tools/data/openapi',
256+
description: 'Browse OpenAPI paths and methods.',
257+
keywords: ['openapi', 'swagger', 'api']
258+
}
259+
]
260+
},
261+
{
262+
id: 'sql',
263+
label: 'SQL Tools',
264+
tools: [
265+
{
266+
id: 'sql-formatter',
267+
label: 'SQL Formatter / Minifier',
268+
route: '/tools/sql/formatter',
269+
description: 'Format or minify SQL queries.',
270+
keywords: ['sql', 'format', 'minify']
271+
},
272+
{
273+
id: 'sql-in-clause',
274+
label: 'SQL IN Clause Builder',
275+
route: '/tools/sql/in-clause',
276+
description: 'Build IN lists from values.',
277+
keywords: ['sql', 'in', 'list']
278+
},
279+
{
280+
id: 'sql-escape',
281+
label: 'SQL Identifier Escaper',
282+
route: '/tools/sql/escape',
283+
description: 'Quote identifiers safely.',
284+
keywords: ['sql', 'escape', 'identifier']
285+
},
286+
{
287+
id: 'sql-plan',
288+
label: 'Execution Plan Analyzer',
289+
route: '/tools/sql/plan',
290+
description: 'Analyze execution plans.',
291+
keywords: ['sql', 'plan', 'explain']
181292
}
182293
]
183294
}

0 commit comments

Comments
 (0)