nttp 1.0.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 (54) hide show
  1. package/README.md +245 -0
  2. package/dist/NTTP.d.ts +121 -0
  3. package/dist/NTTP.d.ts.map +1 -0
  4. package/dist/NTTP.js +229 -0
  5. package/dist/NTTP.js.map +1 -0
  6. package/dist/cache/exact-cache.d.ts +46 -0
  7. package/dist/cache/exact-cache.d.ts.map +1 -0
  8. package/dist/cache/exact-cache.js +104 -0
  9. package/dist/cache/exact-cache.js.map +1 -0
  10. package/dist/cache/index.d.ts +8 -0
  11. package/dist/cache/index.d.ts.map +1 -0
  12. package/dist/cache/index.js +7 -0
  13. package/dist/cache/index.js.map +1 -0
  14. package/dist/cache/semantic-cache.d.ts +82 -0
  15. package/dist/cache/semantic-cache.d.ts.map +1 -0
  16. package/dist/cache/semantic-cache.js +243 -0
  17. package/dist/cache/semantic-cache.js.map +1 -0
  18. package/dist/cache/types.d.ts +135 -0
  19. package/dist/cache/types.d.ts.map +1 -0
  20. package/dist/cache/types.js +5 -0
  21. package/dist/cache/types.js.map +1 -0
  22. package/dist/cache.d.ts +71 -0
  23. package/dist/cache.d.ts.map +1 -0
  24. package/dist/cache.js +129 -0
  25. package/dist/cache.js.map +1 -0
  26. package/dist/errors.d.ts +35 -0
  27. package/dist/errors.d.ts.map +1 -0
  28. package/dist/errors.js +55 -0
  29. package/dist/errors.js.map +1 -0
  30. package/dist/executor.d.ts +82 -0
  31. package/dist/executor.d.ts.map +1 -0
  32. package/dist/executor.js +395 -0
  33. package/dist/executor.js.map +1 -0
  34. package/dist/index.d.ts +8 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +7 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/intent.d.ts +55 -0
  39. package/dist/intent.d.ts.map +1 -0
  40. package/dist/intent.js +183 -0
  41. package/dist/intent.js.map +1 -0
  42. package/dist/llm.d.ts +60 -0
  43. package/dist/llm.d.ts.map +1 -0
  44. package/dist/llm.js +171 -0
  45. package/dist/llm.js.map +1 -0
  46. package/dist/types.d.ts +280 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +5 -0
  49. package/dist/types.js.map +1 -0
  50. package/dist/utils.d.ts +61 -0
  51. package/dist/utils.d.ts.map +1 -0
  52. package/dist/utils.js +19 -0
  53. package/dist/utils.js.map +1 -0
  54. package/package.json +94 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent.js","sourceRoot":"","sources":["../src/intent.ts"],"names":[],"mappings":"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"}
