@nocobase/app-plugin-foundation 0.0.0-stage → 0.1.0-beta.1

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 (252) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +96 -2
  3. package/dist/cli/index.d.ts +4 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +16 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/cli/module-manifest.d.ts +9 -0
  8. package/dist/cli/module-manifest.d.ts.map +1 -0
  9. package/dist/cli/module-manifest.js +12 -0
  10. package/dist/cli/module-manifest.js.map +1 -0
  11. package/dist/client/api.d.ts +19 -0
  12. package/dist/client/api.d.ts.map +1 -0
  13. package/dist/client/api.js +57 -0
  14. package/dist/client/api.js.map +1 -0
  15. package/dist/client/business-modules.d.ts +5 -0
  16. package/dist/client/business-modules.d.ts.map +1 -0
  17. package/dist/client/business-modules.js +87 -0
  18. package/dist/client/business-modules.js.map +1 -0
  19. package/dist/client/components/capability-icons.d.ts +4 -0
  20. package/dist/client/components/capability-icons.d.ts.map +1 -0
  21. package/dist/client/components/capability-icons.js +17 -0
  22. package/dist/client/components/capability-icons.js.map +1 -0
  23. package/dist/client/components/collections-browser.d.ts +7 -0
  24. package/dist/client/components/collections-browser.d.ts.map +1 -0
  25. package/dist/client/components/collections-browser.js +63 -0
  26. package/dist/client/components/collections-browser.js.map +1 -0
  27. package/dist/client/components/format.d.ts +7 -0
  28. package/dist/client/components/format.d.ts.map +1 -0
  29. package/dist/client/components/format.js +42 -0
  30. package/dist/client/components/format.js.map +1 -0
  31. package/dist/client/components/foundation-page.d.ts +16 -0
  32. package/dist/client/components/foundation-page.d.ts.map +1 -0
  33. package/dist/client/components/foundation-page.js +217 -0
  34. package/dist/client/components/foundation-page.js.map +1 -0
  35. package/dist/client/components/foundation-translation.d.ts +12 -0
  36. package/dist/client/components/foundation-translation.d.ts.map +1 -0
  37. package/dist/client/components/foundation-translation.js +19 -0
  38. package/dist/client/components/foundation-translation.js.map +1 -0
  39. package/dist/client/components/module-matrix.d.ts +9 -0
  40. package/dist/client/components/module-matrix.d.ts.map +1 -0
  41. package/dist/client/components/module-matrix.js +59 -0
  42. package/dist/client/components/module-matrix.js.map +1 -0
  43. package/dist/client/components/ui/button.d.ts +8 -0
  44. package/dist/client/components/ui/button.d.ts.map +1 -0
  45. package/dist/client/components/ui/button.js +35 -0
  46. package/dist/client/components/ui/button.js.map +1 -0
  47. package/dist/client/components/ui/collapsible.d.ts +7 -0
  48. package/dist/client/components/ui/collapsible.d.ts.map +1 -0
  49. package/dist/client/components/ui/collapsible.js +13 -0
  50. package/dist/client/components/ui/collapsible.js.map +1 -0
  51. package/dist/client/components/ui/dialog.d.ts +18 -0
  52. package/dist/client/components/ui/dialog.d.ts.map +1 -0
  53. package/dist/client/components/ui/dialog.js +37 -0
  54. package/dist/client/components/ui/dialog.js.map +1 -0
  55. package/dist/client/components/ui/input.d.ts +4 -0
  56. package/dist/client/components/ui/input.d.ts.map +1 -0
  57. package/dist/client/components/ui/input.js +8 -0
  58. package/dist/client/components/ui/input.js.map +1 -0
  59. package/dist/client/components/ui/table.d.ts +11 -0
  60. package/dist/client/components/ui/table.d.ts.map +1 -0
  61. package/dist/client/components/ui/table.js +28 -0
  62. package/dist/client/components/ui/table.js.map +1 -0
  63. package/dist/client/components/ui/tooltip.d.ts +8 -0
  64. package/dist/client/components/ui/tooltip.d.ts.map +1 -0
  65. package/dist/client/components/ui/tooltip.js +17 -0
  66. package/dist/client/components/ui/tooltip.js.map +1 -0
  67. package/dist/client/index.d.ts +6 -0
  68. package/dist/client/index.d.ts.map +1 -0
  69. package/dist/client/index.js +7 -0
  70. package/dist/client/index.js.map +1 -0
  71. package/dist/client/locales/de-DE.d.ts +4 -0
  72. package/dist/client/locales/de-DE.d.ts.map +1 -0
  73. package/dist/client/locales/de-DE.js +334 -0
  74. package/dist/client/locales/de-DE.js.map +1 -0
  75. package/dist/client/locales/en-US.d.ts +336 -0
  76. package/dist/client/locales/en-US.d.ts.map +1 -0
  77. package/dist/client/locales/en-US.js +334 -0
  78. package/dist/client/locales/en-US.js.map +1 -0
  79. package/dist/client/locales/es-ES.d.ts +4 -0
  80. package/dist/client/locales/es-ES.d.ts.map +1 -0
  81. package/dist/client/locales/es-ES.js +335 -0
  82. package/dist/client/locales/es-ES.js.map +1 -0
  83. package/dist/client/locales/fr-FR.d.ts +4 -0
  84. package/dist/client/locales/fr-FR.d.ts.map +1 -0
  85. package/dist/client/locales/fr-FR.js +335 -0
  86. package/dist/client/locales/fr-FR.js.map +1 -0
  87. package/dist/client/locales/id-ID.d.ts +4 -0
  88. package/dist/client/locales/id-ID.d.ts.map +1 -0
  89. package/dist/client/locales/id-ID.js +334 -0
  90. package/dist/client/locales/id-ID.js.map +1 -0
  91. package/dist/client/locales/index.d.ts +4 -0
  92. package/dist/client/locales/index.d.ts.map +1 -0
  93. package/dist/client/locales/index.js +14 -0
  94. package/dist/client/locales/index.js.map +1 -0
  95. package/dist/client/locales/ja-JP.d.ts +4 -0
  96. package/dist/client/locales/ja-JP.d.ts.map +1 -0
  97. package/dist/client/locales/ja-JP.js +334 -0
  98. package/dist/client/locales/ja-JP.js.map +1 -0
  99. package/dist/client/locales/pt-BR.d.ts +4 -0
  100. package/dist/client/locales/pt-BR.d.ts.map +1 -0
  101. package/dist/client/locales/pt-BR.js +335 -0
  102. package/dist/client/locales/pt-BR.js.map +1 -0
  103. package/dist/client/locales/vi-VN.d.ts +4 -0
  104. package/dist/client/locales/vi-VN.d.ts.map +1 -0
  105. package/dist/client/locales/vi-VN.js +334 -0
  106. package/dist/client/locales/vi-VN.js.map +1 -0
  107. package/dist/client/locales/zh-CN.d.ts +4 -0
  108. package/dist/client/locales/zh-CN.d.ts.map +1 -0
  109. package/dist/client/locales/zh-CN.js +334 -0
  110. package/dist/client/locales/zh-CN.js.map +1 -0
  111. package/dist/client/locales/zh-TW.d.ts +4 -0
  112. package/dist/client/locales/zh-TW.d.ts.map +1 -0
  113. package/dist/client/locales/zh-TW.js +334 -0
  114. package/dist/client/locales/zh-TW.js.map +1 -0
  115. package/dist/client/navigation.d.ts +8 -0
  116. package/dist/client/navigation.d.ts.map +1 -0
  117. package/dist/client/navigation.js +21 -0
  118. package/dist/client/navigation.js.map +1 -0
  119. package/dist/client/plugin.d.ts +11 -0
  120. package/dist/client/plugin.d.ts.map +1 -0
  121. package/dist/client/plugin.js +10 -0
  122. package/dist/client/plugin.js.map +1 -0
  123. package/dist/client/provider-inventory.d.ts +6 -0
  124. package/dist/client/provider-inventory.d.ts.map +1 -0
  125. package/dist/client/provider-inventory.js +49 -0
  126. package/dist/client/provider-inventory.js.map +1 -0
  127. package/dist/client/routes.d.ts +18 -0
  128. package/dist/client/routes.d.ts.map +1 -0
  129. package/dist/client/routes.js +41 -0
  130. package/dist/client/routes.js.map +1 -0
  131. package/dist/package.d.ts +2 -0
  132. package/dist/package.d.ts.map +1 -0
  133. package/dist/package.js +2 -0
  134. package/dist/package.js.map +1 -0
  135. package/dist/server/api-evidence.d.ts +13 -0
  136. package/dist/server/api-evidence.d.ts.map +1 -0
  137. package/dist/server/api-evidence.js +178 -0
  138. package/dist/server/api-evidence.js.map +1 -0
  139. package/dist/server/capabilities/data.d.ts +9 -0
  140. package/dist/server/capabilities/data.d.ts.map +1 -0
  141. package/dist/server/capabilities/data.js +143 -0
  142. package/dist/server/capabilities/data.js.map +1 -0
  143. package/dist/server/capabilities/index.d.ts +5 -0
  144. package/dist/server/capabilities/index.d.ts.map +1 -0
  145. package/dist/server/capabilities/index.js +24 -0
  146. package/dist/server/capabilities/index.js.map +1 -0
  147. package/dist/server/capabilities/intelligence.d.ts +4 -0
  148. package/dist/server/capabilities/intelligence.d.ts.map +1 -0
  149. package/dist/server/capabilities/intelligence.js +105 -0
  150. package/dist/server/capabilities/intelligence.js.map +1 -0
  151. package/dist/server/capabilities/messaging.d.ts +4 -0
  152. package/dist/server/capabilities/messaging.d.ts.map +1 -0
  153. package/dist/server/capabilities/messaging.js +108 -0
  154. package/dist/server/capabilities/messaging.js.map +1 -0
  155. package/dist/server/capabilities/people.d.ts +4 -0
  156. package/dist/server/capabilities/people.d.ts.map +1 -0
  157. package/dist/server/capabilities/people.js +151 -0
  158. package/dist/server/capabilities/people.js.map +1 -0
  159. package/dist/server/capabilities/platform.d.ts +10 -0
  160. package/dist/server/capabilities/platform.d.ts.map +1 -0
  161. package/dist/server/capabilities/platform.js +143 -0
  162. package/dist/server/capabilities/platform.js.map +1 -0
  163. package/dist/server/capabilities/processes.d.ts +3 -0
  164. package/dist/server/capabilities/processes.d.ts.map +1 -0
  165. package/dist/server/capabilities/processes.js +86 -0
  166. package/dist/server/capabilities/processes.js.map +1 -0
  167. package/dist/server/capabilities/types.d.ts +41 -0
  168. package/dist/server/capabilities/types.d.ts.map +1 -0
  169. package/dist/server/capabilities/types.js +23 -0
  170. package/dist/server/capabilities/types.js.map +1 -0
  171. package/dist/server/catalog.d.ts +3 -0
  172. package/dist/server/catalog.d.ts.map +1 -0
  173. package/dist/server/catalog.js +44 -0
  174. package/dist/server/catalog.js.map +1 -0
  175. package/dist/server/index.d.ts +6 -0
  176. package/dist/server/index.d.ts.map +1 -0
  177. package/dist/server/index.js +5 -0
  178. package/dist/server/index.js.map +1 -0
  179. package/dist/server/inventory.d.ts +54 -0
  180. package/dist/server/inventory.d.ts.map +1 -0
  181. package/dist/server/inventory.js +184 -0
  182. package/dist/server/inventory.js.map +1 -0
  183. package/dist/server/module-manifest.d.ts +10 -0
  184. package/dist/server/module-manifest.d.ts.map +1 -0
  185. package/dist/server/module-manifest.js +66 -0
  186. package/dist/server/module-manifest.js.map +1 -0
  187. package/dist/server/module-sources.d.ts +5 -0
  188. package/dist/server/module-sources.d.ts.map +1 -0
  189. package/dist/server/module-sources.js +482 -0
  190. package/dist/server/module-sources.js.map +1 -0
  191. package/dist/server/packages.d.ts +18 -0
  192. package/dist/server/packages.d.ts.map +1 -0
  193. package/dist/server/packages.js +62 -0
  194. package/dist/server/packages.js.map +1 -0
  195. package/dist/server/plugin.d.ts +4 -0
  196. package/dist/server/plugin.d.ts.map +1 -0
  197. package/dist/server/plugin.js +12 -0
  198. package/dist/server/plugin.js.map +1 -0
  199. package/dist/server/provider-inventory.d.ts +13 -0
  200. package/dist/server/provider-inventory.d.ts.map +1 -0
  201. package/dist/server/provider-inventory.js +180 -0
  202. package/dist/server/provider-inventory.js.map +1 -0
  203. package/dist/server/providers/foundation.d.ts +7 -0
  204. package/dist/server/providers/foundation.d.ts.map +1 -0
  205. package/dist/server/providers/foundation.js +24 -0
  206. package/dist/server/providers/foundation.js.map +1 -0
  207. package/dist/server/providers/index.d.ts +4 -0
  208. package/dist/server/providers/index.d.ts.map +1 -0
  209. package/dist/server/providers/index.js +6 -0
  210. package/dist/server/providers/index.js.map +1 -0
  211. package/dist/server/read-queue.d.ts +10 -0
  212. package/dist/server/read-queue.d.ts.map +1 -0
  213. package/dist/server/read-queue.js +50 -0
  214. package/dist/server/read-queue.js.map +1 -0
  215. package/dist/server/request-evidence.d.ts +14 -0
  216. package/dist/server/request-evidence.d.ts.map +1 -0
  217. package/dist/server/request-evidence.js +141 -0
  218. package/dist/server/request-evidence.js.map +1 -0
  219. package/dist/server/routes/index.d.ts +6 -0
  220. package/dist/server/routes/index.d.ts.map +1 -0
  221. package/dist/server/routes/index.js +77 -0
  222. package/dist/server/routes/index.js.map +1 -0
  223. package/dist/server/routes/schemas.d.ts +13 -0
  224. package/dist/server/routes/schemas.d.ts.map +1 -0
  225. package/dist/server/routes/schemas.js +160 -0
  226. package/dist/server/routes/schemas.js.map +1 -0
  227. package/dist/server/services/foundation.d.ts +44 -0
  228. package/dist/server/services/foundation.d.ts.map +1 -0
  229. package/dist/server/services/foundation.js +265 -0
  230. package/dist/server/services/foundation.js.map +1 -0
  231. package/dist/server/source-evidence.d.ts +26 -0
  232. package/dist/server/source-evidence.d.ts.map +1 -0
  233. package/dist/server/source-evidence.js +271 -0
  234. package/dist/server/source-evidence.js.map +1 -0
  235. package/dist/server/static-values.d.ts +16 -0
  236. package/dist/server/static-values.d.ts.map +1 -0
  237. package/dist/server/static-values.js +181 -0
  238. package/dist/server/static-values.js.map +1 -0
  239. package/dist/server/tokens.d.ts +18 -0
  240. package/dist/server/tokens.d.ts.map +1 -0
  241. package/dist/server/tokens.js +3 -0
  242. package/dist/server/tokens.js.map +1 -0
  243. package/dist/shared/available-capabilities.d.ts +6 -0
  244. package/dist/shared/available-capabilities.d.ts.map +1 -0
  245. package/dist/shared/available-capabilities.js +66 -0
  246. package/dist/shared/available-capabilities.js.map +1 -0
  247. package/dist/shared/foundation.d.ts +155 -0
  248. package/dist/shared/foundation.d.ts.map +1 -0
  249. package/dist/shared/foundation.js +39 -0
  250. package/dist/shared/foundation.js.map +1 -0
  251. package/package.json +106 -3
  252. package/skills/nocobase-app-plugin-foundation/SKILL.md +78 -0
