bling-docs-mcp 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 (192) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +281 -0
  3. package/dist/index.d.ts +16 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +275 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/embeddings.d.ts +18 -0
  8. package/dist/lib/embeddings.d.ts.map +1 -0
  9. package/dist/lib/embeddings.js +52 -0
  10. package/dist/lib/embeddings.js.map +1 -0
  11. package/dist/lib/indexer.d.ts +13 -0
  12. package/dist/lib/indexer.d.ts.map +1 -0
  13. package/dist/lib/indexer.js +305 -0
  14. package/dist/lib/indexer.js.map +1 -0
  15. package/dist/lib/loader.d.ts +34 -0
  16. package/dist/lib/loader.d.ts.map +1 -0
  17. package/dist/lib/loader.js +267 -0
  18. package/dist/lib/loader.js.map +1 -0
  19. package/dist/lib/openapi-tools.d.ts +38 -0
  20. package/dist/lib/openapi-tools.d.ts.map +1 -0
  21. package/dist/lib/openapi-tools.js +63 -0
  22. package/dist/lib/openapi-tools.js.map +1 -0
  23. package/dist/lib/schema-resolver.d.ts +17 -0
  24. package/dist/lib/schema-resolver.d.ts.map +1 -0
  25. package/dist/lib/schema-resolver.js +173 -0
  26. package/dist/lib/schema-resolver.js.map +1 -0
  27. package/dist/lib/types.d.ts +207 -0
  28. package/dist/lib/types.d.ts.map +1 -0
  29. package/dist/lib/types.js +2 -0
  30. package/dist/lib/types.js.map +1 -0
  31. package/dist/lib/vector-store.d.ts +46 -0
  32. package/dist/lib/vector-store.d.ts.map +1 -0
  33. package/dist/lib/vector-store.js +66 -0
  34. package/dist/lib/vector-store.js.map +1 -0
  35. package/dist/scripts/compare-extraction.d.ts +7 -0
  36. package/dist/scripts/compare-extraction.d.ts.map +1 -0
  37. package/dist/scripts/compare-extraction.js +223 -0
  38. package/dist/scripts/compare-extraction.js.map +1 -0
  39. package/dist/scripts/compare-with-docs-site.d.ts +7 -0
  40. package/dist/scripts/compare-with-docs-site.d.ts.map +1 -0
  41. package/dist/scripts/compare-with-docs-site.js +264 -0
  42. package/dist/scripts/compare-with-docs-site.js.map +1 -0
  43. package/dist/scripts/field-coverage-report.d.ts +14 -0
  44. package/dist/scripts/field-coverage-report.d.ts.map +1 -0
  45. package/dist/scripts/field-coverage-report.js +352 -0
  46. package/dist/scripts/field-coverage-report.js.map +1 -0
  47. package/dist/scripts/final-coverage-report.d.ts +1 -0
  48. package/dist/scripts/final-coverage-report.d.ts.map +1 -0
  49. package/dist/scripts/final-coverage-report.js +2 -0
  50. package/dist/scripts/final-coverage-report.js.map +1 -0
  51. package/dist/scripts/inspect-endpoint.d.ts +15 -0
  52. package/dist/scripts/inspect-endpoint.d.ts.map +1 -0
  53. package/dist/scripts/inspect-endpoint.js +292 -0
  54. package/dist/scripts/inspect-endpoint.js.map +1 -0
  55. package/dist/scripts/performance-validation.d.ts +10 -0
  56. package/dist/scripts/performance-validation.d.ts.map +1 -0
  57. package/dist/scripts/performance-validation.js +123 -0
  58. package/dist/scripts/performance-validation.js.map +1 -0
  59. package/dist/scripts/test-all.d.ts +7 -0
  60. package/dist/scripts/test-all.d.ts.map +1 -0
  61. package/dist/scripts/test-all.js +76 -0
  62. package/dist/scripts/test-all.js.map +1 -0
  63. package/dist/scripts/test-new-fields.d.ts +6 -0
  64. package/dist/scripts/test-new-fields.d.ts.map +1 -0
  65. package/dist/scripts/test-new-fields.js +243 -0
  66. package/dist/scripts/test-new-fields.js.map +1 -0
  67. package/dist/scripts/test-schema-fields.d.ts +7 -0
  68. package/dist/scripts/test-schema-fields.d.ts.map +1 -0
  69. package/dist/scripts/test-schema-fields.js +198 -0
  70. package/dist/scripts/test-schema-fields.js.map +1 -0
  71. package/dist/scripts/validate-extraction.d.ts +15 -0
  72. package/dist/scripts/validate-extraction.d.ts.map +1 -0
  73. package/dist/scripts/validate-extraction.js +294 -0
  74. package/dist/scripts/validate-extraction.js.map +1 -0
  75. package/dist/scripts/validate-full-extraction.d.ts +6 -0
  76. package/dist/scripts/validate-full-extraction.d.ts.map +1 -0
  77. package/dist/scripts/validate-full-extraction.js +399 -0
  78. package/dist/scripts/validate-full-extraction.js.map +1 -0
  79. package/dist/scripts/validate-phase1-fields.d.ts +6 -0
  80. package/dist/scripts/validate-phase1-fields.d.ts.map +1 -0
  81. package/dist/scripts/validate-phase1-fields.js +162 -0
  82. package/dist/scripts/validate-phase1-fields.js.map +1 -0
  83. package/dist/scripts/validate-phase2-fields.d.ts +6 -0
  84. package/dist/scripts/validate-phase2-fields.d.ts.map +1 -0
  85. package/dist/scripts/validate-phase2-fields.js +127 -0
  86. package/dist/scripts/validate-phase2-fields.js.map +1 -0
  87. package/dist/scripts/validate-phase3-fields.d.ts +6 -0
  88. package/dist/scripts/validate-phase3-fields.d.ts.map +1 -0
  89. package/dist/scripts/validate-phase3-fields.js +106 -0
  90. package/dist/scripts/validate-phase3-fields.js.map +1 -0
  91. package/dist/tools/compare-with-openapi-spec.d.ts +10 -0
  92. package/dist/tools/compare-with-openapi-spec.d.ts.map +1 -0
  93. package/dist/tools/compare-with-openapi-spec.js +266 -0
  94. package/dist/tools/compare-with-openapi-spec.js.map +1 -0
  95. package/dist/tools/compare-with-postman.d.ts +25 -0
  96. package/dist/tools/compare-with-postman.d.ts.map +1 -0
  97. package/dist/tools/compare-with-postman.js +257 -0
  98. package/dist/tools/compare-with-postman.js.map +1 -0
  99. package/dist/tools/describe.d.ts +39 -0
  100. package/dist/tools/describe.d.ts.map +1 -0
  101. package/dist/tools/describe.js +64 -0
  102. package/dist/tools/describe.js.map +1 -0
  103. package/dist/tools/get-auth-info.d.ts +33 -0
  104. package/dist/tools/get-auth-info.d.ts.map +1 -0
  105. package/dist/tools/get-auth-info.js +27 -0
  106. package/dist/tools/get-auth-info.js.map +1 -0
  107. package/dist/tools/get-endpoint-details.d.ts +27 -0
  108. package/dist/tools/get-endpoint-details.d.ts.map +1 -0
  109. package/dist/tools/get-endpoint-details.js +59 -0
  110. package/dist/tools/get-endpoint-details.js.map +1 -0
  111. package/dist/tools/get-schema.d.ts +34 -0
  112. package/dist/tools/get-schema.d.ts.map +1 -0
  113. package/dist/tools/get-schema.js +64 -0
  114. package/dist/tools/get-schema.js.map +1 -0
  115. package/dist/tools/list-tags.d.ts +29 -0
  116. package/dist/tools/list-tags.d.ts.map +1 -0
  117. package/dist/tools/list-tags.js +23 -0
  118. package/dist/tools/list-tags.js.map +1 -0
  119. package/dist/tools/read-documentation-page.d.ts +23 -0
  120. package/dist/tools/read-documentation-page.d.ts.map +1 -0
  121. package/dist/tools/read-documentation-page.js +73 -0
  122. package/dist/tools/read-documentation-page.js.map +1 -0
  123. package/dist/tools/search-documentation.d.ts +26 -0
  124. package/dist/tools/search-documentation.d.ts.map +1 -0
  125. package/dist/tools/search-documentation.js +91 -0
  126. package/dist/tools/search-documentation.js.map +1 -0
  127. package/dist/tools/search-endpoints.d.ts +35 -0
  128. package/dist/tools/search-endpoints.d.ts.map +1 -0
  129. package/dist/tools/search-endpoints.js +120 -0
  130. package/dist/tools/search-endpoints.js.map +1 -0
  131. package/dist/tools/search-schemas.d.ts +30 -0
  132. package/dist/tools/search-schemas.d.ts.map +1 -0
  133. package/dist/tools/search-schemas.js +36 -0
  134. package/dist/tools/search-schemas.js.map +1 -0
  135. package/dist/tools/validate-spec.d.ts +44 -0
  136. package/dist/tools/validate-spec.d.ts.map +1 -0
  137. package/dist/tools/validate-spec.js +186 -0
  138. package/dist/tools/validate-spec.js.map +1 -0
  139. package/docs/ajuda_como_gerar_o_access_token.md +8 -0
  140. package/docs/ajuda_como_gerar_o_client_id_e_o_client_secret.md +8 -0
  141. package/docs/ajuda_full.md +35 -0
  142. package/docs/ajuda_preciso_criar_uma_conta_no_bling_para_utilizar_a_api.md +9 -0
  143. package/docs/ajuda_quais_sao_os_limites_da_api.md +9 -0
  144. package/docs/ajuda_qual_e_a_utilidade_do_campo_state.md +9 -0
  145. package/docs/ajuda_qual_e_o_formato_de_retorno_das_respostas_da_api.md +18 -0
  146. package/docs/ajuda_quantos_registros_sao_retornados_por_pagina_em_cada_requisicao.md +9 -0
  147. package/docs/aplicativos_acesso_ao_modulo.md +12 -0
  148. package/docs/aplicativos_como_cadastrar.md +258 -0
  149. package/docs/aplicativos_full.md +276 -0
  150. package/docs/aplicativos_gerenciamento.md +9 -0
  151. package/docs/aplicativos_inscricao.md +8 -0
  152. package/docs/aplicativos_introducao.md +8 -0
  153. package/docs/changelogs-webhooks_2026.md +88 -0
  154. package/docs/changelogs-webhooks_full.md +90 -0
  155. package/docs/changelogs_2026.md +88 -0
  156. package/docs/changelogs_full.md +90 -0
  157. package/docs/guias_como_utilizar_os_tokens.md +20 -0
  158. package/docs/guias_full.md +72 -0
  159. package/docs/guias_fundamentos.md +11 -0
  160. package/docs/guias_introducao.md +9 -0
  161. package/docs/guias_o_que_e_api.md +10 -0
  162. package/docs/guias_oauth_e_tokens_de_acesso.md +9 -0
  163. package/docs/guias_padrao_rest.md +34 -0
  164. package/docs/guias_para_quem_e_destinada_a_api.md +9 -0
  165. package/docs/guias_sobre_o_bling.md +9 -0
  166. package/docs/limites_filtros.md +9 -0
  167. package/docs/limites_full.md +56 -0
  168. package/docs/limites_requisicoes.md +50 -0
  169. package/docs/migracao-jwt_estrutura_e_tamanho_do_token.md +9 -0
  170. package/docs/migracao-jwt_full.md +107 -0
  171. package/docs/migracao-jwt_ganhos_computacionais_e_de_infraestrutura.md +11 -0
  172. package/docs/migracao-jwt_introducao.md +15 -0
  173. package/docs/migracao-jwt_motivacao_da_alteracao.md +9 -0
  174. package/docs/migracao-jwt_tratamento_de_erros_comuns.md +13 -0
  175. package/docs/migracao-jwt_utilizando_jwt_no_bling.md +74 -0
  176. package/docs/publicando_full.md +118 -0
  177. package/docs/publicando_processo.md +9 -0
  178. package/docs/publicando_revisao.md +86 -0
  179. package/docs/publicando_situacoes.md +16 -0
  180. package/docs/publicando_validacao_de_dados.md +23 -0
  181. package/docs/webhooks_acoes.md +12 -0
  182. package/docs/webhooks_autenticacao.md +22 -0
  183. package/docs/webhooks_como_cadastrar.md +20 -0
  184. package/docs/webhooks_entrega_nao_ordenada.md +9 -0
  185. package/docs/webhooks_full.md +453 -0
  186. package/docs/webhooks_idempotencia.md +9 -0
  187. package/docs/webhooks_introducao.md +9 -0
  188. package/docs/webhooks_recebimento_de_eventos.md +8 -0
  189. package/docs/webhooks_recursos.md +374 -0
  190. package/docs/webhooks_retentativas.md +9 -0
  191. package/docs/webhooks_webhooks_vs_polling.md +13 -0
  192. package/package.json +67 -0