package/dist/llm.d.ts ADDED
@@ -0,0 +1,60 @@
1
+ /**
2
+ * LLM integration layer using AI SDK for provider-agnostic support.
3
+ * Implements structured outputs for guaranteed schema compliance.
4
+ */
5
+ import type { JsonValue, JsonObject } from './utils.js';
6
+ export interface LLMConfig {
7
+ provider: 'anthropic' | 'openai' | 'cohere' | 'mistral' | 'google';
8
+ model: string;
9
+ apiKey: string;
10
+ maxTokens?: number;
11
+ }
12
+ /**
13
+ * Service for interacting with LLM APIs via AI SDK.
14
+ */
15
+ export declare class LLMService {
16
+ private model;
17
+ private modelPromise;
18
+ private config;
19
+ private maxTokens;
20
+ constructor(config: LLMConfig);
21
+ /**
22
+ * Lazy initialization of LLM model
23
+ * Supports multiple providers with dynamic imports
24
+ */
25
+ private initializeModel;
26
+ /**
27
+ * Load the model based on provider configuration
28
+ */
29
+ private loadModel;
30
+ /**
31
+ * Call LLM with structured outputs (guaranteed schema compliance).
32
+ *
33
+ * Uses AI SDK's generateText to generate JSON responses that match
34
+ * the provided schema.
35
+ *
36
+ * Generic type T is constrained to JsonValue to ensure only serializable
37
+ * types can be returned, preventing type safety issues.
38
+ *
39
+ * @param prompt User prompt
40
+ * @param system System prompt
41
+ * @param jsonSchema JSON schema that response must follow
42
+ * @param temperature Sampling temperature (0.0 for deterministic)
43
+ * @param maxRetries Maximum number of retry attempts
44
+ * @returns Parsed JSON response matching the schema
45
+ * @throws LLMError if all retries fail
46
+ */
47
+ callStructured<T extends JsonValue>(prompt: string, system: string, jsonSchema: JsonObject, temperature?: number, maxRetries?: number): Promise<T>;
48
+ /**
49
+ * Call LLM without structured outputs (basic text response).
50
+ *
51
+ * @param prompt User prompt
52
+ * @param system System prompt
53
+ * @param temperature Sampling temperature
54
+ * @param maxRetries Maximum number of retry attempts
55
+ * @returns Response text from LLM
56
+ * @throws LLMError if all retries fail
57
+ */
58
+ call(prompt: string, system: string, temperature?: number, maxRetries?: number): Promise<string>;
59
+ }
60
+ //# sourceMappingURL=llm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,SAAS;IAK7B;;;OAGG;YACW,eAAe;IAa7B;;OAEG;YACW,SAAS;IAwDvB;;;;;;;;;;;;;;;;OAgBG;IACG,cAAc,CAAC,CAAC,SAAS,SAAS,EACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,WAAW,GAAE,MAAY,EACzB,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,CAAC,CAAC;IAsCb;;;;;;;;;OASG;IACG,IAAI,CACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,MAAY,EACzB,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,MAAM,CAAC;CA6BnB"}
package/dist/llm.js ADDED
@@ -0,0 +1,171 @@
1
+ /**
2
+ * LLM integration layer using AI SDK for provider-agnostic support.
3
+ * Implements structured outputs for guaranteed schema compliance.
4
+ */
5
+ import { generateText } from 'ai';
6
+ import { LLMError } from './errors.js';
7
+ /**
8
+ * Service for interacting with LLM APIs via AI SDK.
9
+ */
10
+ export class LLMService {
11
+ model = null;
12
+ modelPromise = null;
13
+ config;
14
+ maxTokens;
15
+ constructor(config) {
16
+ this.config = config;
17
+ this.maxTokens = config.maxTokens || 2048;
18
+ }
19
+ /**
20
+ * Lazy initialization of LLM model
21
+ * Supports multiple providers with dynamic imports
22
+ */
23
+ async initializeModel() {
24
+ if (this.model) {
25
+ return this.model;
26
+ }
27
+ if (this.modelPromise) {
28
+ return this.modelPromise;
29
+ }
30
+ this.modelPromise = this.loadModel();
31
+ return this.modelPromise;
32
+ }
33
+ /**
34
+ * Load the model based on provider configuration
35
+ */
36
+ async loadModel() {
37
+ switch (this.config.provider) {
38
+ case 'anthropic': {
39
+ // Set environment variable for Anthropic
40
+ process.env.ANTHROPIC_API_KEY = this.config.apiKey;
41
+ const { anthropic } = await import('@ai-sdk/anthropic');
42
+ const model = anthropic(this.config.model);
43
+ this.model = model;
44
+ return model;
45
+ }
46
+ case 'openai': {
47
+ // Set environment variable for OpenAI
48
+ process.env.OPENAI_API_KEY = this.config.apiKey;
49
+ const { openai } = await import('@ai-sdk/openai');
50
+ const model = openai(this.config.model);
51
+ this.model = model;
52
+ return model;
53
+ }
54
+ case 'cohere': {
55
+ // Set environment variable for Cohere
56
+ process.env.COHERE_API_KEY = this.config.apiKey;
57
+ // @ts-expect-error - Optional peer dependency
58
+ const { cohere } = await import('@ai-sdk/cohere');
59
+ const model = cohere(this.config.model);
60
+ this.model = model;
61
+ return model;
62
+ }
63
+ case 'mistral': {
64
+ // Set environment variable for Mistral
65
+ process.env.MISTRAL_API_KEY = this.config.apiKey;
66
+ // @ts-expect-error - Optional peer dependency
67
+ const { mistral } = await import('@ai-sdk/mistral');
68
+ const model = mistral(this.config.model);
69
+ this.model = model;
70
+ return model;
71
+ }
72
+ case 'google': {
73
+ // Set environment variable for Google
74
+ process.env.GOOGLE_API_KEY = this.config.apiKey;
75
+ // @ts-expect-error - Optional peer dependency
76
+ const { google } = await import('@ai-sdk/google-vertex');
77
+ const model = google(this.config.model);
78
+ this.model = model;
79
+ return model;
80
+ }
81
+ default: {
82
+ throw new LLMError(`Unsupported provider: ${this.config.provider}`);
83
+ }
84
+ }
85
+ }
86
+ /**
87
+ * Call LLM with structured outputs (guaranteed schema compliance).
88
+ *
89
+ * Uses AI SDK's generateText to generate JSON responses that match
90
+ * the provided schema.
91
+ *
92
+ * Generic type T is constrained to JsonValue to ensure only serializable
93
+ * types can be returned, preventing type safety issues.
94
+ *
95
+ * @param prompt User prompt
96
+ * @param system System prompt
97
+ * @param jsonSchema JSON schema that response must follow
98
+ * @param temperature Sampling temperature (0.0 for deterministic)
99
+ * @param maxRetries Maximum number of retry attempts
100
+ * @returns Parsed JSON response matching the schema
101
+ * @throws LLMError if all retries fail
102
+ */
103
+ async callStructured(prompt, system, jsonSchema, temperature = 0.0, maxRetries = 3) {
104
+ const model = await this.initializeModel();
105
+ // Add JSON schema to prompt
106
+ const enhancedPrompt = `${prompt}\n\nYou must respond with valid JSON matching this schema:\n${JSON.stringify(jsonSchema, null, 2)}`;
107
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
108
+ try {
109
+ const result = await generateText({
110
+ model,
111
+ system: `${system}\n\nAlways respond with valid JSON only, no additional text or formatting.`,
112
+ prompt: enhancedPrompt,
113
+ temperature,
114
+ maxOutputTokens: this.maxTokens,
115
+ });
116
+ // Parse JSON from response
117
+ const jsonText = result.text.trim();
118
+ // Remove markdown code blocks if present
119
+ const cleaned = jsonText.replace(/^```json\n?/, '').replace(/\n?```$/, '');
120
+ return JSON.parse(cleaned);
121
+ }
122
+ catch (error) {
123
+ const waitTime = Math.pow(2, attempt); // Exponential backoff: 1s, 2s, 4s
124
+ if (attempt < maxRetries - 1) {
125
+ await new Promise((resolve) => setTimeout(resolve, waitTime * 1000));
126
+ }
127
+ else {
128
+ throw new LLMError(`LLM API failed after ${maxRetries} attempts: ${error}`);
129
+ }
130
+ }
131
+ }
132
+ // TypeScript requires this, but we'll never reach it due to the throw above
133
+ throw new LLMError('Unexpected error in callStructured');
134
+ }
135
+ /**
136
+ * Call LLM without structured outputs (basic text response).
137
+ *
138
+ * @param prompt User prompt
139
+ * @param system System prompt
140
+ * @param temperature Sampling temperature
141
+ * @param maxRetries Maximum number of retry attempts
142
+ * @returns Response text from LLM
143
+ * @throws LLMError if all retries fail
144
+ */
145
+ async call(prompt, system, temperature = 0.0, maxRetries = 3) {
146
+ const model = await this.initializeModel();
147
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
148
+ try {
149
+ const result = await generateText({
150
+ model,
151
+ system,
152
+ prompt,
153
+ temperature,
154
+ maxOutputTokens: this.maxTokens,
155
+ });
156
+ return result.text;
157
+ }
158
+ catch (error) {
159
+ const waitTime = Math.pow(2, attempt); // Exponential backoff
160
+ if (attempt < maxRetries - 1) {
161
+ await new Promise((resolve) => setTimeout(resolve, waitTime * 1000));
162
+ }
163
+ else {
164
+ throw new LLMError(`LLM API failed after ${maxRetries} attempts: ${error}`);
165
+ }
166
+ }
167
+ }
168
+ throw new LLMError('Unexpected error in call');
169
+ }
170
+ }
171
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,280 @@
1
+ /**
2
+ * TypeScript types for nttp
3
+ */
4
+ import type { Knex } from 'knex';
5
+ import type { JsonValue, JsonObject, FilterConditions, SortSpec, OperationType } from './utils.js';
6
+ export type { JsonValue, JsonObject, FilterConditions, SortSpec, OperationType, } from './utils.js';
7
+ /**
8
+ * nttp configuration
9
+ */
10
+ export interface NTTPConfig {
11
+ /**
12
+ * Database configuration (Knex.js config)
13
+ */
14
+ database: Knex.Config;
15
+ /**
16
+ * LLM configuration
17
+ */
18
+ llm: {
19
+ /**
20
+ * LLM provider
21
+ */
22
+ provider: 'anthropic' | 'openai' | 'cohere' | 'mistral' | 'google';
23
+ /**
24
+ * Model name
25
+ * @example "claude-sonnet-4-5-20250929"
26
+ * @example "gpt-4o"
27
+ * @example "command-r-plus"
28
+ */
29
+ model: string;
30
+ /**
31
+ * API key for the provider
32
+ */
33
+ apiKey: string;
34
+ /**
35
+ * Maximum tokens for LLM responses
36
+ * @default 2048
37
+ */
38
+ maxTokens?: number;
39
+ };
40
+ /**
41
+ * Query limits
42
+ */
43
+ limits?: {
44
+ /**
45
+ * Maximum query length
46
+ * @default 500
47
+ */
48
+ maxQueryLength?: number;
49
+ /**
50
+ * Default result limit
51
+ * @default 100
52
+ */
53
+ defaultLimit?: number;
54
+ /**
55
+ * Maximum result limit
56
+ * @default 1000
57
+ */
58
+ maxLimit?: number;
59
+ };
60
+ /**
61
+ * 3-layer cache configuration
62
+ */
63
+ cache?: {
64
+ /**
65
+ * L1 exact match cache configuration
66
+ */
67
+ l1?: {
68
+ /**
69
+ * Enable L1 cache
70
+ * @default true
71
+ */
72
+ enabled?: boolean;
73
+ /**
74
+ * Maximum cache size
75
+ * @default 1000
76
+ */
77
+ maxSize?: number;
78
+ };
79
+ /**
80
+ * L2 semantic cache configuration
81
+ */
82
+ l2?: {
83
+ /**
84
+ * Enable L2 cache
85
+ * @default true
86
+ */
87
+ enabled?: boolean;
88
+ /**
89
+ * Embedding provider
90
+ */
91
+ provider: 'openai' | 'cohere' | 'mistral' | 'google';
92
+ /**
93
+ * Embedding model name
94
+ */
95
+ model: string;
96
+ /**
97
+ * Similarity threshold (0-1)
98
+ * @default 0.85
99
+ */
100
+ threshold?: number;
101
+ /**
102
+ * Maximum cache size
103
+ * @default 500
104
+ */
105
+ maxSize?: number;
106
+ /**
107
+ * API key for embedding provider
108
+ */
109
+ apiKey?: string;
110
+ };
111
+ };
112
+ }
113
+ /**
114
+ * Options for query execution
115
+ */
116
+ export interface QueryOptions {
117
+ /**
118
+ * Use schema cache
119
+ * @default true
120
+ */
121
+ useCache?: boolean;
122
+ /**
123
+ * Force generation of new schema
124
+ * @default false
125
+ */
126
+ forceNewSchema?: boolean;
127
+ }
128
+ /**
129
+ * L1 Cache metadata (exact match, no cost).
130
+ */
131
+ export interface L1CacheMeta {
132
+ readonly cacheLayer: 1;
133
+ readonly cost: 0;
134
+ readonly latency: number;
135
+ }
136
+ /**
137
+ * L2 Cache metadata (semantic match with similarity score).
138
+ */
139
+ export interface L2CacheMeta {
140
+ readonly cacheLayer: 2;
141
+ readonly cost: number;
142
+ readonly latency: number;
143
+ readonly similarity: number;
144
+ }
145
+ /**
146
+ * L3 Cache metadata (LLM generation, highest cost).
147
+ */
148
+ export interface L3CacheMeta {
149
+ readonly cacheLayer: 3;
150
+ readonly cost: number;
151
+ readonly latency: number;
152
+ }
153
+ /**
154
+ * Discriminated union for query result metadata.
155
+ * Ensures type-safe access to layer-specific fields.
156
+ */
157
+ export type QueryResultMeta = L1CacheMeta | L2CacheMeta | L3CacheMeta;
158
+ /**
159
+ * Query result
160
+ */
161
+ export interface QueryResult {
162
+ /**
163
+ * Original query string
164
+ */
165
+ query: string;
166
+ /**
167
+ * Query results
168
+ */
169
+ data: JsonObject[];
170
+ /**
171
+ * Schema ID for caching
172
+ */
173
+ schemaId: string;
174
+ /**
175
+ * Whether result came from cache
176
+ */
177
+ cacheHit: boolean;
178
+ /**
179
+ * Execution time in milliseconds
180
+ */
181
+ executionTimeMs: number;
182
+ /**
183
+ * Parsed intent
184
+ */
185
+ intent: Intent;
186
+ /**
187
+ * Generated SQL (for debugging)
188
+ */
189
+ sql?: string;
190
+ /**
191
+ * SQL parameters (for debugging)
192
+ */
193
+ params?: JsonValue[];
194
+ /**
195
+ * Cache metadata (optional)
196
+ * Uses discriminated union for type-safe access to layer-specific fields
197
+ */
198
+ meta?: QueryResultMeta;
199
+ }
200
+ /**
201
+ * Parsed intent from natural language
202
+ */
203
+ export interface Intent {
204
+ /**
205
+ * Database entity (table name)
206
+ */
207
+ entity: string;
208
+ /**
209
+ * Operation type
210
+ */
211
+ operation: OperationType;
212
+ /**
213
+ * Filter conditions
214
+ */
215
+ filters?: FilterConditions;
216
+ /**
217
+ * Result limit
218
+ */
219
+ limit?: number | null;
220
+ /**
221
+ * Fields to select
222
+ */
223
+ fields?: string[] | null;
224
+ /**
225
+ * Sort configuration (format: "field:direction")
226
+ * @example "created_at:desc"
227
+ */
228
+ sort?: SortSpec | null;
229
+ /**
230
+ * Normalized intent string
231
+ */
232
+ normalized_text: string;
233
+ }
234
+ /**
235
+ * Cached schema definition
236
+ */
237
+ export interface SchemaDefinition {
238
+ /**
239
+ * Unique schema ID
240
+ */
241
+ schema_id: string;
242
+ /**
243
+ * Intent pattern this schema represents
244
+ */
245
+ intent_pattern: string;
246
+ /**
247
+ * Generated SQL query
248
+ */
249
+ generated_sql: string;
250
+ /**
251
+ * SQL query parameters
252
+ */
253
+ sql_params: JsonValue[];
254
+ /**
255
+ * JSON schema for results
256
+ */
257
+ result_schema: JsonObject;
258
+ /**
259
+ * Number of times this schema was used
260
+ */
261
+ use_count: number;
262
+ /**
263
+ * Whether schema is pinned
264
+ */
265
+ pinned: boolean;
266
+ /**
267
+ * Example queries that use this schema
268
+ */
269
+ example_queries: string[];
270
+ /**
271
+ * When schema was created
272
+ */
273
+ created_at: Date;
274
+ /**
275
+ * When schema was last used
276
+ */
277
+ last_used_at: Date;
278
+ }
279
+ export type { CacheStats } from './cache/types.js';
280
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * TypeScript types for nttp
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Core type utilities for NTTP package.
3
+ * These types replace 'any' usage and provide strict type safety.
4
+ */
5
+ /**
6
+ * Primitive JSON values.
7
+ */
8
+ export type JsonPrimitive = string | number | boolean | null;
9
+ /**
10
+ * Recursive JSON value type.
11
+ * Replaces 'any' for data that must be serializable.
12
+ */
13
+ export type JsonValue = JsonPrimitive | JsonObject | JsonArray;
14
+ /**
15
+ * JSON object type - strictly typed alternative to Record<string, any>
16
+ */
17
+ export interface JsonObject {
18
+ [key: string]: JsonValue;
19
+ }
20
+ /**
21
+ * JSON array type
22
+ */
23
+ export interface JsonArray extends Array<JsonValue> {
24
+ }
25
+ /**
26
+ * Specific type for database filter values.
27
+ * Supports primitives and arrays of primitives for IN clauses.
28
+ */
29
+ export type FilterValue = JsonPrimitive | JsonPrimitive[];
30
+ /**
31
+ * Database filter conditions.
32
+ * Replaces Record<string, any> in intent parsing.
33
+ */
34
+ export type FilterConditions = Record<string, FilterValue>;
35
+ /**
36
+ * Sort direction for query results.
37
+ */
38
+ export type SortDirection = "asc" | "desc";
39
+ /**
40
+ * Sort specification in format "field:direction"
41
+ * Template literal type ensures compile-time validation.
42
+ * @example "created_at:desc" | "name:asc"
43
+ */
44
+ export type SortSpec = `${string}:${SortDirection}`;
45
+ /**
46
+ * Database operation types.
47
+ */
48
+ export type OperationType = "list" | "count" | "aggregate" | "filter";
49
+ /**
50
+ * Validates if a string matches the SortSpec format at runtime.
51
+ * Use this as a type guard or in Zod schemas.
52
+ */
53
+ export declare function isSortSpec(value: string): value is SortSpec;
54
+ /**
55
+ * Parses a sort specification into its components.
56
+ */
57
+ export declare function parseSortSpec(spec: SortSpec): {
58
+ field: string;
59
+ direction: SortDirection;
60
+ };
61
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAE7D;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC;CAAG;AAEtD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,aAAa,EAAE,CAAC;AAE1D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,aAAa,EAAE,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,QAAQ,CAE3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,aAAa,CAAC;CACzB,CAGA"}
package/dist/utils.js ADDED
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Core type utilities for NTTP package.
3
+ * These types replace 'any' usage and provide strict type safety.
4
+ */
5
+ /**
6
+ * Validates if a string matches the SortSpec format at runtime.
7
+ * Use this as a type guard or in Zod schemas.
8
+ */
9
+ export function isSortSpec(value) {
10
+ return /^[\w_]+:(asc|desc)$/.test(value);
11
+ }
12
+ /**
13
+ * Parses a sort specification into its components.
14
+ */
15
+ export function parseSortSpec(spec) {
16
+ const [field, direction] = spec.split(":");
17
+ return { field, direction };
18
+ }
19
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsDH;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACvC,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAc;IAI3C,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;IACtE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC"}