@objectstack/spec 0.1.2 → 0.3.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 (152) hide show
  1. package/README.md +127 -5
  2. package/dist/ai/index.d.ts +14 -0
  3. package/dist/ai/index.d.ts.map +1 -0
  4. package/dist/ai/index.js +29 -0
  5. package/dist/ai/model-registry.zod.d.ts +1389 -0
  6. package/dist/ai/model-registry.zod.d.ts.map +1 -0
  7. package/dist/ai/model-registry.zod.js +164 -0
  8. package/dist/ai/nlq.zod.d.ts +1126 -0
  9. package/dist/ai/nlq.zod.d.ts.map +1 -0
  10. package/dist/ai/nlq.zod.js +246 -0
  11. package/dist/ai/rag-pipeline.zod.d.ts +1034 -0
  12. package/dist/ai/rag-pipeline.zod.d.ts.map +1 -0
  13. package/dist/ai/rag-pipeline.zod.js +244 -0
  14. package/dist/api/index.d.ts +9 -0
  15. package/dist/api/index.d.ts.map +1 -0
  16. package/dist/api/index.js +24 -0
  17. package/dist/data/filter.zod.d.ts +295 -0
  18. package/dist/data/filter.zod.d.ts.map +1 -0
  19. package/dist/data/filter.zod.js +226 -0
  20. package/dist/data/index.d.ts +21 -0
  21. package/dist/data/index.d.ts.map +1 -0
  22. package/dist/data/index.js +36 -0
  23. package/dist/data/query.zod.d.ts +386 -3
  24. package/dist/data/query.zod.d.ts.map +1 -1
  25. package/dist/data/query.zod.js +386 -3
  26. package/dist/data/validation.zod.d.ts +349 -0
  27. package/dist/data/validation.zod.d.ts.map +1 -1
  28. package/dist/data/validation.zod.js +395 -0
  29. package/dist/index.d.ts +36 -39
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +64 -47
  32. package/dist/system/auth-protocol.d.ts +175 -0
  33. package/dist/system/auth-protocol.d.ts.map +1 -0
  34. package/dist/system/auth-protocol.js +60 -0
  35. package/dist/system/auth.zod.d.ts +3319 -0
  36. package/dist/system/auth.zod.d.ts.map +1 -0
  37. package/dist/system/auth.zod.js +499 -0
  38. package/dist/system/datasource.zod.d.ts +118 -38
  39. package/dist/system/datasource.zod.d.ts.map +1 -1
  40. package/dist/system/datasource.zod.js +25 -6
  41. package/dist/system/driver.zod.d.ts +106 -0
  42. package/dist/system/driver.zod.d.ts.map +1 -1
  43. package/dist/system/driver.zod.js +47 -0
  44. package/dist/system/identity.zod.d.ts +234 -180
  45. package/dist/system/identity.zod.d.ts.map +1 -1
  46. package/dist/system/identity.zod.js +168 -51
  47. package/dist/system/index.d.ts +28 -0
  48. package/dist/system/index.d.ts.map +1 -0
  49. package/dist/system/index.js +43 -0
  50. package/dist/system/manifest.zod.d.ts +10 -10
  51. package/dist/system/organization.zod.d.ts +179 -0
  52. package/dist/system/organization.zod.d.ts.map +1 -0
  53. package/dist/system/organization.zod.js +129 -0
  54. package/dist/system/policy.zod.d.ts +10 -10
  55. package/dist/ui/action.zod.d.ts +2 -2
  56. package/dist/ui/dashboard.zod.d.ts +10 -10
  57. package/dist/ui/dashboard.zod.d.ts.map +1 -1
  58. package/dist/ui/dashboard.zod.js +3 -2
  59. package/dist/ui/index.d.ts +17 -0
  60. package/dist/ui/index.d.ts.map +1 -0
  61. package/dist/ui/index.js +32 -0
  62. package/dist/ui/report.zod.d.ts +4 -32
  63. package/dist/ui/report.zod.d.ts.map +1 -1
  64. package/dist/ui/report.zod.js +3 -8
  65. package/dist/ui/theme.zod.d.ts +6 -6
  66. package/json-schema/Account.json +87 -0
  67. package/json-schema/AccountLinkingConfig.json +27 -0
  68. package/json-schema/AuthConfig.json +841 -0
  69. package/json-schema/AuthPluginConfig.json +28 -0
  70. package/json-schema/AuthStrategy.json +17 -0
  71. package/json-schema/AuthenticationConfig.json +601 -0
  72. package/json-schema/AuthenticationProvider.json +617 -0
  73. package/json-schema/CSRFConfig.json +31 -0
  74. package/json-schema/ChunkingStrategy.json +133 -0
  75. package/json-schema/ComparisonOperator.json +56 -0
  76. package/json-schema/Dashboard.json +20 -0
  77. package/json-schema/DashboardWidget.json +20 -0
  78. package/json-schema/DatabaseAdapter.json +38 -0
  79. package/json-schema/DatabaseMapping.json +48 -0
  80. package/json-schema/Datasource.json +25 -5
  81. package/json-schema/DatasourceCapabilities.json +25 -5
  82. package/json-schema/DocumentChunk.json +97 -0
  83. package/json-schema/DocumentLoaderConfig.json +69 -0
  84. package/json-schema/DocumentMetadata.json +61 -0
  85. package/json-schema/DriverCapabilities.json +30 -0
  86. package/json-schema/DriverDefinition.json +25 -5
  87. package/json-schema/DriverInterface.json +30 -0
  88. package/json-schema/EmailPasswordConfig.json +43 -0
  89. package/json-schema/EmbeddingModel.json +57 -0
  90. package/json-schema/EnterpriseAuthConfig.json +172 -0
  91. package/json-schema/Entity.json +55 -0
  92. package/json-schema/EqualityOperator.json +14 -0
  93. package/json-schema/FieldOperators.json +108 -0
  94. package/json-schema/FieldSynonymConfig.json +39 -0
  95. package/json-schema/FilterCondition.json +28 -0
  96. package/json-schema/Invitation.json +69 -0
  97. package/json-schema/InvitationStatus.json +15 -0
  98. package/json-schema/LDAPConfig.json +22 -5
  99. package/json-schema/MagicLinkConfig.json +21 -0
  100. package/json-schema/Member.json +46 -0
  101. package/json-schema/ModelCapability.json +47 -0
  102. package/json-schema/ModelConfig.json +181 -0
  103. package/json-schema/ModelLimits.json +45 -0
  104. package/json-schema/ModelPricing.json +28 -0
  105. package/json-schema/ModelProvider.json +19 -0
  106. package/json-schema/ModelRegistry.json +427 -0
  107. package/json-schema/ModelRegistryEntry.json +239 -0
  108. package/json-schema/ModelSelectionCriteria.json +50 -0
  109. package/json-schema/NLQAnalytics.json +106 -0
  110. package/json-schema/NLQFieldMapping.json +40 -0
  111. package/json-schema/NLQModelConfig.json +78 -0
  112. package/json-schema/NLQParseResult.json +252 -0
  113. package/json-schema/NLQRequest.json +110 -0
  114. package/json-schema/NLQResponse.json +288 -0
  115. package/json-schema/NLQTrainingExample.json +120 -0
  116. package/json-schema/NormalizedFilter.json +348 -0
  117. package/json-schema/OAuthProvider.json +66 -0
  118. package/json-schema/OIDCConfig.json +18 -3
  119. package/json-schema/Organization.json +52 -0
  120. package/json-schema/PasskeyConfig.json +54 -0
  121. package/json-schema/PromptTemplate.json +163 -0
  122. package/json-schema/PromptVariable.json +56 -0
  123. package/json-schema/QueryContext.json +72 -0
  124. package/json-schema/QueryFilter.json +34 -0
  125. package/json-schema/QueryIntent.json +21 -0
  126. package/json-schema/QueryTemplate.json +81 -0
  127. package/json-schema/RAGPipelineConfig.json +552 -0
  128. package/json-schema/RAGPipelineStatus.json +66 -0
  129. package/json-schema/RAGQueryRequest.json +64 -0
  130. package/json-schema/RAGQueryResponse.json +108 -0
  131. package/json-schema/RangeOperator.json +41 -0
  132. package/json-schema/RateLimitConfig.json +36 -0
  133. package/json-schema/Report.json +20 -26
  134. package/json-schema/RerankingConfig.json +34 -0
  135. package/json-schema/RetrievalStrategy.json +121 -0
  136. package/json-schema/SAMLConfig.json +17 -3
  137. package/json-schema/Session.json +63 -0
  138. package/json-schema/SessionConfig.json +56 -0
  139. package/json-schema/SetOperator.json +18 -0
  140. package/json-schema/SpecialOperator.json +18 -0
  141. package/json-schema/StandardAuthProvider.json +857 -0
  142. package/json-schema/StringOperator.json +21 -0
  143. package/json-schema/Timeframe.json +68 -0
  144. package/json-schema/TwoFactorConfig.json +40 -0
  145. package/json-schema/User.json +51 -0
  146. package/json-schema/UserFieldMapping.json +47 -0
  147. package/json-schema/VectorStoreConfig.json +82 -0
  148. package/json-schema/VectorStoreProvider.json +21 -0
  149. package/json-schema/VerificationToken.json +36 -0
  150. package/package.json +27 -1
  151. package/json-schema/AuthProtocol.json +0 -17
  152. package/json-schema/AuthProvider.json +0 -171
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ALL_OPERATORS = exports.LOGICAL_OPERATORS = exports.FILTER_OPERATORS = exports.NormalizedFilterSchema = exports.QueryFilterSchema = exports.FilterConditionSchema = exports.FieldOperatorsSchema = exports.SpecialOperatorSchema = exports.StringOperatorSchema = exports.RangeOperatorSchema = exports.SetOperatorSchema = exports.ComparisonOperatorSchema = exports.EqualityOperatorSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ /**
6
+ * Unified Query DSL Specification
7
+ *
8
+ * Based on industry best practices from:
9
+ * - Prisma ORM
10
+ * - Strapi CMS
11
+ * - TypeORM
12
+ * - LoopBack Framework
13
+ *
14
+ * Version: 1.0.0
15
+ * Status: Draft
16
+ *
17
+ * Objective: Define a JSON-based, database-agnostic query syntax standard
18
+ * for data filtering interactions between frontend and backend APIs.
19
+ *
20
+ * Design Principles:
21
+ * 1. Declarative: Frontend describes "what data to get", not "how to query"
22
+ * 2. Database Agnostic: Syntax contains no database-specific directives
23
+ * 3. Type Safe: Structure can be statically inferred by TypeScript
24
+ * 4. Convention over Configuration: Implicit syntax for common queries
25
+ */
26
+ // ============================================================================
27
+ // 3.1 Comparison Operators
28
+ // ============================================================================
29
+ /**
30
+ * Comparison operators for equality and inequality checks.
31
+ * Supported data types: Any
32
+ */
33
+ exports.EqualityOperatorSchema = zod_1.z.object({
34
+ /** Equal to (default) - SQL: = | MongoDB: $eq */
35
+ $eq: zod_1.z.any().optional(),
36
+ /** Not equal to - SQL: <> or != | MongoDB: $ne */
37
+ $ne: zod_1.z.any().optional(),
38
+ });
39
+ /**
40
+ * Comparison operators for numeric and date comparisons.
41
+ * Supported data types: Number, Date
42
+ */
43
+ exports.ComparisonOperatorSchema = zod_1.z.object({
44
+ /** Greater than - SQL: > | MongoDB: $gt */
45
+ $gt: zod_1.z.union([zod_1.z.number(), zod_1.z.date()]).optional(),
46
+ /** Greater than or equal to - SQL: >= | MongoDB: $gte */
47
+ $gte: zod_1.z.union([zod_1.z.number(), zod_1.z.date()]).optional(),
48
+ /** Less than - SQL: < | MongoDB: $lt */
49
+ $lt: zod_1.z.union([zod_1.z.number(), zod_1.z.date()]).optional(),
50
+ /** Less than or equal to - SQL: <= | MongoDB: $lte */
51
+ $lte: zod_1.z.union([zod_1.z.number(), zod_1.z.date()]).optional(),
52
+ });
53
+ // ============================================================================
54
+ // 3.2 Set & Range Operators
55
+ // ============================================================================
56
+ /**
57
+ * Set operators for membership checks.
58
+ */
59
+ exports.SetOperatorSchema = zod_1.z.object({
60
+ /** In list - SQL: IN (?, ?, ?) | MongoDB: $in */
61
+ $in: zod_1.z.array(zod_1.z.any()).optional(),
62
+ /** Not in list - SQL: NOT IN (...) | MongoDB: $nin */
63
+ $nin: zod_1.z.array(zod_1.z.any()).optional(),
64
+ });
65
+ /**
66
+ * Range operator for interval checks (closed interval).
67
+ * SQL: BETWEEN ? AND ? | MongoDB: $gte AND $lte
68
+ */
69
+ exports.RangeOperatorSchema = zod_1.z.object({
70
+ /** Between (inclusive) - takes [min, max] array */
71
+ $between: zod_1.z.tuple([
72
+ zod_1.z.union([zod_1.z.number(), zod_1.z.date()]),
73
+ zod_1.z.union([zod_1.z.number(), zod_1.z.date()])
74
+ ]).optional(),
75
+ });
76
+ // ============================================================================
77
+ // 3.3 String-Specific Operators
78
+ // ============================================================================
79
+ /**
80
+ * String pattern matching operators.
81
+ * Note: Case sensitivity should be handled at backend level.
82
+ */
83
+ exports.StringOperatorSchema = zod_1.z.object({
84
+ /** Contains substring - SQL: LIKE %?% | MongoDB: $regex */
85
+ $contains: zod_1.z.string().optional(),
86
+ /** Starts with prefix - SQL: LIKE ?% | MongoDB: $regex */
87
+ $startsWith: zod_1.z.string().optional(),
88
+ /** Ends with suffix - SQL: LIKE %? | MongoDB: $regex */
89
+ $endsWith: zod_1.z.string().optional(),
90
+ });
91
+ // ============================================================================
92
+ // 3.5 Special Operators
93
+ // ============================================================================
94
+ /**
95
+ * Special check operators for null and existence.
96
+ */
97
+ exports.SpecialOperatorSchema = zod_1.z.object({
98
+ /** Is null check - SQL: IS NULL (true) / IS NOT NULL (false) | MongoDB: field: null */
99
+ $null: zod_1.z.boolean().optional(),
100
+ /** Field exists check (primarily for NoSQL) - MongoDB: $exists */
101
+ $exist: zod_1.z.boolean().optional(),
102
+ });
103
+ // ============================================================================
104
+ // Combined Field Operators
105
+ // ============================================================================
106
+ /**
107
+ * All field-level operators combined.
108
+ * These can be applied to individual fields in a filter.
109
+ */
110
+ exports.FieldOperatorsSchema = zod_1.z.object({
111
+ // Equality
112
+ $eq: zod_1.z.any().optional(),
113
+ $ne: zod_1.z.any().optional(),
114
+ // Comparison (numeric/date)
115
+ $gt: zod_1.z.union([zod_1.z.number(), zod_1.z.date()]).optional(),
116
+ $gte: zod_1.z.union([zod_1.z.number(), zod_1.z.date()]).optional(),
117
+ $lt: zod_1.z.union([zod_1.z.number(), zod_1.z.date()]).optional(),
118
+ $lte: zod_1.z.union([zod_1.z.number(), zod_1.z.date()]).optional(),
119
+ // Set & Range
120
+ $in: zod_1.z.array(zod_1.z.any()).optional(),
121
+ $nin: zod_1.z.array(zod_1.z.any()).optional(),
122
+ $between: zod_1.z.tuple([
123
+ zod_1.z.union([zod_1.z.number(), zod_1.z.date()]),
124
+ zod_1.z.union([zod_1.z.number(), zod_1.z.date()])
125
+ ]).optional(),
126
+ // String-specific
127
+ $contains: zod_1.z.string().optional(),
128
+ $startsWith: zod_1.z.string().optional(),
129
+ $endsWith: zod_1.z.string().optional(),
130
+ // Special
131
+ $null: zod_1.z.boolean().optional(),
132
+ $exist: zod_1.z.boolean().optional(),
133
+ });
134
+ /**
135
+ * Zod schema for recursive filter validation.
136
+ * Uses z.lazy() to handle recursive structure.
137
+ */
138
+ exports.FilterConditionSchema = zod_1.z.lazy(() => zod_1.z.record(zod_1.z.string(), zod_1.z.any()).and(zod_1.z.object({
139
+ $and: zod_1.z.array(exports.FilterConditionSchema).optional(),
140
+ $or: zod_1.z.array(exports.FilterConditionSchema).optional(),
141
+ $not: exports.FilterConditionSchema.optional(),
142
+ })));
143
+ // ============================================================================
144
+ // Query Filter Wrapper
145
+ // ============================================================================
146
+ /**
147
+ * Top-level query filter wrapper.
148
+ * This is typically used as the "where" clause in a query.
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * const filter: QueryFilter = {
153
+ * where: {
154
+ * status: "active", // Implicit equality
155
+ * age: { $gte: 18 }, // Explicit operator
156
+ * $or: [ // Logical combination
157
+ * { role: "admin" },
158
+ * { email: { $contains: "@company.com" } }
159
+ * ],
160
+ * profile: { // Nested relation
161
+ * verified: true
162
+ * }
163
+ * }
164
+ * }
165
+ * ```
166
+ */
167
+ exports.QueryFilterSchema = zod_1.z.object({
168
+ where: exports.FilterConditionSchema.optional(),
169
+ });
170
+ // ============================================================================
171
+ // Normalization Utilities (Internal Representation)
172
+ // ============================================================================
173
+ /**
174
+ * Normalized filter AST structure.
175
+ * This is the internal representation after converting all syntactic sugar
176
+ * to explicit operators.
177
+ *
178
+ * Stage 1: Normalization Pass
179
+ * Input: { age: 18, role: "admin" }
180
+ * Output: { $and: [{ age: { $eq: 18 } }, { role: { $eq: "admin" } }] }
181
+ *
182
+ * This simplifies adapter implementation by providing a consistent structure.
183
+ */
184
+ exports.NormalizedFilterSchema = zod_1.z.lazy(() => zod_1.z.object({
185
+ $and: zod_1.z.array(zod_1.z.union([
186
+ // Field condition: { field: { $op: value } }
187
+ zod_1.z.record(zod_1.z.string(), exports.FieldOperatorsSchema),
188
+ // Nested logical group
189
+ exports.NormalizedFilterSchema,
190
+ ])).optional(),
191
+ $or: zod_1.z.array(zod_1.z.union([
192
+ zod_1.z.record(zod_1.z.string(), exports.FieldOperatorsSchema),
193
+ exports.NormalizedFilterSchema,
194
+ ])).optional(),
195
+ $not: zod_1.z.union([
196
+ zod_1.z.record(zod_1.z.string(), exports.FieldOperatorsSchema),
197
+ exports.NormalizedFilterSchema,
198
+ ]).optional(),
199
+ }));
200
+ // ============================================================================
201
+ // Constants & Metadata
202
+ // ============================================================================
203
+ /**
204
+ * All supported operator keys.
205
+ * Useful for validation and parsing.
206
+ */
207
+ exports.FILTER_OPERATORS = [
208
+ // Equality
209
+ '$eq', '$ne',
210
+ // Comparison
211
+ '$gt', '$gte', '$lt', '$lte',
212
+ // Set & Range
213
+ '$in', '$nin', '$between',
214
+ // String
215
+ '$contains', '$startsWith', '$endsWith',
216
+ // Special
217
+ '$null', '$exist',
218
+ ];
219
+ /**
220
+ * Logical operator keys.
221
+ */
222
+ exports.LOGICAL_OPERATORS = ['$and', '$or', '$not'];
223
+ /**
224
+ * All operator keys (field + logical).
225
+ */
226
+ exports.ALL_OPERATORS = [...exports.FILTER_OPERATORS, ...exports.LOGICAL_OPERATORS];
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Data Protocol Exports
3
+ *
4
+ * Core Business Logic & Data Modeling
5
+ * - Object, Field, Validation
6
+ * - Query (AST), Mapping (ETL)
7
+ * - Permission, Sharing, Flow
8
+ */
9
+ export * from './field.zod';
10
+ export * from './object.zod';
11
+ export * from './validation.zod';
12
+ export * from './permission.zod';
13
+ export * from './sharing.zod';
14
+ export * from './workflow.zod';
15
+ export * from './flow.zod';
16
+ export * from './dataset.zod';
17
+ export * from './query.zod';
18
+ export * from './filter.zod';
19
+ export * from './mapping.zod';
20
+ export * from './trigger.zod';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ /**
3
+ * Data Protocol Exports
4
+ *
5
+ * Core Business Logic & Data Modeling
6
+ * - Object, Field, Validation
7
+ * - Query (AST), Mapping (ETL)
8
+ * - Permission, Sharing, Flow
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ __exportStar(require("./field.zod"), exports);
26
+ __exportStar(require("./object.zod"), exports);
27
+ __exportStar(require("./validation.zod"), exports);
28
+ __exportStar(require("./permission.zod"), exports);
29
+ __exportStar(require("./sharing.zod"), exports);
30
+ __exportStar(require("./workflow.zod"), exports);
31
+ __exportStar(require("./flow.zod"), exports);
32
+ __exportStar(require("./dataset.zod"), exports);
33
+ __exportStar(require("./query.zod"), exports);
34
+ __exportStar(require("./filter.zod"), exports);
35
+ __exportStar(require("./mapping.zod"), exports);
36
+ __exportStar(require("./trigger.zod"), exports);