@@ -0,0 +1,399 @@
1
+ /**
2
+ * Comprehensive validation script to ensure all OpenAPI data is being extracted correctly
3
+ * This script compares the original OpenAPI spec with what our MCP is returning
4
+ */
5
+ import fs from 'fs';
6
+ import { indexOpenAPISpec } from '../lib/indexer.js';
7
+ import { resolveSchema } from '../lib/schema-resolver.js';
8
+ const issues = [];
9
+ /**
10
+ * Deep comparison of two objects to find differences
11
+ */
12
+ function compareObjects(original, resolved, path) {
13
+ // Check if both are objects
14
+ if (typeof original !== 'object' || typeof resolved !== 'object') {
15
+ return;
16
+ }
17
+ // Check for missing keys in resolved
18
+ for (const key of Object.keys(original)) {
19
+ if (!(key in resolved) && original[key] !== undefined) {
20
+ issues.push({
21
+ severity: 'error',
22
+ category: 'missing_field',
23
+ path: `${path}.${key}`,
24
+ message: `Campo "${key}" existe no original mas não foi extraído`,
25
+ expected: original[key],
26
+ actual: undefined
27
+ });
28
+ }
29
+ }
30
+ }
31
+ /**
32
+ * Validate that nested properties are preserved
33
+ */
34
+ function validateNestedProperties(schema, resolvedSchema, path) {
35
+ if (!schema || typeof schema !== 'object')
36
+ return;
37
+ // Check if original has properties
38
+ if (schema.properties && typeof schema.properties === 'object') {
39
+ if (!resolvedSchema.properties || !Array.isArray(resolvedSchema.properties)) {
40
+ issues.push({
41
+ severity: 'error',
42
+ category: 'nested_properties',
43
+ path,
44
+ message: 'Schema original tem properties mas o resolvido não',
45
+ expected: Object.keys(schema.properties),
46
+ actual: resolvedSchema.properties
47
+ });
48
+ return;
49
+ }
50
+ // Check each property
51
+ for (const [propName, propSchema] of Object.entries(schema.properties)) {
52
+ const resolvedProp = resolvedSchema.properties.find((p) => p.name === propName);
53
+ if (!resolvedProp) {
54
+ issues.push({
55
+ severity: 'error',
56
+ category: 'missing_property',
57
+ path: `${path}.properties.${propName}`,
58
+ message: `Propriedade "${propName}" não foi extraída`,
59
+ expected: propSchema,
60
+ actual: undefined
61
+ });
62
+ continue;
63
+ }
64
+ // Check if property has nested properties
65
+ if (propSchema && typeof propSchema === 'object' && 'properties' in propSchema && propSchema.properties) {
66
+ if (!resolvedProp.properties) {
67
+ issues.push({
68
+ severity: 'error',
69
+ category: 'nested_properties',
70
+ path: `${path}.properties.${propName}`,
71
+ message: `Propriedade "${propName}" tem properties aninhadas que não foram extraídas`,
72
+ expected: Object.keys(propSchema.properties),
73
+ actual: undefined
74
+ });
75
+ }
76
+ else {
77
+ // Recursively validate nested properties
78
+ validateNestedProperties(propSchema, resolvedProp, `${path}.properties.${propName}`);
79
+ }
80
+ }
81
+ // Check required fields - now in requiredFields for PropertyInfo
82
+ if (propSchema && typeof propSchema === 'object' && 'required' in propSchema && Array.isArray(propSchema.required)) {
83
+ const expectedRequired = propSchema.required;
84
+ if (!resolvedProp.requiredFields || resolvedProp.requiredFields.length === 0) {
85
+ issues.push({
86
+ severity: 'error',
87
+ category: 'required_fields',
88
+ path: `${path}.properties.${propName}`,
89
+ message: `Propriedade "${propName}" tem campos obrigatórios que não foram extraídos`,
90
+ expected: expectedRequired,
91
+ actual: resolvedProp.requiredFields
92
+ });
93
+ }
94
+ else {
95
+ // Check if all required fields are present
96
+ for (const reqField of expectedRequired) {
97
+ if (!resolvedProp.requiredFields.includes(reqField)) {
98
+ issues.push({
99
+ severity: 'error',
100
+ category: 'required_fields',
101
+ path: `${path}.properties.${propName}.required`,
102
+ message: `Campo obrigatório "${reqField}" não está marcado como obrigatório`,
103
+ expected: expectedRequired,
104
+ actual: resolvedProp.requiredFields
105
+ });
106
+ }
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ // Check required array
113
+ if (Array.isArray(schema.required)) {
114
+ // Check if this is a PropertyInfo (has requiredFields) or ResolvedSchema (has required array)
115
+ const actualRequired = resolvedSchema.requiredFields || resolvedSchema.required;
116
+ if (!Array.isArray(actualRequired)) {
117
+ issues.push({
118
+ severity: 'error',
119
+ category: 'required_fields',
120
+ path,
121
+ message: 'Schema original tem required mas o resolvido não',
122
+ expected: schema.required,
123
+ actual: actualRequired
124
+ });
125
+ }
126
+ else {
127
+ // Check if all required fields are present
128
+ for (const requiredField of schema.required) {
129
+ if (!actualRequired.includes(requiredField)) {
130
+ issues.push({
131
+ severity: 'error',
132
+ category: 'required_fields',
133
+ path: `${path}.required`,
134
+ message: `Campo obrigatório "${requiredField}" não está marcado como obrigatório`,
135
+ expected: schema.required,
136
+ actual: actualRequired
137
+ });
138
+ }
139
+ }
140
+ }
141
+ }
142
+ // Check allOf, oneOf, anyOf
143
+ if (Array.isArray(schema.allOf)) {
144
+ if (!Array.isArray(resolvedSchema.allOf)) {
145
+ issues.push({
146
+ severity: 'error',
147
+ category: 'composition',
148
+ path: `${path}.allOf`,
149
+ message: 'Schema original tem allOf mas o resolvido não',
150
+ expected: schema.allOf.length,
151
+ actual: undefined
152
+ });
153
+ }
154
+ else {
155
+ schema.allOf.forEach((subSchema, index) => {
156
+ if (resolvedSchema.allOf[index]) {
157
+ validateNestedProperties(subSchema, resolvedSchema.allOf[index], `${path}.allOf[${index}]`);
158
+ }
159
+ });
160
+ }
161
+ }
162
+ if (Array.isArray(schema.oneOf)) {
163
+ if (!Array.isArray(resolvedSchema.oneOf)) {
164
+ issues.push({
165
+ severity: 'error',
166
+ category: 'composition',
167
+ path: `${path}.oneOf`,
168
+ message: 'Schema original tem oneOf mas o resolvido não',
169
+ expected: schema.oneOf.length,
170
+ actual: undefined
171
+ });
172
+ }
173
+ }
174
+ if (Array.isArray(schema.anyOf)) {
175
+ if (!Array.isArray(resolvedSchema.anyOf)) {
176
+ issues.push({
177
+ severity: 'error',
178
+ category: 'composition',
179
+ path: `${path}.anyOf`,
180
+ message: 'Schema original tem anyOf mas o resolvido não',
181
+ expected: schema.anyOf.length,
182
+ actual: undefined
183
+ });
184
+ }
185
+ }
186
+ // Check array items
187
+ if (schema.type === 'array' && schema.items) {
188
+ if (!resolvedSchema.items) {
189
+ issues.push({
190
+ severity: 'error',
191
+ category: 'array_items',
192
+ path: `${path}.items`,
193
+ message: 'Array original tem items mas o resolvido não',
194
+ expected: schema.items,
195
+ actual: undefined
196
+ });
197
+ }
198
+ else if (schema.items.properties) {
199
+ validateNestedProperties(schema.items, resolvedSchema.items, `${path}.items`);
200
+ }
201
+ }
202
+ }
203
+ /**
204
+ * Validate all schemas in the spec
205
+ */
206
+ async function validateSchemas(spec, indexedData) {
207
+ console.log('\n=== VALIDANDO SCHEMAS ===\n');
208
+ if (!spec.components?.schemas) {
209
+ console.log('⚠️ Spec não tem schemas');
210
+ return;
211
+ }
212
+ const schemaNames = Object.keys(spec.components.schemas);
213
+ console.log(`Total de schemas: ${schemaNames.length}`);
214
+ for (const schemaName of schemaNames) {
215
+ const originalSchema = spec.components.schemas[schemaName];
216
+ const resolvedSchema = resolveSchema(originalSchema, spec);
217
+ validateNestedProperties(originalSchema, resolvedSchema, `schemas.${schemaName}`);
218
+ }
219
+ }
220
+ /**
221
+ * Validate endpoints
222
+ */
223
+ async function validateEndpoints(spec, indexedData) {
224
+ console.log('\n=== VALIDANDO ENDPOINTS ===\n');
225
+ if (!spec.paths) {
226
+ console.log('⚠️ Spec não tem paths');
227
+ return;
228
+ }
229
+ let totalEndpoints = 0;
230
+ let endpointsWithRequestBody = 0;
231
+ let endpointsWithResponses = 0;
232
+ for (const [path, pathItem] of Object.entries(spec.paths)) {
233
+ for (const [method, operation] of Object.entries(pathItem)) {
234
+ if (!['get', 'post', 'put', 'delete', 'patch', 'options', 'head'].includes(method)) {
235
+ continue;
236
+ }
237
+ const op = operation;
238
+ totalEndpoints++;
239
+ const key = `${method.toUpperCase()} ${path}`;
240
+ const indexedEndpoint = indexedData.endpointsByPath.get(key);
241
+ if (!indexedEndpoint) {
242
+ issues.push({
243
+ severity: 'error',
244
+ category: 'missing_endpoint',
245
+ path: key,
246
+ message: `Endpoint não foi indexado`,
247
+ expected: op,
248
+ actual: undefined
249
+ });
250
+ continue;
251
+ }
252
+ // Validate request body
253
+ if (op.requestBody) {
254
+ endpointsWithRequestBody++;
255
+ const content = op.requestBody.content?.['application/json'];
256
+ if (content?.schema) {
257
+ if (!indexedEndpoint.requestBody) {
258
+ issues.push({
259
+ severity: 'error',
260
+ category: 'missing_request_body',
261
+ path: `${key}.requestBody`,
262
+ message: 'Endpoint tem requestBody mas não foi extraído',
263
+ expected: content.schema,
264
+ actual: undefined
265
+ });
266
+ }
267
+ else {
268
+ // Resolve schema before validation
269
+ const resolvedBodySchema = resolveSchema(indexedEndpoint.requestBody.schema, spec);
270
+ validateNestedProperties(content.schema, resolvedBodySchema, `${key}.requestBody`);
271
+ }
272
+ }
273
+ }
274
+ // Validate responses
275
+ if (op.responses) {
276
+ endpointsWithResponses++;
277
+ for (const [statusCode, response] of Object.entries(op.responses)) {
278
+ const resp = response;
279
+ const content = resp.content?.['application/json'];
280
+ if (content?.schema) {
281
+ const indexedResponse = indexedEndpoint.responses.find((r) => r.statusCode === statusCode);
282
+ if (!indexedResponse) {
283
+ issues.push({
284
+ severity: 'error',
285
+ category: 'missing_response',
286
+ path: `${key}.responses.${statusCode}`,
287
+ message: `Response ${statusCode} não foi extraída`,
288
+ expected: content.schema,
289
+ actual: undefined
290
+ });
291
+ }
292
+ else if (indexedResponse.schema) {
293
+ // Resolve schema before validation, as indexer stores raw schema
294
+ const resolvedResponseSchema = resolveSchema(indexedResponse.schema, spec);
295
+ validateNestedProperties(content.schema, resolvedResponseSchema, `${key}.responses.${statusCode}`);
296
+ }
297
+ }
298
+ }
299
+ }
300
+ }
301
+ }
302
+ console.log(`Total de endpoints: ${totalEndpoints}`);
303
+ console.log(`Endpoints com requestBody: ${endpointsWithRequestBody}`);
304
+ console.log(`Endpoints com responses: ${endpointsWithResponses}`);
305
+ }
306
+ /**
307
+ * Main validation function
308
+ */
309
+ async function main() {
310
+ console.log('🔍 VALIDAÇÃO COMPLETA DA EXTRAÇÃO DE DADOS\n');
311
+ console.log('='.repeat(60));
312
+ try {
313
+ // Load the spec directly from URL
314
+ const specUrl = 'https://developer.bling.com.br/build/assets/openapi-BXERwLp6.json';
315
+ console.log(`\n📥 Carregando OpenAPI spec de: ${specUrl}`);
316
+ const response = await fetch(specUrl);
317
+ if (!response.ok) {
318
+ throw new Error(`Failed to fetch spec: ${response.statusText}`);
319
+ }
320
+ const spec = await response.json();
321
+ // Use @scalar/openapi-parser to dereference
322
+ const { dereference } = await import('@scalar/openapi-parser');
323
+ const { schema: dereferencedSpec } = await dereference(spec);
324
+ // Index the data
325
+ console.log('📊 Indexando dados...');
326
+ const indexedData = indexOpenAPISpec(dereferencedSpec);
327
+ // Run validations
328
+ await validateSchemas(dereferencedSpec, indexedData);
329
+ await validateEndpoints(dereferencedSpec, indexedData);
330
+ // Report results
331
+ console.log('\n' + '='.repeat(60));
332
+ console.log('\n📋 RESULTADOS DA VALIDAÇÃO\n');
333
+ if (issues.length === 0) {
334
+ console.log('✅ Nenhum problema encontrado! Todos os dados estão sendo extraídos corretamente.\n');
335
+ process.exit(0);
336
+ }
337
+ // Group issues by category
338
+ const errorsByCategory = new Map();
339
+ const warningsByCategory = new Map();
340
+ for (const issue of issues) {
341
+ const map = issue.severity === 'error' ? errorsByCategory : warningsByCategory;
342
+ if (!map.has(issue.category)) {
343
+ map.set(issue.category, []);
344
+ }
345
+ map.get(issue.category).push(issue);
346
+ }
347
+ // Print errors
348
+ const totalErrors = Array.from(errorsByCategory.values()).reduce((sum, arr) => sum + arr.length, 0);
349
+ const totalWarnings = Array.from(warningsByCategory.values()).reduce((sum, arr) => sum + arr.length, 0);
350
+ console.log(`❌ Erros encontrados: ${totalErrors}`);
351
+ console.log(`⚠️ Avisos encontrados: ${totalWarnings}\n`);
352
+ if (totalErrors > 0) {
353
+ console.log('ERROS POR CATEGORIA:\n');
354
+ for (const [category, categoryIssues] of errorsByCategory.entries()) {
355
+ console.log(`\n📌 ${category.toUpperCase()} (${categoryIssues.length} erros):`);
356
+ // Show first 5 examples
357
+ const examples = categoryIssues.slice(0, 5);
358
+ for (const issue of examples) {
359
+ console.log(`\n Path: ${issue.path}`);
360
+ console.log(` Mensagem: ${issue.message}`);
361
+ if (issue.expected !== undefined) {
362
+ console.log(` Esperado: ${JSON.stringify(issue.expected).substring(0, 100)}...`);
363
+ }
364
+ }
365
+ if (categoryIssues.length > 5) {
366
+ console.log(`\n ... e mais ${categoryIssues.length - 5} erros similares`);
367
+ }
368
+ }
369
+ }
370
+ if (totalWarnings > 0) {
371
+ console.log('\n\nAVISOS POR CATEGORIA:\n');
372
+ for (const [category, categoryIssues] of warningsByCategory.entries()) {
373
+ console.log(`\n📌 ${category.toUpperCase()} (${categoryIssues.length} avisos):`);
374
+ console.log(` Exemplo: ${categoryIssues[0].message}`);
375
+ }
376
+ }
377
+ // Save detailed report
378
+ const report = {
379
+ timestamp: new Date().toISOString(),
380
+ summary: {
381
+ totalIssues: issues.length,
382
+ errors: totalErrors,
383
+ warnings: totalWarnings,
384
+ errorsByCategory: Object.fromEntries(Array.from(errorsByCategory.entries()).map(([k, v]) => [k, v.length])),
385
+ warningsByCategory: Object.fromEntries(Array.from(warningsByCategory.entries()).map(([k, v]) => [k, v.length]))
386
+ },
387
+ issues
388
+ };
389
+ fs.writeFileSync('validation-report.json', JSON.stringify(report, null, 2));
390
+ console.log('\n\n💾 Relatório detalhado salvo em: validation-report.json');
391
+ process.exit(totalErrors > 0 ? 1 : 0);
392
+ }
393
+ catch (error) {
394
+ console.error('\n❌ Erro durante validação:', error);
395
+ process.exit(1);
396
+ }
397
+ }
398
+ main();
399
+ //# sourceMappingURL=validate-full-extraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-full-extraction.js","sourceRoot":"","sources":["../../src/scripts/validate-full-extraction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Validation script for Phase 1 missing fields implementation
3
+ * Checks if all critical fields are being extracted correctly
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=validate-phase1-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-phase1-fields.d.ts","sourceRoot":"","sources":["../../src/scripts/validate-phase1-fields.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Validation script for Phase 1 missing fields implementation
3
+ * Checks if all critical fields are being extracted correctly
4
+ */
5
+ import { loadOpenAPISpec } from '../lib/loader.js';
6
+ import { indexOpenAPISpec } from '../lib/indexer.js';
7
+ import { resolveAllSchemas } from '../lib/schema-resolver.js';
8
+ async function validatePhase1Fields() {
9
+ console.log('🔍 Validating Phase 1 Fields Implementation\n');
10
+ // Load and index spec
11
+ const BLING_OPENAPI_URL = 'https://developer.bling.com.br/build/assets/openapi-BXERwLp6.json';
12
+ const spec = await loadOpenAPISpec(BLING_OPENAPI_URL);
13
+ const indexed = indexOpenAPISpec(spec);
14
+ const resolvedSchemas = resolveAllSchemas(indexed.schemas, spec);
15
+ const results = [];
16
+ // 1. Check operationId
17
+ console.log('1️⃣ Checking operationId...');
18
+ const withOperationId = indexed.endpoints.filter(e => e.operationId);
19
+ results.push({
20
+ field: 'operationId',
21
+ found: withOperationId.length,
22
+ total: indexed.endpoints.length,
23
+ percentage: (withOperationId.length / indexed.endpoints.length) * 100,
24
+ examples: withOperationId.slice(0, 3).map(e => `${e.method} ${e.path}: ${e.operationId}`),
25
+ });
26
+ // 2. Check deprecated endpoints
27
+ console.log('2️⃣ Checking deprecated (endpoints)...');
28
+ const deprecatedEndpoints = indexed.endpoints.filter(e => e.deprecated);
29
+ results.push({
30
+ field: 'deprecated (endpoints)',
31
+ found: deprecatedEndpoints.length,
32
+ total: indexed.endpoints.length,
33
+ percentage: (deprecatedEndpoints.length / indexed.endpoints.length) * 100,
34
+ examples: deprecatedEndpoints.slice(0, 3).map(e => `${e.method} ${e.path}`),
35
+ });
36
+ // 3. Check deprecated parameters
37
+ console.log('3️⃣ Checking deprecated (parameters)...');
38
+ const allParams = indexed.endpoints.flatMap(e => e.parameters);
39
+ const deprecatedParams = allParams.filter(p => p.deprecated);
40
+ results.push({
41
+ field: 'deprecated (parameters)',
42
+ found: deprecatedParams.length,
43
+ total: allParams.length,
44
+ percentage: allParams.length > 0 ? (deprecatedParams.length / allParams.length) * 100 : 0,
45
+ examples: deprecatedParams.slice(0, 3).map(p => `${p.name} (${p.in})`),
46
+ });
47
+ // 4. Check nullable in schemas
48
+ console.log('4️⃣ Checking nullable (schemas)...');
49
+ const allProperties = [];
50
+ for (const schema of resolvedSchemas.values()) {
51
+ if (schema.properties) {
52
+ allProperties.push(...schema.properties);
53
+ }
54
+ }
55
+ const nullableProps = allProperties.filter(p => p.nullable);
56
+ results.push({
57
+ field: 'nullable (properties)',
58
+ found: nullableProps.length,
59
+ total: allProperties.length,
60
+ percentage: allProperties.length > 0 ? (nullableProps.length / allProperties.length) * 100 : 0,
61
+ examples: nullableProps.slice(0, 3).map(p => p.name),
62
+ });
63
+ // 5. Check readOnly
64
+ console.log('5️⃣ Checking readOnly...');
65
+ const readOnlyProps = allProperties.filter(p => p.readOnly);
66
+ results.push({
67
+ field: 'readOnly (properties)',
68
+ found: readOnlyProps.length,
69
+ total: allProperties.length,
70
+ percentage: allProperties.length > 0 ? (readOnlyProps.length / allProperties.length) * 100 : 0,
71
+ examples: readOnlyProps.slice(0, 3).map(p => p.name),
72
+ });
73
+ // 6. Check writeOnly
74
+ console.log('6️⃣ Checking writeOnly...');
75
+ const writeOnlyProps = allProperties.filter(p => p.writeOnly);
76
+ results.push({
77
+ field: 'writeOnly (properties)',
78
+ found: writeOnlyProps.length,
79
+ total: allProperties.length,
80
+ percentage: allProperties.length > 0 ? (writeOnlyProps.length / allProperties.length) * 100 : 0,
81
+ examples: writeOnlyProps.slice(0, 3).map(p => p.name),
82
+ });
83
+ // 7. Check response headers
84
+ console.log('7️⃣ Checking response headers...');
85
+ const allResponses = indexed.endpoints.flatMap(e => e.responses);
86
+ const responsesWithHeaders = allResponses.filter(r => r.headers && Object.keys(r.headers).length > 0);
87
+ results.push({
88
+ field: 'headers (responses)',
89
+ found: responsesWithHeaders.length,
90
+ total: allResponses.length,
91
+ percentage: allResponses.length > 0 ? (responsesWithHeaders.length / allResponses.length) * 100 : 0,
92
+ examples: responsesWithHeaders.slice(0, 3).map(r => `${r.statusCode}: ${Object.keys(r.headers).join(', ')}`),
93
+ });
94
+ // 8. Check servers (operation level)
95
+ console.log('8️⃣ Checking servers (operation level)...');
96
+ const endpointsWithServers = indexed.endpoints.filter(e => e.servers && e.servers.length > 0);
97
+ results.push({
98
+ field: 'servers (operation level)',
99
+ found: endpointsWithServers.length,
100
+ total: indexed.endpoints.length,
101
+ percentage: (endpointsWithServers.length / indexed.endpoints.length) * 100,
102
+ examples: endpointsWithServers.slice(0, 3).map(e => `${e.method} ${e.path}: ${e.servers[0].url}`),
103
+ });
104
+ // 9. Check externalDocs
105
+ console.log('9️⃣ Checking externalDocs...');
106
+ const endpointsWithDocs = indexed.endpoints.filter(e => e.externalDocs);
107
+ results.push({
108
+ field: 'externalDocs',
109
+ found: endpointsWithDocs.length,
110
+ total: indexed.endpoints.length,
111
+ percentage: (endpointsWithDocs.length / indexed.endpoints.length) * 100,
112
+ examples: endpointsWithDocs.slice(0, 3).map(e => `${e.method} ${e.path}: ${e.externalDocs.url}`),
113
+ });
114
+ // 10. Check parameter style/explode
115
+ console.log('🔟 Checking parameter style/explode...');
116
+ const paramsWithStyle = allParams.filter(p => p.style);
117
+ const paramsWithExplode = allParams.filter(p => p.explode !== undefined);
118
+ results.push({
119
+ field: 'style (parameters)',
120
+ found: paramsWithStyle.length,
121
+ total: allParams.length,
122
+ percentage: allParams.length > 0 ? (paramsWithStyle.length / allParams.length) * 100 : 0,
123
+ examples: paramsWithStyle.slice(0, 3).map(p => `${p.name}: ${p.style}`),
124
+ });
125
+ results.push({
126
+ field: 'explode (parameters)',
127
+ found: paramsWithExplode.length,
128
+ total: allParams.length,
129
+ percentage: allParams.length > 0 ? (paramsWithExplode.length / allParams.length) * 100 : 0,
130
+ examples: paramsWithExplode.slice(0, 3).map(p => `${p.name}: ${p.explode}`),
131
+ });
132
+ // Print results
133
+ console.log('\n📊 Validation Results:\n');
134
+ console.log('┌─────────────────────────────┬─────────┬─────────┬────────────┐');
135
+ console.log('│ Field │ Found │ Total │ Percentage │');
136
+ console.log('├─────────────────────────────┼─────────┼─────────┼────────────┤');
137
+ for (const result of results) {
138
+ const field = result.field.padEnd(27);
139
+ const found = result.found.toString().padStart(7);
140
+ const total = result.total.toString().padStart(7);
141
+ const percentage = result.percentage.toFixed(1).padStart(9) + '%';
142
+ console.log(`│ ${field} │ ${found} │ ${total} │ ${percentage} │`);
143
+ }
144
+ console.log('└─────────────────────────────┴─────────┴─────────┴────────────┘');
145
+ // Print examples
146
+ console.log('\n📝 Examples:\n');
147
+ for (const result of results) {
148
+ if (result.examples.length > 0) {
149
+ console.log(`${result.field}:`);
150
+ result.examples.forEach(ex => console.log(` - ${ex}`));
151
+ console.log();
152
+ }
153
+ }
154
+ // Summary
155
+ console.log('✅ Phase 1 Implementation Status:');
156
+ const implementedFields = results.filter(r => r.found > 0).length;
157
+ const totalFields = results.length;
158
+ console.log(` ${implementedFields}/${totalFields} fields are being extracted`);
159
+ console.log(` Coverage: ${((implementedFields / totalFields) * 100).toFixed(1)}%`);
160
+ }
161
+ validatePhase1Fields().catch(console.error);
162
+ //# sourceMappingURL=validate-phase1-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-phase1-fields.js","sourceRoot":"","sources":["../../src/scripts/validate-phase1-fields.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAU9D,KAAK,UAAU,oBAAoB;IACjC,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAE7D,sBAAsB;IACtB,MAAM,iBAAiB,GAAG,mEAAmE,CAAC;IAC9F,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,uBAAuB;IACvB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,eAAe,CAAC,MAAM;QAC7B,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM;QAC/B,UAAU,EAAE,CAAC,eAAe,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG;QACrE,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;KAC1F,CAAC,CAAC;IAEH,gCAAgC;IAChC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,MAAM,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACxE,OAAO,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,wBAAwB;QAC/B,KAAK,EAAE,mBAAmB,CAAC,MAAM;QACjC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM;QAC/B,UAAU,EAAE,CAAC,mBAAmB,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG;QACzE,QAAQ,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;KAC5E,CAAC,CAAC;IAEH,iCAAiC;IACjC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,yBAAyB;QAChC,KAAK,EAAE,gBAAgB,CAAC,MAAM;QAC9B,KAAK,EAAE,SAAS,CAAC,MAAM;QACvB,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACzF,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;KACvE,CAAC,CAAC;IAEH,+BAA+B;IAC/B,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,MAAM,aAAa,GAAU,EAAE,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,uBAAuB;QAC9B,KAAK,EAAE,aAAa,CAAC,MAAM;QAC3B,KAAK,EAAE,aAAa,CAAC,MAAM;QAC3B,UAAU,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9F,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;KACrD,CAAC,CAAC;IAEH,oBAAoB;IACpB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,uBAAuB;QAC9B,KAAK,EAAE,aAAa,CAAC,MAAM;QAC3B,KAAK,EAAE,aAAa,CAAC,MAAM;QAC3B,UAAU,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9F,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;KACrD,CAAC,CAAC;IAEH,qBAAqB;IACrB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,wBAAwB;QAC/B,KAAK,EAAE,cAAc,CAAC,MAAM;QAC5B,KAAK,EAAE,aAAa,CAAC,MAAM;QAC3B,UAAU,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/F,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;KACtD,CAAC,CAAC;IAEH,4BAA4B;IAC5B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjE,MAAM,oBAAoB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,qBAAqB;QAC5B,KAAK,EAAE,oBAAoB,CAAC,MAAM;QAClC,KAAK,EAAE,YAAY,CAAC,MAAM;QAC1B,UAAU,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACnG,QAAQ,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACjD,GAAG,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzD;KACF,CAAC,CAAC;IAEH,qCAAqC;IACrC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,MAAM,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,2BAA2B;QAClC,KAAK,EAAE,oBAAoB,CAAC,MAAM;QAClC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM;QAC/B,UAAU,EAAE,CAAC,oBAAoB,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG;QAC1E,QAAQ,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACjD,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAC9C;KACF,CAAC,CAAC;IAEH,wBAAwB;IACxB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACxE,OAAO,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,iBAAiB,CAAC,MAAM;QAC/B,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM;QAC/B,UAAU,EAAE,CAAC,iBAAiB,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG;QACvE,QAAQ,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC9C,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,YAAa,CAAC,GAAG,EAAE,CAChD;KACF,CAAC,CAAC;IAEH,oCAAoC;IACpC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;IACzE,OAAO,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,oBAAoB;QAC3B,KAAK,EAAE,eAAe,CAAC,MAAM;QAC7B,KAAK,EAAE,SAAS,CAAC,MAAM;QACvB,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACxF,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;KACxE,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,iBAAiB,CAAC,MAAM;QAC/B,KAAK,EAAE,SAAS,CAAC,MAAM;QACvB,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1F,QAAQ,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;KAC5E,CAAC,CAAC;IAEH,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IAEhF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,UAAU,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IAEhF,iBAAiB;IACjB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,MAAM,iBAAiB,IAAI,WAAW,6BAA6B,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,iBAAiB,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvF,CAAC;AAED,oBAAoB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Validation script for Phase 2 missing fields
3
+ * Checks which validation and metadata fields are present in the Bling spec
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=validate-phase2-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-phase2-fields.d.ts","sourceRoot":"","sources":["../../src/scripts/validate-phase2-fields.ts"],"names":[],"mappings":"AAAA;;;GAGG"}