@@ -0,0 +1,160 @@
1
+ import { z } from 'zod';
2
+ import { FOUNDATION_STATUSES, } from '../../shared/foundation.js';
3
+ export const OverviewQuery = z.object({
4
+ refresh: z.stringbool().optional().meta({
5
+ description: 'Collects again instead of answering a result collected within the last 30 seconds.',
6
+ }),
7
+ countRecords: z.stringbool().optional().meta({
8
+ description: 'Explicitly query every business table for exact row counts. Omitted on ordinary page loads and refreshes.',
9
+ }),
10
+ });
11
+ export const CollectionsQuery = z.object({
12
+ offset: z.coerce.number().int().min(0).max(1_000_000).default(0).meta({
13
+ description: 'Zero-based offset; each page contains at most 50 Collections.',
14
+ }),
15
+ search: z.string().max(200).default('').meta({
16
+ description: 'Case-insensitive search across all application Collection names and titles.',
17
+ }),
18
+ });
19
+ export const CollectionItemSchema = z
20
+ .object({
21
+ name: z.string(),
22
+ title: z.string().optional(),
23
+ kind: z.string(),
24
+ })
25
+ .meta({ ref: 'FoundationCollection' });
26
+ const FactSchema = z
27
+ .object({
28
+ code: z.string().meta({
29
+ description: 'What was established, such as `applicationCollections`; the page words it.',
30
+ }),
31
+ params: z
32
+ .record(z.string(), z.union([
33
+ z.string(),
34
+ z.number(),
35
+ z.array(z.union([
36
+ z.string(),
37
+ z.object({ key: z.string(), ns: z.string() }).meta({
38
+ description: 'A translation key in the namespace `ns`.',
39
+ }),
40
+ ])),
41
+ ]))
42
+ .optional()
43
+ .meta({ description: 'The values the wording quotes.' }),
44
+ })
45
+ .meta({ ref: 'FoundationFact' });
46
+ const MetricSchema = z
47
+ .object({
48
+ key: z.string(),
49
+ value: z.number().nullable().meta({
50
+ description: 'Null when it could not be read; never a stand-in zero.',
51
+ }),
52
+ unit: z.enum(['count', 'bytes', 'tokens']),
53
+ complete: z.boolean().meta({
54
+ description: 'False when part of what it adds up could not be read, so the value is a lower bound.',
55
+ }),
56
+ })
57
+ .meta({ ref: 'FoundationMetric' });
58
+ const StatusSchema = z.enum(FOUNDATION_STATUSES);
59
+ const CapabilitySchema = z
60
+ .object({
61
+ key: z.string(),
62
+ status: StatusSchema.nullable().meta({
63
+ description: '`active`, `needsSetup` or `unused`; null when usage is not recognized or its evidence could not be read.',
64
+ }),
65
+ title: z
66
+ .union([z.string(), z.object({ key: z.string(), ns: z.string() })])
67
+ .optional(),
68
+ description: z.string().optional(),
69
+ reason: z.string().optional().meta({
70
+ description: 'Why it needs setup or is unused, such as `noChannel`.',
71
+ }),
72
+ facts: z.array(FactSchema),
73
+ metrics: z.array(MetricSchema),
74
+ parts: z.array(z.object({
75
+ key: z.string(),
76
+ status: StatusSchema,
77
+ reason: z.string().optional(),
78
+ })),
79
+ packages: z
80
+ .array(z.object({ name: z.string(), version: z.string().nullable() }))
81
+ .meta({
82
+ description: 'The NocoBase packages that provide it, at the versions the application resolves.',
83
+ }),
84
+ completeness: z.enum(['complete', 'partial', 'failed']),
85
+ issues: z.array(z.object({
86
+ code: z.enum([
87
+ 'COLLECTOR_FAILED',
88
+ 'COLLECTOR_TIMEOUT',
89
+ 'SOURCE_UNREADABLE',
90
+ ]),
91
+ source: z.string().optional().meta({
92
+ description: 'The Collection or service that could not be read.',
93
+ }),
94
+ })),
95
+ })
96
+ .meta({ ref: 'FoundationCapability' });
97
+ export const OverviewSchema = z
98
+ .object({
99
+ capabilities: z.array(CapabilitySchema).meta({
100
+ description: 'Built-in adapter observations. The visible band uses runtime-specific availableCapabilities.',
101
+ }),
102
+ availableCapabilities: z.array(CapabilitySchema).optional(),
103
+ moduleSources: z
104
+ .object({
105
+ routes: z.array(z.object({
106
+ packageName: z.string(),
107
+ routeName: z.string(),
108
+ providers: z.array(z.string()),
109
+ apiProviders: z.array(z.string()).optional(),
110
+ collections: z.array(z.string()).optional(),
111
+ complete: z.boolean(),
112
+ })),
113
+ complete: z.boolean(),
114
+ })
115
+ .optional()
116
+ .meta({
117
+ description: 'Read-only static page dependency evidence. It proves integration references, not execution or per-module runtime counts; unavailable sources remain incomplete. No filesystem paths or source code are returned.',
118
+ }),
119
+ inventory: z
120
+ .object({
121
+ entries: z.array(z.object({
122
+ name: z.string(),
123
+ displayName: z.string().optional(),
124
+ description: z.string().optional(),
125
+ version: z.string().nullable(),
126
+ installed: z.boolean(),
127
+ kind: z.enum(['core', 'plugin']),
128
+ origin: z.enum(['nocobase', 'unverified']),
129
+ categories: z.array(z.string()),
130
+ registration: z.enum(['observed', 'unknown']),
131
+ evidence: z.array(z.enum([
132
+ 'manifest',
133
+ 'databaseContribution',
134
+ 'apiContribution',
135
+ 'foundationRuntime',
136
+ 'serverRegistration',
137
+ 'clientContribution',
138
+ ])),
139
+ })),
140
+ serverRegistrationsComplete: z.boolean().optional(),
141
+ complete: z.boolean(),
142
+ unreadable: z.array(z.string()),
143
+ })
144
+ .optional()
145
+ .meta({
146
+ description: 'Installed provider manifests and observed current runtime contributions. Registration and category mapping do not prove individual package usage. Pro and custom providers without a catalog entry remain unclassified.',
147
+ }),
148
+ checkedAt: z.string().meta({
149
+ description: 'When the result was collected; a cached one keeps its time.',
150
+ }),
151
+ recordCountCheckedAt: z.string().optional().meta({
152
+ description: 'When the retained exact business record count was collected, independently of the overview.',
153
+ }),
154
+ durationMs: z.number(),
155
+ connection: z.literal('default').meta({
156
+ description: 'The database connection the statistics read.',
157
+ }),
158
+ })
159
+ .meta({ ref: 'FoundationOverview' });
160
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../server/routes/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { AppConfigAccessor } from '@nocobase/app-server/config';
2
+ import type { ServiceContainer } from '@nocobase/service-provider';
3
+ import type { FoundationOverview, FoundationCollectionPage } from '../../shared/foundation.js';
4
+ import { type CapabilityCollector } from '../capabilities/index.js';
5
+ import { type RuntimeProviderEvidence } from '../provider-inventory.js';
6
+ import type { FoundationOverviewOptions, FoundationService } from '../tokens.js';
7
+ export interface FoundationServiceOptions {
8
+ readonly container: ServiceContainer;
9
+ readonly config: Pick<AppConfigAccessor, 'get'>;
10
+ /** The application's root, where its `package.json` and `node_modules` are. */
11
+ readonly rootDir: string;
12
+ readonly hasClient: boolean;
13
+ readonly runtimeProviders?: () => readonly RuntimeProviderEvidence[];
14
+ readonly serverRegistrationsComplete?: () => boolean;
15
+ /** How long a result is answered again before it is collected anew. Defaults to 30 seconds. */
16
+ readonly cacheTtlMs?: number;
17
+ /** How long one capability may take before it is reported as timed out. Defaults to 10 seconds. */
18
+ readonly collectorTimeoutMs?: number;
19
+ readonly collectors?: readonly CapabilityCollector[];
20
+ readonly now?: () => number;
21
+ }
22
+ export declare class DefaultFoundationService implements FoundationService {
23
+ private readonly options;
24
+ private cached?;
25
+ private pending?;
26
+ private readonly reads;
27
+ private recordCount?;
28
+ private applicationCollections?;
29
+ private readonly packages;
30
+ private readonly cacheTtlMs;
31
+ private readonly collectorTimeoutMs;
32
+ private readonly collectors;
33
+ private readonly now;
34
+ constructor(options: FoundationServiceOptions);
35
+ overview(options?: FoundationOverviewOptions): Promise<FoundationOverview>;
36
+ private collect;
37
+ collections(options: {
38
+ readonly offset: number;
39
+ readonly search: string;
40
+ }): Promise<FoundationCollectionPage | undefined>;
41
+ private run;
42
+ private resolvePackages;
43
+ }
44
+ //# sourceMappingURL=foundation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foundation.d.ts","sourceRoot":"","sources":["../../../server/services/foundation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAGV,kBAAkB,EAGlB,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,0BAA0B,CAAC;AAUlC,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAChD,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,SAAS,uBAAuB,EAAE,CAAC;IACrE,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,OAAO,CAAC;IACrD,+FAA+F;IAC/F,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,mGAAmG;IACnG,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACrD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAQD,qBAAa,wBAAyB,YAAW,iBAAiB;IAsB7C,OAAO,CAAC,QAAQ,CAAC,OAAO;IArB3C,OAAO,CAAC,MAAM,CAAC,CAGb;IACF,OAAO,CAAC,OAAO,CAAC,CAGd;IACF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,WAAW,CAAC,CAIlB;IACF,OAAO,CAAC,sBAAsB,CAAC,CAA+B;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEC,OAAO,EAAE,wBAAwB;IAQxD,QAAQ,CACnB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,kBAAkB,CAAC;YAwBhB,OAAO;IA4IR,WAAW,CAAC,OAAO,EAAE;QAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC;YAuBnC,GAAG;YAgDH,eAAe;CAa9B"}
@@ -0,0 +1,265 @@
1
+ import { databaseManagerToken } from '@nocobase/db';
2
+ import { availableCapabilities } from '../../shared/available-capabilities.js';
3
+ import { CAPABILITY_COLLECTORS, } from '../capabilities/index.js';
4
+ import { Inventory, Probe } from '../inventory.js';
5
+ import { ReadQueue } from '../read-queue.js';
6
+ import { applicationCollections, dataModelingSummary, } from '../capabilities/data.js';
7
+ import { InstalledPackages } from '../packages.js';
8
+ import { collectModuleSources } from '../module-sources.js';
9
+ import { collectProviderInventory, } from '../provider-inventory.js';
10
+ /** Capabilities that read nothing from the database. */
11
+ const DATABASE_FREE = new Set(['interface', 'audit']);
12
+ /** How many capabilities read the database at once. */
13
+ const CONCURRENCY = 4;
14
+ export class DefaultFoundationService {
15
+ options;
16
+ cached;
17
+ pending;
18
+ reads = new ReadQueue();
19
+ recordCount;
20
+ applicationCollections;
21
+ packages;
22
+ cacheTtlMs;
23
+ collectorTimeoutMs;
24
+ collectors;
25
+ now;
26
+ constructor(options) {
27
+ this.options = options;
28
+ this.packages = new InstalledPackages(options.rootDir);
29
+ this.cacheTtlMs = options.cacheTtlMs ?? 30_000;
30
+ this.collectorTimeoutMs = options.collectorTimeoutMs ?? 10_000;
31
+ this.collectors = options.collectors ?? CAPABILITY_COLLECTORS;
32
+ this.now = options.now ?? Date.now;
33
+ }
34
+ async overview(options = {}) {
35
+ if (!options.refresh &&
36
+ !options.countRecords &&
37
+ this.cached &&
38
+ this.now() - this.cached.at < this.cacheTtlMs)
39
+ return this.cached.overview;
40
+ // Concurrent requests share one collection rather than each scanning every table.
41
+ if (this.pending) {
42
+ const pending = this.pending;
43
+ const result = await pending.result;
44
+ return options.countRecords && !pending.counts
45
+ ? this.overview(options)
46
+ : result;
47
+ }
48
+ const counts = options.countRecords === true;
49
+ const result = this.collect(counts).finally(() => {
50
+ this.pending = undefined;
51
+ });
52
+ this.pending = { counts, result };
53
+ return result;
54
+ }
55
+ async collect(countRecords) {
56
+ const started = this.now();
57
+ const { container } = this.options;
58
+ const database = container.has(databaseManagerToken)
59
+ ? container.resolve(databaseManagerToken)
60
+ : undefined;
61
+ let inventory;
62
+ let databaseUnreadable = false;
63
+ if (database) {
64
+ const abort = new AbortController();
65
+ const timer = setTimeout(() => abort.abort(), this.collectorTimeoutMs);
66
+ try {
67
+ inventory = await Inventory.read(database, this.reads, abort.signal);
68
+ }
69
+ catch {
70
+ databaseUnreadable = true;
71
+ }
72
+ finally {
73
+ clearTimeout(timer);
74
+ }
75
+ }
76
+ const applicationName = await this.packages.applicationName();
77
+ let ownedCollections = inventory
78
+ ? applicationCollections(new Probe(inventory))
79
+ : undefined;
80
+ const capabilities = await mapWithConcurrency(this.collectors, CONCURRENCY, (collector) => databaseUnreadable && !DATABASE_FREE.has(collector.key)
81
+ ? Promise.resolve(failed(collector, [
82
+ { code: 'SOURCE_UNREADABLE', source: 'database' },
83
+ ]))
84
+ : this.run(collector, {
85
+ probe: inventory ? new Probe(inventory) : undefined,
86
+ container,
87
+ config: this.options.config,
88
+ applicationName,
89
+ hasClient: this.options.hasClient,
90
+ countRecords,
91
+ }));
92
+ const inventoryOfProviders = await collectProviderInventory(this.options.rootDir, this.options.runtimeProviders?.(), this.options.serverRegistrationsComplete?.());
93
+ // An unclassified runtime extension may own Collections absent from our ownership catalog. Its rows must not be
94
+ // presented as an exact business-only count until ownership is known.
95
+ if (inventoryOfProviders.entries.some((entry) => entry.categories.length === 0 &&
96
+ entry.origin === 'unverified' &&
97
+ entry.registration === 'observed')) {
98
+ ownedCollections = undefined;
99
+ const index = capabilities.findIndex((entry) => entry.key === 'dataModeling');
100
+ const data = capabilities[index];
101
+ if (data && data.completeness !== 'failed')
102
+ capabilities[index] = {
103
+ ...data,
104
+ completeness: 'partial',
105
+ facts: [{ code: 'collectionOwnershipUnknown' }],
106
+ metrics: data.metrics.map((metric) => ({
107
+ ...metric,
108
+ value: metric.key === 'systemCollections' ? metric.value : null,
109
+ complete: false,
110
+ })),
111
+ issues: [
112
+ ...data.issues,
113
+ {
114
+ code: 'SOURCE_UNREADABLE',
115
+ source: 'extensionCollectionOwnership',
116
+ },
117
+ ],
118
+ };
119
+ }
120
+ const signature = JSON.stringify(inventory?.collections
121
+ .filter((item) => item.kind === 'table')
122
+ .map((item) => item.name)
123
+ .sort());
124
+ const data = capabilities.find((item) => item.key === 'dataModeling');
125
+ const recordMetric = data?.metrics.find((item) => item.key === 'businessRecords');
126
+ if (this.recordCount?.signature !== signature)
127
+ this.recordCount = undefined;
128
+ if (countRecords && recordMetric?.complete && recordMetric.value !== null) {
129
+ this.recordCount = {
130
+ signature,
131
+ metric: recordMetric,
132
+ checkedAt: new Date(this.now()).toISOString(),
133
+ };
134
+ }
135
+ else if (this.recordCount &&
136
+ data?.completeness !== 'failed' &&
137
+ !data?.facts.some((item) => item.code === 'collectionOwnershipUnknown')) {
138
+ const index = capabilities.findIndex((item) => item.key === 'dataModeling');
139
+ if (data)
140
+ capabilities[index] = {
141
+ ...data,
142
+ metrics: data.metrics.map((item) => item.key === 'businessRecords' ? this.recordCount.metric : item),
143
+ };
144
+ }
145
+ const moduleSources = await collectModuleSources(this.options.rootDir, this.options.runtimeProviders?.());
146
+ const finished = this.now();
147
+ const overview = {
148
+ capabilities,
149
+ moduleSources,
150
+ inventory: inventoryOfProviders,
151
+ availableCapabilities: availableCapabilities(capabilities, inventoryOfProviders),
152
+ checkedAt: new Date(finished).toISOString(),
153
+ ...(this.recordCount &&
154
+ !data?.facts.some((item) => item.code === 'collectionOwnershipUnknown')
155
+ ? { recordCountCheckedAt: this.recordCount.checkedAt }
156
+ : {}),
157
+ durationMs: finished - started,
158
+ connection: 'default',
159
+ };
160
+ this.applicationCollections = ownedCollections;
161
+ this.cached = { at: finished, overview };
162
+ return overview;
163
+ }
164
+ async collections(options) {
165
+ await this.overview();
166
+ if (!this.applicationCollections)
167
+ return undefined;
168
+ const search = options.search.trim().toLocaleLowerCase();
169
+ const matching = this.applicationCollections
170
+ .filter((item) => `${item.name}\n${item.title ?? ''}`
171
+ .toLocaleLowerCase()
172
+ .includes(search))
173
+ .sort((a, b) => a.name.localeCompare(b.name));
174
+ return {
175
+ items: matching
176
+ .slice(options.offset, options.offset + 50)
177
+ .map(({ name, title, kind }) => ({
178
+ name,
179
+ ...(title ? { title } : {}),
180
+ kind,
181
+ })),
182
+ total: matching.length,
183
+ };
184
+ }
185
+ async run(collector, context) {
186
+ let timer;
187
+ const abort = new AbortController();
188
+ const probe = context.probe
189
+ ? new Probe(context.probe.inventory, abort.signal)
190
+ : undefined;
191
+ const timeout = new Promise((resolve) => {
192
+ timer = setTimeout(() => {
193
+ resolve('timeout');
194
+ abort.abort();
195
+ }, this.collectorTimeoutMs);
196
+ });
197
+ try {
198
+ const findings = await Promise.race([
199
+ collector.collect({ ...context, probe }),
200
+ timeout,
201
+ ]);
202
+ if (findings === 'timeout')
203
+ return collector.key === 'dataModeling' && probe
204
+ ? {
205
+ ...failed(collector, [{ code: 'COLLECTOR_TIMEOUT' }]),
206
+ ...dataModelingSummary(probe),
207
+ packages: await this.resolvePackages(collector.packages),
208
+ completeness: 'partial',
209
+ }
210
+ : failed(collector, [{ code: 'COLLECTOR_TIMEOUT' }]);
211
+ const issues = probe?.issues ?? [];
212
+ return {
213
+ key: collector.key,
214
+ status: findings.status,
215
+ ...(findings.reason === undefined ? {} : { reason: findings.reason }),
216
+ facts: findings.facts ?? [],
217
+ metrics: findings.metrics ?? [],
218
+ parts: findings.parts ?? [],
219
+ packages: await this.resolvePackages(collector.packages),
220
+ completeness: issues.length > 0 ? 'partial' : 'complete',
221
+ issues: [...issues],
222
+ };
223
+ }
224
+ catch {
225
+ return failed(collector, [{ code: 'COLLECTOR_FAILED' }]);
226
+ }
227
+ finally {
228
+ clearTimeout(timer);
229
+ }
230
+ }
231
+ async resolvePackages(names) {
232
+ const resolved = await Promise.all(names.map(async (name) => {
233
+ const version = await this.packages.version(name);
234
+ return version === undefined ? undefined : { name, version };
235
+ }));
236
+ return resolved.filter((entry) => entry !== undefined);
237
+ }
238
+ }
239
+ /** A capability whose evidence could not be read: it has no status rather than a guessed one. */
240
+ function failed(collector, issues) {
241
+ return {
242
+ key: collector.key,
243
+ status: null,
244
+ facts: [],
245
+ metrics: [],
246
+ parts: [],
247
+ packages: [],
248
+ completeness: 'failed',
249
+ issues,
250
+ };
251
+ }
252
+ async function mapWithConcurrency(items, limit, map) {
253
+ const results = new Array(items.length);
254
+ let next = 0;
255
+ const workers = Array.from({ length: Math.min(limit, items.length) }, async () => {
256
+ while (next < items.length) {
257
+ const index = next;
258
+ next += 1;
259
+ results[index] = await map(items[index]);
260
+ }
261
+ });
262
+ await Promise.all(workers);
263
+ return results;
264
+ }
265
+ //# sourceMappingURL=foundation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foundation.js","sourceRoot":"","sources":["../../../server/services/foundation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAWpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EACL,qBAAqB,GAGtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,wBAAwB,GAEzB,MAAM,0BAA0B,CAAC;AAsBlC,wDAAwD;AACxD,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAE3E,uDAAuD;AACvD,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,MAAM,OAAO,wBAAwB;IAsBC;IArB5B,MAAM,CAGZ;IACM,OAAO,CAGb;IACe,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;IACjC,WAAW,CAIjB;IACM,sBAAsB,CAAgC;IAC7C,QAAQ,CAAoB;IAC5B,UAAU,CAAS;IACnB,kBAAkB,CAAS;IAC3B,UAAU,CAAiC;IAC3C,GAAG,CAAe;IAEnC,YAAoC,OAAiC;QAAjC,YAAO,GAAP,OAAO,CAA0B;QACnE,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;QAC/C,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,MAAM,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,qBAAqB,CAAC;QAC9D,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,QAAQ,CACnB,UAAqC,EAAE;QAEvC,IACE,CAAC,OAAO,CAAC,OAAO;YAChB,CAAC,OAAO,CAAC,YAAY;YACrB,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU;YAE7C,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC9B,kFAAkF;QAClF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;YACpC,OAAO,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC5C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACxB,CAAC,CAAC,MAAM,CAAC;QACb,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YAC/C,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,YAAqB;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC;YAClD,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,CAAC;YACzC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,SAAgC,CAAC;QACrC,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvE,IAAI,CAAC;gBACH,SAAS,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACvE,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB,GAAG,IAAI,CAAC;YAC5B,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC9D,IAAI,gBAAgB,GAAG,SAAS;YAC9B,CAAC,CAAC,sBAAsB,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;YAC9C,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAC3C,IAAI,CAAC,UAAU,EACf,WAAW,EACX,CAAC,SAAS,EAAE,EAAE,CACZ,kBAAkB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC;YACrD,CAAC,CAAC,OAAO,CAAC,OAAO,CACb,MAAM,CAAC,SAAS,EAAE;gBAChB,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU,EAAE;aAClD,CAAC,CACH;YACH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;gBAClB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;gBACnD,SAAS;gBACT,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,eAAe;gBACf,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;gBACjC,YAAY;aACb,CAAC,CACT,CAAC;QACF,MAAM,oBAAoB,GAAG,MAAM,wBAAwB,CACzD,IAAI,CAAC,OAAO,CAAC,OAAO,EACpB,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,EACjC,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAC7C,CAAC;QACF,gHAAgH;QAChH,sEAAsE;QACtE,IACE,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAC/B,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAC7B,KAAK,CAAC,MAAM,KAAK,YAAY;YAC7B,KAAK,CAAC,YAAY,KAAK,UAAU,CACpC,EACD,CAAC;YACD,gBAAgB,GAAG,SAAS,CAAC;YAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAClC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,cAAc,CACxC,CAAC;YACF,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ;gBACxC,YAAY,CAAC,KAAK,CAAC,GAAG;oBACpB,GAAG,IAAI;oBACP,YAAY,EAAE,SAAS;oBACvB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC;oBAC/C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;wBACrC,GAAG,MAAM;wBACT,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;wBAC/D,QAAQ,EAAE,KAAK;qBAChB,CAAC,CAAC;oBACH,MAAM,EAAE;wBACN,GAAG,IAAI,CAAC,MAAM;wBACd;4BACE,IAAI,EAAE,mBAAmB;4BACzB,MAAM,EAAE,8BAA8B;yBACvC;qBACF;iBACF,CAAC;QACN,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAC9B,SAAS,EAAE,WAAW;aACnB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;aACvC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB,IAAI,EAAE,CACV,CAAC;QACF,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,cAAc,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,CACrC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,iBAAiB,CACzC,CAAC;QACF,IAAI,IAAI,CAAC,WAAW,EAAE,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC5E,IAAI,YAAY,IAAI,YAAY,EAAE,QAAQ,IAAI,YAAY,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1E,IAAI,CAAC,WAAW,GAAG;gBACjB,SAAS;gBACT,MAAM,EAAE,YAAY;gBACpB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;aAC9C,CAAC;QACJ,CAAC;aAAM,IACL,IAAI,CAAC,WAAW;YAChB,IAAI,EAAE,YAAY,KAAK,QAAQ;YAC/B,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,4BAA4B,CAAC,EACvE,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAClC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,cAAc,CACtC,CAAC;YACF,IAAI,IAAI;gBACN,YAAY,CAAC,KAAK,CAAC,GAAG;oBACpB,GAAG,IAAI;oBACP,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjC,IAAI,CAAC,GAAG,KAAK,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CACjE;iBACF,CAAC;QACN,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAC9C,IAAI,CAAC,OAAO,CAAC,OAAO,EACpB,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAClC,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAuB;YACnC,YAAY;YACZ,aAAa;YACb,SAAS,EAAE,oBAAoB;YAC/B,qBAAqB,EAAE,qBAAqB,CAC1C,YAAY,EACZ,oBAAoB,CACrB;YACD,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;YAC3C,GAAG,CAAC,IAAI,CAAC,WAAW;gBACpB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,4BAA4B,CAAC;gBACrE,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;gBACtD,CAAC,CAAC,EAAE,CAAC;YACP,UAAU,EAAE,QAAQ,GAAG,OAAO;YAC9B,UAAU,EAAE,SAAS;SACtB,CAAC;QACF,IAAI,CAAC,sBAAsB,GAAG,gBAAgB,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACzC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAGxB;QACC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,sBAAsB;YAAE,OAAO,SAAS,CAAC;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB;aACzC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE;aAChC,iBAAiB,EAAE;aACnB,QAAQ,CAAC,MAAM,CAAC,CACpB;aACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,OAAO;YACL,KAAK,EAAE,QAAQ;iBACZ,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;iBAC1C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/B,IAAI;gBACJ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,IAAI;aACL,CAAC,CAAC;YACL,KAAK,EAAE,QAAQ,CAAC,MAAM;SACvB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,GAAG,CACf,SAA8B,EAC9B,OAAyB;QAEzB,IAAI,KAAgD,CAAC;QACrD,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;YACzB,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YAClD,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,OAAO,GAAG,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,EAAE;YACjD,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,OAAO,CAAC,SAAS,CAAC,CAAC;gBACnB,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAClC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC;gBACxC,OAAO;aACR,CAAC,CAAC;YACH,IAAI,QAAQ,KAAK,SAAS;gBACxB,OAAO,SAAS,CAAC,GAAG,KAAK,cAAc,IAAI,KAAK;oBAC9C,CAAC,CAAC;wBACE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;wBACrD,GAAG,mBAAmB,CAAC,KAAK,CAAC;wBAC7B,QAAQ,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC;wBACxD,YAAY,EAAE,SAAS;qBACxB;oBACH,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;YACzD,MAAM,MAAM,GAA+B,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC;YAC/D,OAAO;gBACL,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrE,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;gBAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;gBAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;gBAC3B,QAAQ,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC;gBACxD,YAAY,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;gBACxD,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;aACpB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,KAAwB;QAExB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA0C,EAAE;YAC/D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClD,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC/D,CAAC,CAAC,CACH,CAAC;QACF,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,KAAK,EAA8B,EAAE,CAAC,KAAK,KAAK,SAAS,CAC3D,CAAC;IACJ,CAAC;CACF;AAED,iGAAiG;AACjG,SAAS,MAAM,CACb,SAA8B,EAC9B,MAAkC;IAElC,OAAO;QACL,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,QAAQ;QACtB,MAAM;KACP,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,KAAmB,EACnB,KAAa,EACb,GAA4B;IAE5B,MAAM,OAAO,GAAG,IAAI,KAAK,CAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CACxB,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EACzC,KAAK,IAAI,EAAE;QACT,OAAO,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC;YACnB,IAAI,IAAI,CAAC,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CACF,CAAC;IACF,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import ts from 'typescript';
2
+ export interface EvidenceSource {
3
+ readonly file: string;
4
+ readonly ast: ts.SourceFile;
5
+ }
6
+ /** Package-local value reachability. The host never loads dependencies, libraries or application code. */
7
+ export declare class SourceEvidence {
8
+ private readonly resolutions;
9
+ private readonly checker;
10
+ private readonly sources;
11
+ private readonly services;
12
+ constructor(sources: readonly EvidenceSource[], resolutions: ReadonlyMap<string, string>);
13
+ /** Only declarations reachable from the provider entry establish service registrations. */
14
+ registerServices(entries: readonly string[]): void;
15
+ collect(file: string, roots?: readonly ts.Node[]): {
16
+ references: Set<string>;
17
+ nodes: Map<string, Set<ts.Node>>;
18
+ complete: boolean;
19
+ };
20
+ symbol(node: ts.Node): ts.Symbol | undefined;
21
+ declarations(node: ts.Node): readonly ts.Declaration[];
22
+ /** Resolve local value aliases and re-exports without executing a module. */
23
+ values(node: ts.Node, seen?: Set<ts.Node>): readonly ts.Node[];
24
+ private serviceMethod;
25
+ }
26
+ //# sourceMappingURL=source-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-evidence.d.ts","sourceRoot":"","sources":["../../server/source-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC;CAC7B;AAED,0GAA0G;AAC1G,qBAAa,cAAc;IAOvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAN9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8C;gBAGrE,OAAO,EAAE,SAAS,cAAc,EAAE,EACjB,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAyB3D,2FAA2F;IACpF,gBAAgB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAoClD,OAAO,CACZ,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,GACzB;QACD,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,QAAQ,EAAE,OAAO,CAAC;KACnB;IA2IM,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,GAAG,SAAS;IAU5C,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,WAAW,EAAE;IAO7D,6EAA6E;IACtE,MAAM,CACX,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,IAAI,GAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAsB,GACtC,SAAS,EAAE,CAAC,IAAI,EAAE;IAiBrB,OAAO,CAAC,aAAa;CA8CtB"}