@open-mercato/shared 0.4.2-canary-c02407ff85

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 (324) hide show
  1. package/build.mjs +101 -0
  2. package/dist/index.js +1 -0
  3. package/dist/index.js.map +7 -0
  4. package/dist/lib/api/crud.js +47 -0
  5. package/dist/lib/api/crud.js.map +7 -0
  6. package/dist/lib/api/scoped.js +140 -0
  7. package/dist/lib/api/scoped.js.map +7 -0
  8. package/dist/lib/auth/jwt.js +34 -0
  9. package/dist/lib/auth/jwt.js.map +7 -0
  10. package/dist/lib/auth/server.js +157 -0
  11. package/dist/lib/auth/server.js.map +7 -0
  12. package/dist/lib/boolean.js +22 -0
  13. package/dist/lib/boolean.js.map +7 -0
  14. package/dist/lib/bootstrap/appResolver.js +43 -0
  15. package/dist/lib/bootstrap/appResolver.js.map +7 -0
  16. package/dist/lib/bootstrap/dynamicLoader.js +108 -0
  17. package/dist/lib/bootstrap/dynamicLoader.js.map +7 -0
  18. package/dist/lib/bootstrap/factory.js +59 -0
  19. package/dist/lib/bootstrap/factory.js.map +7 -0
  20. package/dist/lib/bootstrap/index.js +11 -0
  21. package/dist/lib/bootstrap/index.js.map +7 -0
  22. package/dist/lib/bootstrap/types.js +1 -0
  23. package/dist/lib/bootstrap/types.js.map +7 -0
  24. package/dist/lib/cache/segments.js +36 -0
  25. package/dist/lib/cache/segments.js.map +7 -0
  26. package/dist/lib/cli/progress.js +46 -0
  27. package/dist/lib/cli/progress.js.map +7 -0
  28. package/dist/lib/commands/command-bus.js +285 -0
  29. package/dist/lib/commands/command-bus.js.map +7 -0
  30. package/dist/lib/commands/customFieldSnapshots.js +66 -0
  31. package/dist/lib/commands/customFieldSnapshots.js.map +7 -0
  32. package/dist/lib/commands/helpers.js +98 -0
  33. package/dist/lib/commands/helpers.js.map +7 -0
  34. package/dist/lib/commands/index.js +8 -0
  35. package/dist/lib/commands/index.js.map +7 -0
  36. package/dist/lib/commands/operationMetadata.js +32 -0
  37. package/dist/lib/commands/operationMetadata.js.map +7 -0
  38. package/dist/lib/commands/registry.js +43 -0
  39. package/dist/lib/commands/registry.js.map +7 -0
  40. package/dist/lib/commands/scope.js +44 -0
  41. package/dist/lib/commands/scope.js.map +7 -0
  42. package/dist/lib/commands/types.js +8 -0
  43. package/dist/lib/commands/types.js.map +7 -0
  44. package/dist/lib/crud/cache-stats.js +98 -0
  45. package/dist/lib/crud/cache-stats.js.map +7 -0
  46. package/dist/lib/crud/cache.js +175 -0
  47. package/dist/lib/crud/cache.js.map +7 -0
  48. package/dist/lib/crud/custom-fields-client.js +52 -0
  49. package/dist/lib/crud/custom-fields-client.js.map +7 -0
  50. package/dist/lib/crud/custom-fields.js +467 -0
  51. package/dist/lib/crud/custom-fields.js.map +7 -0
  52. package/dist/lib/crud/errors.js +24 -0
  53. package/dist/lib/crud/errors.js.map +7 -0
  54. package/dist/lib/crud/exporters.js +154 -0
  55. package/dist/lib/crud/exporters.js.map +7 -0
  56. package/dist/lib/crud/factory.js +1311 -0
  57. package/dist/lib/crud/factory.js.map +7 -0
  58. package/dist/lib/crud/types.js +1 -0
  59. package/dist/lib/crud/types.js.map +7 -0
  60. package/dist/lib/custom-fields/normalize.js +36 -0
  61. package/dist/lib/custom-fields/normalize.js.map +7 -0
  62. package/dist/lib/data/engine.js +396 -0
  63. package/dist/lib/data/engine.js.map +7 -0
  64. package/dist/lib/db/escapeLikePattern.js +5 -0
  65. package/dist/lib/db/escapeLikePattern.js.map +7 -0
  66. package/dist/lib/db/mikro.js +82 -0
  67. package/dist/lib/db/mikro.js.map +7 -0
  68. package/dist/lib/di/container.js +94 -0
  69. package/dist/lib/di/container.js.map +7 -0
  70. package/dist/lib/email/send.js +12 -0
  71. package/dist/lib/email/send.js.map +7 -0
  72. package/dist/lib/encryption/aes.js +58 -0
  73. package/dist/lib/encryption/aes.js.map +7 -0
  74. package/dist/lib/encryption/customFieldValues.js +49 -0
  75. package/dist/lib/encryption/customFieldValues.js.map +7 -0
  76. package/dist/lib/encryption/entityFields.js +26 -0
  77. package/dist/lib/encryption/entityFields.js.map +7 -0
  78. package/dist/lib/encryption/entityIds.js +80 -0
  79. package/dist/lib/encryption/entityIds.js.map +7 -0
  80. package/dist/lib/encryption/find.js +45 -0
  81. package/dist/lib/encryption/find.js.map +7 -0
  82. package/dist/lib/encryption/indexDoc.js +69 -0
  83. package/dist/lib/encryption/indexDoc.js.map +7 -0
  84. package/dist/lib/encryption/kms.js +282 -0
  85. package/dist/lib/encryption/kms.js.map +7 -0
  86. package/dist/lib/encryption/subscriber.js +330 -0
  87. package/dist/lib/encryption/subscriber.js.map +7 -0
  88. package/dist/lib/encryption/tenantDataEncryptionService.js +252 -0
  89. package/dist/lib/encryption/tenantDataEncryptionService.js.map +7 -0
  90. package/dist/lib/encryption/toggles.js +18 -0
  91. package/dist/lib/encryption/toggles.js.map +7 -0
  92. package/dist/lib/entities/naming.js +9 -0
  93. package/dist/lib/entities/naming.js.map +7 -0
  94. package/dist/lib/entities/system-entities.js +43 -0
  95. package/dist/lib/entities/system-entities.js.map +7 -0
  96. package/dist/lib/frontend/organizationEvents.js +41 -0
  97. package/dist/lib/frontend/organizationEvents.js.map +7 -0
  98. package/dist/lib/frontend/useOrganizationScope.js +32 -0
  99. package/dist/lib/frontend/useOrganizationScope.js.map +7 -0
  100. package/dist/lib/hotkeys/index.js +128 -0
  101. package/dist/lib/hotkeys/index.js.map +7 -0
  102. package/dist/lib/i18n/app-dictionaries.js +17 -0
  103. package/dist/lib/i18n/app-dictionaries.js.map +7 -0
  104. package/dist/lib/i18n/config.js +7 -0
  105. package/dist/lib/i18n/config.js.map +7 -0
  106. package/dist/lib/i18n/context.js +50 -0
  107. package/dist/lib/i18n/context.js.map +7 -0
  108. package/dist/lib/i18n/server.js +68 -0
  109. package/dist/lib/i18n/server.js.map +7 -0
  110. package/dist/lib/i18n/translate.js +45 -0
  111. package/dist/lib/i18n/translate.js.map +7 -0
  112. package/dist/lib/indexers/error-log.js +82 -0
  113. package/dist/lib/indexers/error-log.js.map +7 -0
  114. package/dist/lib/indexers/status-log.js +80 -0
  115. package/dist/lib/indexers/status-log.js.map +7 -0
  116. package/dist/lib/lib/auth/jwt.js +34 -0
  117. package/dist/lib/lib/auth/jwt.js.map +7 -0
  118. package/dist/lib/lib/auth/server.js +77 -0
  119. package/dist/lib/lib/auth/server.js.map +7 -0
  120. package/dist/lib/lib/email/send.js +12 -0
  121. package/dist/lib/lib/email/send.js.map +7 -0
  122. package/dist/lib/lib/i18n/config.js +7 -0
  123. package/dist/lib/lib/i18n/config.js.map +7 -0
  124. package/dist/lib/lib/i18n/context.js +31 -0
  125. package/dist/lib/lib/i18n/context.js.map +7 -0
  126. package/dist/lib/lib/utils.js +9 -0
  127. package/dist/lib/lib/utils.js.map +7 -0
  128. package/dist/lib/location/countries.js +68 -0
  129. package/dist/lib/location/countries.js.map +7 -0
  130. package/dist/lib/modules/index.js +6 -0
  131. package/dist/lib/modules/index.js.map +7 -0
  132. package/dist/lib/modules/registry.js +18 -0
  133. package/dist/lib/modules/registry.js.map +7 -0
  134. package/dist/lib/openapi/crud.js +137 -0
  135. package/dist/lib/openapi/crud.js.map +7 -0
  136. package/dist/lib/openapi/generator.js +1131 -0
  137. package/dist/lib/openapi/generator.js.map +7 -0
  138. package/dist/lib/openapi/index.js +10 -0
  139. package/dist/lib/openapi/index.js.map +7 -0
  140. package/dist/lib/openapi/sanitize.js +110 -0
  141. package/dist/lib/openapi/sanitize.js.map +7 -0
  142. package/dist/lib/openapi/types.js +1 -0
  143. package/dist/lib/openapi/types.js.map +7 -0
  144. package/dist/lib/profiler/index.js +258 -0
  145. package/dist/lib/profiler/index.js.map +7 -0
  146. package/dist/lib/query/engine.js +729 -0
  147. package/dist/lib/query/engine.js.map +7 -0
  148. package/dist/lib/query/join-utils.js +195 -0
  149. package/dist/lib/query/join-utils.js.map +7 -0
  150. package/dist/lib/query/types.js +9 -0
  151. package/dist/lib/query/types.js.map +7 -0
  152. package/dist/lib/search/config.js +32 -0
  153. package/dist/lib/search/config.js.map +7 -0
  154. package/dist/lib/search/tokenize.js +34 -0
  155. package/dist/lib/search/tokenize.js.map +7 -0
  156. package/dist/lib/slugify.js +24 -0
  157. package/dist/lib/slugify.js.map +7 -0
  158. package/dist/lib/testing/bootstrap.js +51 -0
  159. package/dist/lib/testing/bootstrap.js.map +7 -0
  160. package/dist/lib/testing/index.js +17 -0
  161. package/dist/lib/testing/index.js.map +7 -0
  162. package/dist/lib/testing/renderWithProviders.js +15 -0
  163. package/dist/lib/testing/renderWithProviders.js.map +7 -0
  164. package/dist/lib/url.js +12 -0
  165. package/dist/lib/url.js.map +7 -0
  166. package/dist/lib/utils.js +13 -0
  167. package/dist/lib/utils.js.map +7 -0
  168. package/dist/lib/version.js +7 -0
  169. package/dist/lib/version.js.map +7 -0
  170. package/dist/modules/dashboard/widgets.js +1 -0
  171. package/dist/modules/dashboard/widgets.js.map +7 -0
  172. package/dist/modules/dsl.js +30 -0
  173. package/dist/modules/dsl.js.map +7 -0
  174. package/dist/modules/entities/kinds.js +22 -0
  175. package/dist/modules/entities/kinds.js.map +7 -0
  176. package/dist/modules/entities/options.js +26 -0
  177. package/dist/modules/entities/options.js.map +7 -0
  178. package/dist/modules/entities/validation.js +102 -0
  179. package/dist/modules/entities/validation.js.map +7 -0
  180. package/dist/modules/entities/validators.js +88 -0
  181. package/dist/modules/entities/validators.js.map +7 -0
  182. package/dist/modules/entities.js +1 -0
  183. package/dist/modules/entities.js.map +7 -0
  184. package/dist/modules/navigation/sidebarPreferences.js +50 -0
  185. package/dist/modules/navigation/sidebarPreferences.js.map +7 -0
  186. package/dist/modules/perspectives/types.js +1 -0
  187. package/dist/modules/perspectives/types.js.map +7 -0
  188. package/dist/modules/registry.js +96 -0
  189. package/dist/modules/registry.js.map +7 -0
  190. package/dist/modules/search.js +15 -0
  191. package/dist/modules/search.js.map +7 -0
  192. package/dist/modules/vector.js +1 -0
  193. package/dist/modules/vector.js.map +7 -0
  194. package/dist/modules/widgets/injection-loader.js +180 -0
  195. package/dist/modules/widgets/injection-loader.js.map +7 -0
  196. package/dist/modules/widgets/injection.js +1 -0
  197. package/dist/modules/widgets/injection.js.map +7 -0
  198. package/dist/security/features.js +23 -0
  199. package/dist/security/features.js.map +7 -0
  200. package/dist/types/pg.d.js +1 -0
  201. package/dist/types/pg.d.js.map +7 -0
  202. package/dist/types/react-email.d.js +1 -0
  203. package/dist/types/react-email.d.js.map +7 -0
  204. package/dist/types/resend.d.js +1 -0
  205. package/dist/types/resend.d.js.map +7 -0
  206. package/jest.config.cjs +22 -0
  207. package/package.json +88 -0
  208. package/src/index.ts +0 -0
  209. package/src/lib/api/__tests__/scoped.test.ts +38 -0
  210. package/src/lib/api/crud.ts +59 -0
  211. package/src/lib/api/scoped.ts +239 -0
  212. package/src/lib/auth/jwt.ts +39 -0
  213. package/src/lib/auth/server.ts +199 -0
  214. package/src/lib/boolean.ts +17 -0
  215. package/src/lib/bootstrap/appResolver.ts +85 -0
  216. package/src/lib/bootstrap/dynamicLoader.ts +177 -0
  217. package/src/lib/bootstrap/factory.ts +108 -0
  218. package/src/lib/bootstrap/index.ts +23 -0
  219. package/src/lib/bootstrap/types.ts +31 -0
  220. package/src/lib/cache/segments.ts +56 -0
  221. package/src/lib/cli/progress.ts +55 -0
  222. package/src/lib/commands/__tests__/command-bus.test.ts +84 -0
  223. package/src/lib/commands/__tests__/helpers.test.ts +42 -0
  224. package/src/lib/commands/command-bus.ts +349 -0
  225. package/src/lib/commands/customFieldSnapshots.ts +86 -0
  226. package/src/lib/commands/helpers.ts +143 -0
  227. package/src/lib/commands/index.ts +4 -0
  228. package/src/lib/commands/operationMetadata.ts +40 -0
  229. package/src/lib/commands/registry.ts +46 -0
  230. package/src/lib/commands/scope.ts +59 -0
  231. package/src/lib/commands/types.ts +63 -0
  232. package/src/lib/crud/__tests__/crud-factory.test.ts +333 -0
  233. package/src/lib/crud/__tests__/custom-fields.test.ts +150 -0
  234. package/src/lib/crud/cache-stats.ts +127 -0
  235. package/src/lib/crud/cache.ts +205 -0
  236. package/src/lib/crud/custom-fields-client.ts +54 -0
  237. package/src/lib/crud/custom-fields.ts +607 -0
  238. package/src/lib/crud/errors.ts +23 -0
  239. package/src/lib/crud/exporters.ts +188 -0
  240. package/src/lib/crud/factory.ts +1622 -0
  241. package/src/lib/crud/types.ts +29 -0
  242. package/src/lib/custom-fields/normalize.ts +45 -0
  243. package/src/lib/data/engine.ts +562 -0
  244. package/src/lib/db/escapeLikePattern.ts +2 -0
  245. package/src/lib/db/mikro.ts +100 -0
  246. package/src/lib/di/container.ts +105 -0
  247. package/src/lib/email/send.ts +18 -0
  248. package/src/lib/encryption/__tests__/customFieldValues.test.ts +63 -0
  249. package/src/lib/encryption/__tests__/indexDoc.test.ts +115 -0
  250. package/src/lib/encryption/aes.ts +64 -0
  251. package/src/lib/encryption/customFieldValues.ts +67 -0
  252. package/src/lib/encryption/entityFields.ts +39 -0
  253. package/src/lib/encryption/entityIds.ts +107 -0
  254. package/src/lib/encryption/find.ts +81 -0
  255. package/src/lib/encryption/indexDoc.ts +104 -0
  256. package/src/lib/encryption/kms.ts +337 -0
  257. package/src/lib/encryption/subscriber.ts +416 -0
  258. package/src/lib/encryption/tenantDataEncryptionService.ts +313 -0
  259. package/src/lib/encryption/toggles.ts +15 -0
  260. package/src/lib/entities/naming.ts +6 -0
  261. package/src/lib/entities/system-entities.ts +43 -0
  262. package/src/lib/frontend/organizationEvents.ts +55 -0
  263. package/src/lib/frontend/useOrganizationScope.ts +30 -0
  264. package/src/lib/hotkeys/index.ts +168 -0
  265. package/src/lib/i18n/app-dictionaries.ts +18 -0
  266. package/src/lib/i18n/config.ts +4 -0
  267. package/src/lib/i18n/context.tsx +66 -0
  268. package/src/lib/i18n/server.ts +74 -0
  269. package/src/lib/i18n/translate.ts +54 -0
  270. package/src/lib/indexers/error-log.ts +106 -0
  271. package/src/lib/indexers/status-log.ts +119 -0
  272. package/src/lib/lib/auth/jwt.ts +39 -0
  273. package/src/lib/lib/auth/server.ts +94 -0
  274. package/src/lib/lib/email/send.ts +18 -0
  275. package/src/lib/lib/i18n/config.ts +4 -0
  276. package/src/lib/lib/i18n/context.tsx +38 -0
  277. package/src/lib/lib/utils.ts +6 -0
  278. package/src/lib/location/countries.ts +97 -0
  279. package/src/lib/modules/index.ts +1 -0
  280. package/src/lib/modules/registry.ts +18 -0
  281. package/src/lib/openapi/crud.ts +218 -0
  282. package/src/lib/openapi/generator.ts +1311 -0
  283. package/src/lib/openapi/index.ts +4 -0
  284. package/src/lib/openapi/sanitize.ts +137 -0
  285. package/src/lib/openapi/types.ts +79 -0
  286. package/src/lib/profiler/index.ts +371 -0
  287. package/src/lib/query/__tests__/engine.test.ts +274 -0
  288. package/src/lib/query/engine.ts +837 -0
  289. package/src/lib/query/join-utils.ts +238 -0
  290. package/src/lib/query/types.ts +121 -0
  291. package/src/lib/search/config.ts +49 -0
  292. package/src/lib/search/tokenize.ts +45 -0
  293. package/src/lib/slugify.ts +28 -0
  294. package/src/lib/testing/bootstrap.ts +124 -0
  295. package/src/lib/testing/index.ts +15 -0
  296. package/src/lib/testing/renderWithProviders.tsx +31 -0
  297. package/src/lib/url.ts +12 -0
  298. package/src/lib/utils.ts +17 -0
  299. package/src/lib/version.ts +5 -0
  300. package/src/modules/__tests__/dsl.test.ts +35 -0
  301. package/src/modules/__tests__/registry.test.ts +300 -0
  302. package/src/modules/dashboard/widgets.ts +57 -0
  303. package/src/modules/dsl.ts +32 -0
  304. package/src/modules/entities/__tests__/validation.test.ts +52 -0
  305. package/src/modules/entities/kinds.ts +20 -0
  306. package/src/modules/entities/options.ts +36 -0
  307. package/src/modules/entities/validation.ts +118 -0
  308. package/src/modules/entities/validators.ts +93 -0
  309. package/src/modules/entities.ts +102 -0
  310. package/src/modules/navigation/sidebarPreferences.ts +62 -0
  311. package/src/modules/perspectives/types.ts +40 -0
  312. package/src/modules/registry.ts +249 -0
  313. package/src/modules/search.ts +325 -0
  314. package/src/modules/vector.ts +122 -0
  315. package/src/modules/widgets/__tests__/injection.test.ts +48 -0
  316. package/src/modules/widgets/injection-loader.ts +235 -0
  317. package/src/modules/widgets/injection.ts +120 -0
  318. package/src/security/features.ts +22 -0
  319. package/src/types/pg.d.ts +2 -0
  320. package/src/types/react-email.d.ts +2 -0
  321. package/src/types/resend.d.ts +2 -0
  322. package/tsconfig.build.json +11 -0
  323. package/tsconfig.json +9 -0
  324. package/watch.mjs +6 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/lib/profiler/index.ts"],
4
+ "sourcesContent": ["import { parseBooleanToken } from '../boolean'\n\nconst ROUND_PRECISION = 1000\nconst NS_PER_MS = BigInt(1_000_000)\nconst BIGINT_ZERO = BigInt(0)\n\nexport type ProfilerExtra = Record<string, unknown>\n\nexport type ProfilerSnapshotNode = {\n label: string\n durationMs: number\n extra?: ProfilerExtra\n children?: ProfilerSnapshotNode[]\n type?: 'mark' | 'span' | 'record'\n}\n\nexport type ProfilerSnapshot = {\n scope: string\n target?: string\n totalMs: number\n tree: ProfilerSnapshotNode[]\n meta?: ProfilerExtra\n}\n\nexport type ProfilerSection = {\n end: (extra?: ProfilerExtra) => void\n}\n\nexport type Profiler = {\n readonly enabled: boolean\n mark: (label: string, extra?: ProfilerExtra) => void\n section: (label: string, extra?: ProfilerExtra) => ProfilerSection\n measure: <T>(\n label: string,\n fn: () => Promise<T> | T,\n extra?: ((result: T) => ProfilerExtra | undefined) | ProfilerExtra\n ) => Promise<T>\n record: (label: string, durationMs: number, extra?: ProfilerExtra) => void\n child: (label: string, extra?: ProfilerExtra) => Profiler\n end: (extra?: ProfilerExtra) => void\n}\n\ntype ProfilerNodeCommon = {\n label: string\n start: bigint\n durationNs: bigint\n extra?: ProfilerExtra\n type: 'mark' | 'span' | 'record'\n}\n\ntype ProfilerSpanNode = ProfilerNodeCommon & {\n type: 'span'\n children: ProfilerInternalNode[]\n lastTimestamp: bigint\n closed: boolean\n}\n\ntype ProfilerMarkNode = ProfilerNodeCommon & { type: 'mark' }\ntype ProfilerRecordNode = ProfilerNodeCommon & { type: 'record' }\n\ntype ProfilerInternalNode = ProfilerSpanNode | ProfilerMarkNode | ProfilerRecordNode\n\ntype ProfilerRootState = {\n scope: string\n target?: string\n label: string\n loggerLabel: string\n enabled: boolean\n startedAt: bigint\n lastTimestamp: bigint\n nodes: ProfilerInternalNode[]\n closed: boolean\n meta?: ProfilerExtra\n}\n\ntype ProfilerImplOptions = {\n root: ProfilerRootState\n span?: ProfilerSpanNode\n parent?: ProfilerImpl\n}\n\nfunction now(): bigint {\n return process.hrtime.bigint()\n}\n\nfunction roundDuration(ns: bigint): number {\n if (ns <= BIGINT_ZERO) return 0\n const ms = Number(ns) / Number(NS_PER_MS)\n return Math.round(ms * ROUND_PRECISION) / ROUND_PRECISION\n}\n\nfunction mergeExtra(base: ProfilerExtra | undefined, extra: ProfilerExtra | undefined): ProfilerExtra | undefined {\n if (!base && !extra) return undefined\n if (!base) return extra ? { ...extra } : undefined\n if (!extra) return base ? { ...base } : undefined\n return { ...base, ...extra }\n}\n\nfunction serializeNode(node: ProfilerInternalNode): ProfilerSnapshotNode {\n const base: ProfilerSnapshotNode = {\n label: node.label,\n durationMs: roundDuration(node.durationNs),\n }\n if (node.extra && Object.keys(node.extra).length > 0) {\n base.extra = node.extra\n }\n base.type = node.type\n if (node.type === 'span' && node.children.length > 0) {\n base.children = node.children.map(serializeNode)\n }\n return base\n}\n\nclass ProfilerImpl implements Profiler {\n private span?: ProfilerSpanNode\n private parent?: ProfilerImpl\n private root: ProfilerRootState\n private lastTimestamp: bigint\n private closed = false\n\n constructor(options: ProfilerImplOptions) {\n this.root = options.root\n this.span = options.span\n this.parent = options.parent\n this.lastTimestamp = options.span ? options.span.lastTimestamp : options.root.lastTimestamp\n }\n\n get enabled(): boolean {\n return this.root.enabled\n }\n\n mark(label: string, extra?: ProfilerExtra) {\n if (!this.enabled || this.closed) return\n const timestamp = now()\n const duration = timestamp - this.lastTimestamp\n const node: ProfilerMarkNode = {\n type: 'mark',\n label,\n start: timestamp,\n durationNs: duration >= BIGINT_ZERO ? duration : BIGINT_ZERO,\n extra: extra ? { ...extra } : undefined,\n }\n this.appendNode(node)\n this.updateTimestamps(timestamp)\n }\n\n section(label: string, extra?: ProfilerExtra): ProfilerSection {\n if (!this.enabled || this.closed) {\n return disabledSection\n }\n const child = this.child(label, extra)\n return {\n end: (childExtra?: ProfilerExtra) => child.end(childExtra),\n }\n }\n\n async measure<T>(\n label: string,\n fn: () => Promise<T> | T,\n extra?: ((result: T) => ProfilerExtra | undefined) | ProfilerExtra\n ): Promise<T> {\n if (!this.enabled || this.closed) {\n return Promise.resolve(fn())\n }\n const child = this.child(label)\n try {\n const result = await Promise.resolve(fn())\n const payload = typeof extra === 'function' ? extra(result) : extra\n child.end(payload)\n return result\n } catch (err) {\n child.end({ error: err instanceof Error ? err.message : String(err) })\n throw err\n }\n }\n\n record(label: string, durationMs: number, extra?: ProfilerExtra) {\n if (!this.enabled || this.closed) return\n const safeDurationMs = Number.isFinite(durationMs) && durationMs > 0 ? durationMs : 0\n const durationNs = BigInt(Math.round(safeDurationMs * Number(NS_PER_MS)))\n const node: ProfilerRecordNode = {\n type: 'record',\n label,\n start: this.lastTimestamp,\n durationNs: durationNs >= BIGINT_ZERO ? durationNs : BIGINT_ZERO,\n extra: extra ? { ...extra } : undefined,\n }\n this.appendNode(node)\n this.updateTimestamps(this.lastTimestamp + node.durationNs)\n }\n\n child(label: string, extra?: ProfilerExtra): Profiler {\n if (!this.enabled || this.closed) return disabledProfiler\n const timestamp = now()\n const span: ProfilerSpanNode = {\n type: 'span',\n label,\n start: timestamp,\n durationNs: BIGINT_ZERO,\n extra: extra ? { ...extra } : undefined,\n children: [],\n lastTimestamp: timestamp,\n closed: false,\n }\n this.appendNode(span)\n this.updateTimestamps(timestamp)\n return new ProfilerImpl({ root: this.root, span, parent: this })\n }\n\n end(extra?: ProfilerExtra) {\n if (!this.enabled || this.closed) return\n const current = now()\n if (this.span) {\n this.closeSpan(current, extra)\n } else {\n this.closeRoot(current, extra)\n }\n }\n\n private appendNode(node: ProfilerInternalNode) {\n if (this.span) {\n this.span.children.push(node)\n this.span.lastTimestamp = node.start\n } else {\n this.root.nodes.push(node)\n }\n }\n\n private updateTimestamps(newTimestamp: bigint) {\n if (this.span) {\n this.span.lastTimestamp = newTimestamp\n } else {\n this.root.lastTimestamp = newTimestamp\n }\n this.lastTimestamp = newTimestamp\n }\n\n private closeSpan(closedAt: bigint, extra?: ProfilerExtra) {\n if (!this.span || this.span.closed) return\n const effectiveEnd = closedAt >= this.span.start ? closedAt : this.span.start\n this.span.durationNs = effectiveEnd - this.span.start\n this.span.extra = mergeExtra(this.span.extra, extra)\n this.span.closed = true\n this.closed = true\n this.updateTimestamps(effectiveEnd)\n if (this.parent) {\n this.parent.updateTimestamps(effectiveEnd)\n } else {\n this.root.lastTimestamp = effectiveEnd\n }\n }\n\n private closeRoot(closedAt: bigint, extra?: ProfilerExtra) {\n if (this.root.closed) return\n const endTime = closedAt >= this.root.startedAt ? closedAt : this.root.startedAt\n this.root.lastTimestamp = endTime\n this.root.meta = mergeExtra(this.root.meta, extra)\n this.root.closed = true\n this.closed = true\n const totalNs = endTime - this.root.startedAt\n const snapshot: ProfilerSnapshot = {\n scope: this.root.scope,\n target: this.root.target,\n totalMs: roundDuration(totalNs),\n tree: this.root.nodes.map(serializeNode),\n }\n if (this.root.meta && Object.keys(this.root.meta).length > 0) {\n snapshot.meta = this.root.meta\n }\n const serialized = JSON.stringify(snapshot, null, 2)\n try {\n console.info(this.root.loggerLabel, serialized)\n } catch {\n // ignore logging failures\n }\n }\n}\n\nconst disabledSection: ProfilerSection = { end: () => {} }\n\nconst disabledProfiler: Profiler = {\n get enabled() {\n return false\n },\n mark: () => {},\n section: () => disabledSection,\n measure: async (_label, fn) => Promise.resolve(fn()),\n record: () => {},\n child: () => disabledProfiler,\n end: () => {},\n}\n\nexport type CreateProfilerOptions = {\n scope: string\n target?: string\n label?: string\n enabled?: boolean\n loggerLabel?: string\n meta?: ProfilerExtra\n}\n\nexport function createProfiler(options: CreateProfilerOptions): Profiler {\n if (options.enabled === false) return disabledProfiler\n const startedAt = now()\n const enabledFlag = options.enabled !== undefined ? options.enabled : true\n const root: ProfilerRootState = {\n scope: options.scope,\n target: options.target,\n label: options.label ?? options.scope,\n loggerLabel: options.loggerLabel ?? '[profile]',\n enabled: enabledFlag,\n startedAt,\n lastTimestamp: startedAt,\n nodes: [],\n closed: false,\n meta: options.meta ? { ...options.meta } : undefined,\n }\n return new ProfilerImpl({ root })\n}\n\nexport function normalizeProfilerTokens(input: string | null | undefined): string[] {\n if (!input) return []\n return input\n .split(',')\n .map((token) => token.trim().toLowerCase())\n .filter((token) => token.length > 0)\n}\n\nexport function profilerMatches(target: string, tokens: string[]): boolean {\n if (!tokens.length) return false\n const lower = target.toLowerCase()\n return tokens.some((token) => {\n if (token === '*' || token === 'all' || parseBooleanToken(token) === true) return true\n if (token.endsWith('*')) {\n const prefix = token.slice(0, -1)\n return prefix.length === 0 ? true : lower.startsWith(prefix)\n }\n return token === lower\n })\n}\n\nconst DEFAULT_ENV_KEYS = [\n 'OM_PROFILE',\n 'NEXT_PUBLIC_OM_PROFILE',\n 'OM_CRUD_PROFILE',\n 'NEXT_PUBLIC_OM_CRUD_PROFILE',\n 'OM_QE_PROFILE',\n 'NEXT_PUBLIC_OM_QE_PROFILE',\n] as const\n\nexport function resolveProfilerTokens(envKeys: readonly string[] = DEFAULT_ENV_KEYS): string[] {\n const tokens: string[] = []\n envKeys.forEach((key) => {\n const raw = process.env[key]\n if (!raw) return\n const parsed = normalizeProfilerTokens(raw)\n if (parsed.length) tokens.push(...parsed)\n })\n return Array.from(new Set(tokens))\n}\n\nexport function shouldEnableProfiler(\n target: string,\n options?: { tokens?: string[]; envKeys?: readonly string[] }\n): boolean {\n const tokens = options?.tokens ?? resolveProfilerTokens(options?.envKeys)\n if (!tokens.length) return false\n return profilerMatches(target, tokens)\n}\n\nexport const disabledProfilerInstance = disabledProfiler\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }