@graphrefly/ts 0.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 (210) hide show
  1. package/LICENSE +21 -0
  2. package/dist/adapters/index.cjs +9015 -0
  3. package/dist/adapters/index.cjs.map +1 -0
  4. package/dist/adapters/index.d.cts +678 -0
  5. package/dist/adapters/index.d.ts +678 -0
  6. package/dist/adapters/index.js +2894 -0
  7. package/dist/adapters/index.js.map +1 -0
  8. package/dist/adapters/observe-storage.cjs +260 -0
  9. package/dist/adapters/observe-storage.cjs.map +1 -0
  10. package/dist/adapters/observe-storage.d.cts +77 -0
  11. package/dist/adapters/observe-storage.d.ts +77 -0
  12. package/dist/adapters/observe-storage.js +161 -0
  13. package/dist/adapters/observe-storage.js.map +1 -0
  14. package/dist/append-log-DisvEReb.d.cts +189 -0
  15. package/dist/append-log-DzKMmjxx.d.ts +189 -0
  16. package/dist/chunk-2ILL7HQI.js +1189 -0
  17. package/dist/chunk-2ILL7HQI.js.map +1 -0
  18. package/dist/chunk-4VLAQHZI.js +330 -0
  19. package/dist/chunk-4VLAQHZI.js.map +1 -0
  20. package/dist/chunk-6PHB5CJS.js +229 -0
  21. package/dist/chunk-6PHB5CJS.js.map +1 -0
  22. package/dist/chunk-COHO25CZ.js +2449 -0
  23. package/dist/chunk-COHO25CZ.js.map +1 -0
  24. package/dist/chunk-D6BG7U6A.js +161 -0
  25. package/dist/chunk-D6BG7U6A.js.map +1 -0
  26. package/dist/chunk-DJC4CHLQ.js +818 -0
  27. package/dist/chunk-DJC4CHLQ.js.map +1 -0
  28. package/dist/chunk-DK554R7P.js +67 -0
  29. package/dist/chunk-DK554R7P.js.map +1 -0
  30. package/dist/chunk-DKP56CSW.js +322 -0
  31. package/dist/chunk-DKP56CSW.js.map +1 -0
  32. package/dist/chunk-G4M3NHRJ.js +688 -0
  33. package/dist/chunk-G4M3NHRJ.js.map +1 -0
  34. package/dist/chunk-GAJW5I5P.js +1 -0
  35. package/dist/chunk-GAJW5I5P.js.map +1 -0
  36. package/dist/chunk-GDL26N2T.js +282 -0
  37. package/dist/chunk-GDL26N2T.js.map +1 -0
  38. package/dist/chunk-GTPCOEOZ.js +741 -0
  39. package/dist/chunk-GTPCOEOZ.js.map +1 -0
  40. package/dist/chunk-H2HTHFVN.js +1 -0
  41. package/dist/chunk-H2HTHFVN.js.map +1 -0
  42. package/dist/chunk-HDRL4VQQ.js +218 -0
  43. package/dist/chunk-HDRL4VQQ.js.map +1 -0
  44. package/dist/chunk-I3IHOHCJ.js +2267 -0
  45. package/dist/chunk-I3IHOHCJ.js.map +1 -0
  46. package/dist/chunk-JIMUDQN3.js +965 -0
  47. package/dist/chunk-JIMUDQN3.js.map +1 -0
  48. package/dist/chunk-JR4IKCR2.js +462 -0
  49. package/dist/chunk-JR4IKCR2.js.map +1 -0
  50. package/dist/chunk-K3FXTC3I.js +165 -0
  51. package/dist/chunk-K3FXTC3I.js.map +1 -0
  52. package/dist/chunk-OOEN33FB.js +65 -0
  53. package/dist/chunk-OOEN33FB.js.map +1 -0
  54. package/dist/chunk-PKVBHGBM.js +554 -0
  55. package/dist/chunk-PKVBHGBM.js.map +1 -0
  56. package/dist/chunk-RIIOUTGM.js +1857 -0
  57. package/dist/chunk-RIIOUTGM.js.map +1 -0
  58. package/dist/chunk-SCRFRCGR.js +33 -0
  59. package/dist/chunk-SCRFRCGR.js.map +1 -0
  60. package/dist/chunk-SWTLEQL6.js +53 -0
  61. package/dist/chunk-SWTLEQL6.js.map +1 -0
  62. package/dist/chunk-SZAETNNA.js +1 -0
  63. package/dist/chunk-SZAETNNA.js.map +1 -0
  64. package/dist/chunk-TEW47IVR.js +49 -0
  65. package/dist/chunk-TEW47IVR.js.map +1 -0
  66. package/dist/chunk-Y3ZLRGHC.js +1482 -0
  67. package/dist/chunk-Y3ZLRGHC.js.map +1 -0
  68. package/dist/chunk-Z2ANQ6JW.js +149 -0
  69. package/dist/chunk-Z2ANQ6JW.js.map +1 -0
  70. package/dist/codec-BB7p8fJc.d.cts +38 -0
  71. package/dist/codec-BB7p8fJc.d.ts +38 -0
  72. package/dist/composition/index.cjs +2505 -0
  73. package/dist/composition/index.cjs.map +1 -0
  74. package/dist/composition/index.d.cts +95 -0
  75. package/dist/composition/index.d.ts +95 -0
  76. package/dist/composition/index.js +19 -0
  77. package/dist/composition/index.js.map +1 -0
  78. package/dist/core/index.cjs +2475 -0
  79. package/dist/core/index.cjs.map +1 -0
  80. package/dist/core/index.d.cts +25 -0
  81. package/dist/core/index.d.ts +25 -0
  82. package/dist/core/index.js +74 -0
  83. package/dist/core/index.js.map +1 -0
  84. package/dist/cqrs/index.cjs +595 -0
  85. package/dist/cqrs/index.cjs.map +1 -0
  86. package/dist/cqrs/index.d.cts +200 -0
  87. package/dist/cqrs/index.d.ts +200 -0
  88. package/dist/cqrs/index.js +557 -0
  89. package/dist/cqrs/index.js.map +1 -0
  90. package/dist/data-structures/index.cjs +4277 -0
  91. package/dist/data-structures/index.cjs.map +1 -0
  92. package/dist/data-structures/index.d.cts +22 -0
  93. package/dist/data-structures/index.d.ts +22 -0
  94. package/dist/data-structures/index.js +31 -0
  95. package/dist/data-structures/index.js.map +1 -0
  96. package/dist/describe-BZb7AS2y.d.ts +57 -0
  97. package/dist/describe-Ciu8SUnN.d.cts +57 -0
  98. package/dist/graph/index.cjs +7832 -0
  99. package/dist/graph/index.cjs.map +1 -0
  100. package/dist/graph/index.d.cts +251 -0
  101. package/dist/graph/index.d.ts +251 -0
  102. package/dist/graph/index.js +131 -0
  103. package/dist/graph/index.js.map +1 -0
  104. package/dist/graph-DfdF9zy4.d.ts +666 -0
  105. package/dist/graph-s23RbbFO.d.cts +666 -0
  106. package/dist/index-CAEmLCYF.d.cts +166 -0
  107. package/dist/index-SnzZu3x7.d.ts +166 -0
  108. package/dist/index.cjs +15409 -0
  109. package/dist/index.cjs.map +1 -0
  110. package/dist/index.d.cts +23 -0
  111. package/dist/index.d.ts +23 -0
  112. package/dist/index.js +582 -0
  113. package/dist/index.js.map +1 -0
  114. package/dist/messages-BZqrGGm1.d.cts +55 -0
  115. package/dist/messages-BZqrGGm1.d.ts +55 -0
  116. package/dist/messaging/index.cjs +818 -0
  117. package/dist/messaging/index.cjs.map +1 -0
  118. package/dist/messaging/index.d.cts +235 -0
  119. package/dist/messaging/index.d.ts +235 -0
  120. package/dist/messaging/index.js +767 -0
  121. package/dist/messaging/index.js.map +1 -0
  122. package/dist/observe-event-log-0SVsx7JG.d.cts +88 -0
  123. package/dist/observe-event-log-Dnm76owp.d.ts +88 -0
  124. package/dist/operators/index.cjs +3774 -0
  125. package/dist/operators/index.cjs.map +1 -0
  126. package/dist/operators/index.d.cts +308 -0
  127. package/dist/operators/index.d.ts +308 -0
  128. package/dist/operators/index.js +112 -0
  129. package/dist/operators/index.js.map +1 -0
  130. package/dist/orchestration/index.cjs +3541 -0
  131. package/dist/orchestration/index.cjs.map +1 -0
  132. package/dist/orchestration/index.d.cts +302 -0
  133. package/dist/orchestration/index.d.ts +302 -0
  134. package/dist/orchestration/index.js +1004 -0
  135. package/dist/orchestration/index.js.map +1 -0
  136. package/dist/patterns/index.cjs +1045 -0
  137. package/dist/patterns/index.cjs.map +1 -0
  138. package/dist/patterns/index.d.cts +39 -0
  139. package/dist/patterns/index.d.ts +39 -0
  140. package/dist/patterns/index.js +33 -0
  141. package/dist/patterns/index.js.map +1 -0
  142. package/dist/reactive-collection-BxBqtIOE.d.cts +344 -0
  143. package/dist/reactive-collection-Cb1II1Fi.d.ts +344 -0
  144. package/dist/reactive-collection-storage-BNiEc-Gd.d.ts +217 -0
  145. package/dist/reactive-collection-storage-D-KmjE0J.d.cts +217 -0
  146. package/dist/reactive-map-BcB4KsQR.d.ts +256 -0
  147. package/dist/reactive-map-D-g3dv8I.d.cts +256 -0
  148. package/dist/read-through-B1CYPfq_.d.cts +82 -0
  149. package/dist/read-through-DwyJhGs1.d.ts +82 -0
  150. package/dist/render/index.cjs +250 -0
  151. package/dist/render/index.cjs.map +1 -0
  152. package/dist/render/index.d.cts +58 -0
  153. package/dist/render/index.d.ts +58 -0
  154. package/dist/render/index.js +20 -0
  155. package/dist/render/index.js.map +1 -0
  156. package/dist/resilience-Dig3Q7n0.d.cts +45 -0
  157. package/dist/resilience-Dig3Q7n0.d.ts +45 -0
  158. package/dist/semantic-memory-graph-BYoIlP35.d.cts +356 -0
  159. package/dist/semantic-memory-graph-CxyXLms3.d.ts +356 -0
  160. package/dist/solutions/index.cjs +3249 -0
  161. package/dist/solutions/index.cjs.map +1 -0
  162. package/dist/solutions/index.d.cts +520 -0
  163. package/dist/solutions/index.d.ts +520 -0
  164. package/dist/solutions/index.js +31 -0
  165. package/dist/solutions/index.js.map +1 -0
  166. package/dist/sources/browser.cjs +3095 -0
  167. package/dist/sources/browser.cjs.map +1 -0
  168. package/dist/sources/browser.d.cts +39 -0
  169. package/dist/sources/browser.d.ts +39 -0
  170. package/dist/sources/browser.js +137 -0
  171. package/dist/sources/browser.js.map +1 -0
  172. package/dist/sources/index.cjs +3021 -0
  173. package/dist/sources/index.cjs.map +1 -0
  174. package/dist/sources/index.d.cts +7 -0
  175. package/dist/sources/index.d.ts +7 -0
  176. package/dist/sources/index.js +63 -0
  177. package/dist/sources/index.js.map +1 -0
  178. package/dist/sources/node.cjs +675 -0
  179. package/dist/sources/node.cjs.map +1 -0
  180. package/dist/sources/node.d.cts +109 -0
  181. package/dist/sources/node.d.ts +109 -0
  182. package/dist/sources/node.js +639 -0
  183. package/dist/sources/node.js.map +1 -0
  184. package/dist/storage/browser.cjs +777 -0
  185. package/dist/storage/browser.cjs.map +1 -0
  186. package/dist/storage/browser.d.cts +40 -0
  187. package/dist/storage/browser.d.ts +40 -0
  188. package/dist/storage/browser.js +275 -0
  189. package/dist/storage/browser.js.map +1 -0
  190. package/dist/storage/index.cjs +1989 -0
  191. package/dist/storage/index.cjs.map +1 -0
  192. package/dist/storage/index.d.cts +92 -0
  193. package/dist/storage/index.d.ts +92 -0
  194. package/dist/storage/index.js +161 -0
  195. package/dist/storage/index.js.map +1 -0
  196. package/dist/storage/node.cjs +898 -0
  197. package/dist/storage/node.cjs.map +1 -0
  198. package/dist/storage/node.d.cts +66 -0
  199. package/dist/storage/node.d.ts +66 -0
  200. package/dist/storage/node.js +402 -0
  201. package/dist/storage/node.js.map +1 -0
  202. package/dist/testing/index.cjs +95 -0
  203. package/dist/testing/index.cjs.map +1 -0
  204. package/dist/testing/index.d.cts +20 -0
  205. package/dist/testing/index.d.ts +20 -0
  206. package/dist/testing/index.js +8 -0
  207. package/dist/testing/index.js.map +1 -0
  208. package/dist/types-bNMSWKqF.d.cts +732 -0
  209. package/dist/types-h12mNYbq.d.ts +732 -0
  210. package/package.json +250 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/sources/node.ts"],"sourcesContent":["/**\n * Node-only source factories. Import from `@graphrefly/ts/sources/node`; the universal\n * `@graphrefly/ts/sources` barrel stays browser-safe.\n */\n\nimport { execFileSync, type SpawnOptions, spawn } from \"node:child_process\";\nimport { type Dirent, existsSync, type FSWatcher, readdirSync, statSync, watch } from \"node:fs\";\nimport { dirname, join, relative, resolve as resolvePath } from \"node:path\";\nimport type { Ctx } from \"../ctx/types.js\";\nimport type {\n\tDriverResult,\n\tProcessResult as EnvironmentProcessResult,\n\tLocalProcessDriver,\n\tProcessCommand,\n} from \"../graph/environment.js\";\nimport type { Operator } from \"../graph/operators.js\";\nimport { errorPayload } from \"../protocol/messages.js\";\n\nexport type FSEventType = \"change\" | \"rename\" | \"create\" | \"delete\";\n\nexport interface FSEvent {\n\treadonly type: FSEventType;\n\treadonly path: string;\n\treadonly root: string;\n\treadonly relativePath: string;\n}\n\nexport interface FromFSWatchOptions {\n\t/** Use Node's recursive fs.watch mode where the host platform supports it. Default: false. */\n\treadonly recursive?: boolean;\n\t/** Coalesce events per path for this many milliseconds. Default: 100. */\n\treadonly debounceMs?: number;\n\t/** Emit create events for existing files after watcher registration. Default: false. */\n\treadonly initialScan?: boolean | \"files\";\n\t/** Include glob patterns matched against absolute and relative slash-normalized paths. */\n\treadonly include?: readonly string[];\n\t/** Exclude glob patterns matched against absolute and relative slash-normalized paths. */\n\treadonly exclude?: readonly string[];\n\t/** AbortSignal aborts the source to ERROR and closes all watchers. */\n\treadonly signal?: AbortSignal;\n}\n\nexport type SpawnEvent =\n\t| { readonly kind: \"stdout\"; readonly chunk: Buffer }\n\t| { readonly kind: \"stderr\"; readonly chunk: Buffer }\n\t| { readonly kind: \"exit\"; readonly code: number | null; readonly signal: NodeJS.Signals | null };\n\nexport interface FromSpawnOptions {\n\treadonly cwd?: string;\n\treadonly env?: NodeJS.ProcessEnv;\n\treadonly shell?: boolean | string;\n\treadonly signal?: AbortSignal;\n\treadonly stdio?: \"pipe\" | readonly (\"pipe\" | \"ignore\" | \"inherit\")[];\n\t/** Milliseconds after teardown SIGTERM before sending SIGKILL. Default: 1000. */\n\treadonly killGraceMs?: number;\n}\n\n/**\n * Node-only process driver options for D130/D131 EnvironmentDrivers.\n *\n * These knobs configure host child-process behavior at the driver boundary only; they do not\n * change graph wave, tier, or message semantics.\n */\nexport interface NodeProcessDriverOptions {\n\t/** Milliseconds after cancellation SIGTERM before sending SIGKILL. Default: 1000. */\n\treadonly killGraceMs?: number;\n\t/** Maximum captured stdout + stderr bytes before terminating with ERROR. Default: 16 MiB. */\n\treadonly maxBufferBytes?: number;\n\t/** Optional shell mode passed to Node's child_process.spawn. Default: false. */\n\treadonly shell?: boolean | string;\n}\n\nexport interface ProcessResult {\n\treadonly stdout: string;\n\treadonly stderr: string;\n\treadonly exitCode: number | null;\n\treadonly signal: NodeJS.Signals | null;\n}\n\nexport type GitHookType = \"post-commit\" | \"post-merge\" | \"post-checkout\" | \"post-rewrite\";\n\nexport interface GitEvent {\n\treadonly hook: GitHookType;\n\treadonly commit: string;\n\treadonly files: readonly string[];\n\treadonly message: string;\n\treadonly author: string;\n\treadonly timestamp_ns: string;\n}\n\nexport interface FromGitHookOptions {\n\treadonly pollMs?: number;\n\treadonly include?: readonly string[];\n\treadonly exclude?: readonly string[];\n\treadonly maxConsecutiveErrors?: number;\n\treadonly signal?: AbortSignal;\n}\n\nfunction source<T>(\n\tfactory: string,\n\tsetup: (ctx: Ctx) => undefined | (() => void),\n): Operator<never, T> {\n\treturn {\n\t\tfactory,\n\t\tbody: (ctx) => {\n\t\t\tconst cleanup = setup(ctx);\n\t\t\tif (typeof cleanup === \"function\") ctx.onDeactivation(cleanup);\n\t\t},\n\t};\n}\n\nfunction normalizePath(path: string): string {\n\treturn path.replaceAll(\"\\\\\", \"/\");\n}\n\nfunction escapeRegExp(value: string): string {\n\treturn value.replace(/[|\\\\{}()[\\]^$+?.]/g, \"\\\\$&\");\n}\n\nfunction globToRegExp(pattern: string): RegExp {\n\tlet out = \"^\";\n\tfor (let i = 0; i < pattern.length; i += 1) {\n\t\tconst ch = pattern[i];\n\t\tif (ch === \"*\") {\n\t\t\tif (pattern[i + 1] === \"*\") {\n\t\t\t\tout += \".*\";\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tout += \"[^/]*\";\n\t\t\t}\n\t\t} else {\n\t\t\tout += escapeRegExp(ch);\n\t\t}\n\t}\n\treturn new RegExp(`${out}$`);\n}\n\nfunction matchesAny(value: string, patterns: readonly RegExp[]): boolean {\n\treturn patterns.some((pattern) => pattern.test(value));\n}\n\nfunction timestampNsNow(): string {\n\treturn (BigInt(Date.now()) * 1_000_000n).toString();\n}\n\nfunction validatePositiveFinite(name: string, value: number): void {\n\tif (!Number.isFinite(value) || value <= 0) {\n\t\tthrow new RangeError(`${name} must be a positive finite number`);\n\t}\n}\n\nfunction validateNonNegativeFinite(name: string, value: number): void {\n\tif (!Number.isFinite(value) || value < 0) {\n\t\tthrow new RangeError(`${name} must be a non-negative finite number`);\n\t}\n}\n\nfunction eventTypeFor(eventType: \"rename\" | \"change\", path: string): FSEventType {\n\tif (eventType === \"change\") return \"change\";\n\ttry {\n\t\treturn existsSync(path) ? \"create\" : \"delete\";\n\t} catch {\n\t\treturn \"rename\";\n\t}\n}\n\nfunction scanFiles(\n\troot: string,\n\trecursive: boolean,\n\tisExcluded: (abs: string, rel: string) => boolean,\n): readonly string[] {\n\tconst resolved = resolvePath(root);\n\ttry {\n\t\tconst st = statSync(resolved);\n\t\tif (st.isFile()) return [resolved];\n\t\tif (!st.isDirectory()) return [];\n\t} catch {\n\t\treturn [];\n\t}\n\n\tconst out: string[] = [];\n\tfunction walk(dir: string): void {\n\t\tlet entries: Dirent[];\n\t\ttry {\n\t\t\tentries = readdirSync(dir, { withFileTypes: true });\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\t\tfor (const entry of entries) {\n\t\t\tconst abs = join(dir, entry.name);\n\t\t\tconst rel = relative(resolved, abs);\n\t\t\tif (entry.isFile()) {\n\t\t\t\tout.push(abs);\n\t\t\t} else if (recursive && entry.isDirectory() && !isExcluded(abs, rel)) {\n\t\t\t\twalk(abs);\n\t\t\t}\n\t\t}\n\t}\n\twalk(resolved);\n\treturn out;\n}\n\n/**\n * fromFSWatch: Node.js filesystem watcher source.\n *\n * External fs callbacks are a source boundary (R-no-raw-async): events enter the graph only via\n * `ctx.down`, and cleanup is tied to node deactivation through `ctx.onDeactivation`.\n */\nexport function fromFSWatch(\n\tpaths: string | readonly string[],\n\topts: FromFSWatchOptions = {},\n): Operator<never, FSEvent> {\n\tconst list = (Array.isArray(paths) ? paths : [paths]).map((path) => resolvePath(path));\n\tif (list.length === 0) throw new RangeError(\"fromFSWatch: paths must not be empty\");\n\tconst {\n\t\trecursive = false,\n\t\tdebounceMs = 100,\n\t\tinitialScan = false,\n\t\tinclude,\n\t\texclude = [\"**/node_modules/**\", \"**/.git/**\", \"**/dist/**\"],\n\t\tsignal,\n\t} = opts;\n\tif (!Number.isFinite(debounceMs) || debounceMs < 0) {\n\t\tthrow new RangeError(\"fromFSWatch: debounceMs must be a non-negative finite number\");\n\t}\n\tconst includePatterns = (include ?? []).map(globToRegExp);\n\tconst excludePatterns = exclude.map(globToRegExp);\n\n\tconst accepts = (abs: string, rel: string): boolean => {\n\t\tconst normalized = normalizePath(abs);\n\t\tconst relNormalized = normalizePath(rel);\n\t\tconst included =\n\t\t\tincludePatterns.length === 0 ||\n\t\t\tmatchesAny(normalized, includePatterns) ||\n\t\t\tmatchesAny(relNormalized, includePatterns);\n\t\tif (!included) return false;\n\t\treturn !isExcluded(normalized, relNormalized);\n\t};\n\tconst isExcluded = (abs: string, rel: string): boolean => {\n\t\tconst normalized = normalizePath(abs);\n\t\tconst relNormalized = normalizePath(rel);\n\t\treturn (\n\t\t\tmatchesAny(normalized, excludePatterns) ||\n\t\t\tmatchesAny(relNormalized, excludePatterns) ||\n\t\t\tmatchesAny(`${normalized}/`, excludePatterns) ||\n\t\t\t(relNormalized !== \"\" && matchesAny(`${relNormalized}/`, excludePatterns))\n\t\t);\n\t};\n\n\treturn source<FSEvent>(\"fromFSWatch\", (ctx) => {\n\t\tlet stopped = false;\n\t\tlet terminal = false;\n\t\tlet ready = initialScan === false;\n\t\tlet generation = 0;\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst watchers: FSWatcher[] = [];\n\t\tconst pending = new Map<string, FSEvent>();\n\t\tconst buffered = new Map<string, FSEvent>();\n\n\t\tconst close = () => {\n\t\t\tfor (const watcher of watchers.splice(0)) watcher.close();\n\t\t};\n\t\tconst cleanup = () => {\n\t\t\tstopped = true;\n\t\t\tgeneration += 1;\n\t\t\tif (timer !== undefined) clearTimeout(timer);\n\t\t\ttimer = undefined;\n\t\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\t\tclose();\n\t\t\tpending.clear();\n\t\t\tbuffered.clear();\n\t\t};\n\t\tconst emitError = (err: unknown) => {\n\t\t\tif (terminal) return;\n\t\t\tterminal = true;\n\t\t\tcleanup();\n\t\t\tctx.down([[\"ERROR\", errorPayload(err)]]);\n\t\t};\n\t\tfunction onAbort() {\n\t\t\temitError(signal?.reason);\n\t\t}\n\t\tconst flush = (token: number) => {\n\t\t\ttimer = undefined;\n\t\t\tif (stopped || terminal || token !== generation || pending.size === 0) return;\n\t\t\tconst msgs = [...pending.values()].map((event): [\"DATA\", FSEvent] => [\"DATA\", event]);\n\t\t\tpending.clear();\n\t\t\tctx.down(msgs);\n\t\t};\n\t\tconst schedule = () => {\n\t\t\tif (timer !== undefined) clearTimeout(timer);\n\t\t\tconst token = generation;\n\t\t\tif (debounceMs === 0) flush(token);\n\t\t\telse timer = setTimeout(() => flush(token), debounceMs);\n\t\t};\n\t\tconst enqueue = (event: FSEvent) => {\n\t\t\tif (!ready) {\n\t\t\t\tbuffered.set(event.path, event);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpending.set(event.path, event);\n\t\t\tschedule();\n\t\t};\n\t\tconst eventFor = (\n\t\t\tbasePath: string,\n\t\t\teventType: \"rename\" | \"change\",\n\t\t\tfileName: string | Buffer | null,\n\t\t): FSEvent | undefined => {\n\t\t\tconst root = normalizePath(resolvePath(basePath));\n\t\t\tconst abs = normalizePath(fileName == null ? root : resolvePath(basePath, String(fileName)));\n\t\t\tconst rel = normalizePath(fileName == null ? \"\" : relative(root, abs));\n\t\t\tif (!accepts(abs, rel)) return undefined;\n\t\t\treturn {\n\t\t\t\ttype: eventTypeFor(eventType, abs),\n\t\t\t\tpath: abs,\n\t\t\t\troot,\n\t\t\t\trelativePath: rel,\n\t\t\t};\n\t\t};\n\n\t\tif (signal?.aborted) {\n\t\t\tonAbort();\n\t\t\treturn cleanup;\n\t\t}\n\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\n\t\ttry {\n\t\t\tfor (const basePath of list) {\n\t\t\t\tconst watcher = watch(basePath, { recursive }, (eventType, fileName) => {\n\t\t\t\t\tif (stopped || terminal) return;\n\t\t\t\t\tconst event = eventFor(basePath, eventType, fileName);\n\t\t\t\t\tif (event !== undefined) enqueue(event);\n\t\t\t\t});\n\t\t\t\twatcher.on(\"error\", emitError);\n\t\t\t\twatchers.push(watcher);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\temitError(err);\n\t\t\treturn cleanup;\n\t\t}\n\n\t\tif (initialScan !== false) {\n\t\t\ttry {\n\t\t\t\tfor (const basePath of list) {\n\t\t\t\t\tconst root = normalizePath(resolvePath(basePath));\n\t\t\t\t\tlet relRoot = root;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (statSync(basePath).isFile()) relRoot = dirname(root);\n\t\t\t\t\t} catch {\n\t\t\t\t\t\trelRoot = root;\n\t\t\t\t\t}\n\t\t\t\t\tfor (const absPath of scanFiles(basePath, recursive, isExcluded)) {\n\t\t\t\t\t\tif (stopped || terminal) return cleanup;\n\t\t\t\t\t\tconst abs = normalizePath(absPath);\n\t\t\t\t\t\tconst rel = normalizePath(relative(relRoot, abs));\n\t\t\t\t\t\tif (!accepts(abs, rel)) continue;\n\t\t\t\t\t\tpending.set(abs, {\n\t\t\t\t\t\t\ttype: \"create\",\n\t\t\t\t\t\t\tpath: abs,\n\t\t\t\t\t\t\troot,\n\t\t\t\t\t\t\trelativePath: rel,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tready = true;\n\t\t\t\tfor (const [key, event] of buffered) pending.set(key, event);\n\t\t\t\tbuffered.clear();\n\t\t\t\tif (pending.size > 0) schedule();\n\t\t\t} catch (err) {\n\t\t\t\temitError(err);\n\t\t\t}\n\t\t}\n\n\t\treturn cleanup;\n\t});\n}\n\nexport function fromSpawn(\n\tcmd: string,\n\targs: readonly string[] = [],\n\topts: FromSpawnOptions = {},\n): Operator<never, SpawnEvent> {\n\tif (typeof cmd !== \"string\" || cmd.length === 0) {\n\t\tthrow new TypeError(\"fromSpawn: cmd must be a non-empty string\");\n\t}\n\tconst killGraceMs = opts.killGraceMs ?? 1000;\n\tvalidateNonNegativeFinite(\"fromSpawn: killGraceMs\", killGraceMs);\n\treturn source<SpawnEvent>(\"fromSpawn\", (ctx) => {\n\t\tlet alive = true;\n\t\tlet terminal = false;\n\t\tlet exitInfo: { code: number | null; signal: NodeJS.Signals | null } | undefined;\n\t\tlet child: ReturnType<typeof spawn>;\n\t\tlet killTimer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst clearKillTimer = () => {\n\t\t\tif (killTimer !== undefined) clearTimeout(killTimer);\n\t\t\tkillTimer = undefined;\n\t\t};\n\t\tconst stop = () => {\n\t\t\talive = false;\n\t\t\tchild?.stdout?.removeAllListeners(\"data\");\n\t\t\tchild?.stderr?.removeAllListeners(\"data\");\n\t\t\tif (!terminal) {\n\t\t\t\ttry {\n\t\t\t\t\tchild?.kill(\"SIGTERM\");\n\t\t\t\t} catch {\n\t\t\t\t\t// Process may already have exited.\n\t\t\t\t}\n\t\t\t\tkillTimer = setTimeout(() => {\n\t\t\t\t\tif (!terminal) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tchild?.kill(\"SIGKILL\");\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// Process may already have exited.\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, killGraceMs);\n\t\t\t\tkillTimer.unref?.();\n\t\t\t}\n\t\t};\n\t\ttry {\n\t\t\tchild = spawn(cmd, [...args], {\n\t\t\t\tcwd: opts.cwd,\n\t\t\t\tenv: opts.env,\n\t\t\t\tshell: opts.shell,\n\t\t\t\tsignal: opts.signal,\n\t\t\t\tstdio: (opts.stdio as SpawnOptions[\"stdio\"]) ?? \"pipe\",\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tterminal = true;\n\t\t\tctx.down([[\"ERROR\", errorPayload(err)]]);\n\t\t\treturn () => undefined;\n\t\t}\n\t\tchild.stdout?.on(\"data\", (chunk: Buffer) => {\n\t\t\tif (alive) ctx.down([[\"DATA\", { kind: \"stdout\", chunk }]]);\n\t\t});\n\t\tchild.stderr?.on(\"data\", (chunk: Buffer) => {\n\t\t\tif (alive) ctx.down([[\"DATA\", { kind: \"stderr\", chunk }]]);\n\t\t});\n\t\tchild.on(\"error\", (err) => {\n\t\t\tif (!alive || terminal) return;\n\t\t\tterminal = true;\n\t\t\talive = false;\n\t\t\tctx.down([[\"ERROR\", errorPayload(err)]]);\n\t\t});\n\t\tchild.on(\"exit\", (code, signal) => {\n\t\t\texitInfo = { code, signal: signal as NodeJS.Signals | null };\n\t\t});\n\t\tchild.on(\"close\", () => {\n\t\t\tclearKillTimer();\n\t\t\tif (!alive || terminal) return;\n\t\t\tterminal = true;\n\t\t\talive = false;\n\t\t\tconst info = exitInfo ?? { code: null, signal: null };\n\t\t\tctx.down([[\"DATA\", { kind: \"exit\", code: info.code, signal: info.signal }], [\"COMPLETE\"]]);\n\t\t});\n\t\treturn stop;\n\t});\n}\n\n/**\n * Node.js process EnvironmentDriver for D130/D131 adapters.\n *\n * Import this from `@graphrefly/ts/sources/node` and install it with\n * `EnvironmentDrivers.empty().withProcess(nodeProcessDriver())`. The child process is an\n * adapter-boundary side effect; graph nodes only observe ordinary ProcessResult DATA or ERROR.\n */\nexport function nodeProcessDriver(opts: NodeProcessDriverOptions = {}): LocalProcessDriver {\n\tconst killGraceMs = opts.killGraceMs ?? 1000;\n\tconst maxBufferBytes = opts.maxBufferBytes ?? 16 * 1024 * 1024;\n\tvalidateNonNegativeFinite(\"nodeProcessDriver: killGraceMs\", killGraceMs);\n\tvalidateNonNegativeFinite(\"nodeProcessDriver: maxBufferBytes\", maxBufferBytes);\n\treturn {\n\t\trun(command, callback) {\n\t\t\treturn runNodeProcessCommand(command, callback, {\n\t\t\t\tkillGraceMs,\n\t\t\t\tmaxBufferBytes,\n\t\t\t\tshell: opts.shell,\n\t\t\t});\n\t\t},\n\t};\n}\n\nexport function runProcess(\n\tcmd: string,\n\targs: readonly string[] = [],\n\topts: FromSpawnOptions = {},\n): Operator<never, ProcessResult> {\n\tif (typeof cmd !== \"string\" || cmd.length === 0) {\n\t\tthrow new TypeError(\"runProcess: cmd must be a non-empty string\");\n\t}\n\tconst killGraceMs = opts.killGraceMs ?? 1000;\n\tvalidateNonNegativeFinite(\"runProcess: killGraceMs\", killGraceMs);\n\treturn source<ProcessResult>(\"runProcess\", (ctx) => {\n\t\tlet alive = true;\n\t\tlet terminal = false;\n\t\tconst stdoutChunks: Buffer[] = [];\n\t\tconst stderrChunks: Buffer[] = [];\n\t\tlet exitInfo: { code: number | null; signal: NodeJS.Signals | null } | undefined;\n\t\tlet child: ReturnType<typeof spawn>;\n\t\tlet killTimer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst clearKillTimer = () => {\n\t\t\tif (killTimer !== undefined) clearTimeout(killTimer);\n\t\t\tkillTimer = undefined;\n\t\t};\n\t\tconst stop = () => {\n\t\t\talive = false;\n\t\t\tchild?.stdout?.removeAllListeners(\"data\");\n\t\t\tchild?.stderr?.removeAllListeners(\"data\");\n\t\t\tif (!terminal) {\n\t\t\t\ttry {\n\t\t\t\t\tchild?.kill(\"SIGTERM\");\n\t\t\t\t} catch {\n\t\t\t\t\t// Process may already have exited.\n\t\t\t\t}\n\t\t\t\tkillTimer = setTimeout(() => {\n\t\t\t\t\tif (!terminal) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tchild?.kill(\"SIGKILL\");\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// Process may already have exited.\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, killGraceMs);\n\t\t\t\tkillTimer.unref?.();\n\t\t\t}\n\t\t};\n\t\ttry {\n\t\t\tchild = spawn(cmd, [...args], {\n\t\t\t\tcwd: opts.cwd,\n\t\t\t\tenv: opts.env,\n\t\t\t\tshell: opts.shell,\n\t\t\t\tsignal: opts.signal,\n\t\t\t\tstdio: (opts.stdio as SpawnOptions[\"stdio\"]) ?? \"pipe\",\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tterminal = true;\n\t\t\tctx.down([[\"ERROR\", errorPayload(err)]]);\n\t\t\treturn () => undefined;\n\t\t}\n\t\tchild.stdout?.on(\"data\", (chunk: Buffer) => {\n\t\t\tif (alive) stdoutChunks.push(chunk);\n\t\t});\n\t\tchild.stderr?.on(\"data\", (chunk: Buffer) => {\n\t\t\tif (alive) stderrChunks.push(chunk);\n\t\t});\n\t\tchild.on(\"error\", (err) => {\n\t\t\tif (!alive || terminal) return;\n\t\t\tterminal = true;\n\t\t\talive = false;\n\t\t\tctx.down([[\"ERROR\", errorPayload(err)]]);\n\t\t});\n\t\tchild.on(\"exit\", (code, signal) => {\n\t\t\texitInfo = { code, signal: signal as NodeJS.Signals | null };\n\t\t});\n\t\tchild.on(\"close\", () => {\n\t\t\tclearKillTimer();\n\t\t\tif (!alive || terminal) return;\n\t\t\tterminal = true;\n\t\t\talive = false;\n\t\t\tconst info = exitInfo ?? { code: null, signal: null };\n\t\t\tctx.down([\n\t\t\t\t[\n\t\t\t\t\t\"DATA\",\n\t\t\t\t\t{\n\t\t\t\t\t\tstdout: Buffer.concat(stdoutChunks).toString(\"utf8\"),\n\t\t\t\t\t\tstderr: Buffer.concat(stderrChunks).toString(\"utf8\"),\n\t\t\t\t\t\texitCode: info.code,\n\t\t\t\t\t\tsignal: info.signal,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t[\"COMPLETE\"],\n\t\t\t]);\n\t\t});\n\t\treturn stop;\n\t});\n}\n\nfunction runNodeProcessCommand(\n\tcommand: ProcessCommand,\n\tcallback: (result: DriverResult<EnvironmentProcessResult>) => void,\n\topts: {\n\t\treadonly killGraceMs: number;\n\t\treadonly maxBufferBytes: number;\n\t\treadonly shell?: boolean | string;\n\t},\n): () => void {\n\tif (typeof command.program !== \"string\" || command.program.length === 0) {\n\t\tcallback({\n\t\t\tok: false,\n\t\t\terror: new TypeError(\"nodeProcessDriver: program must be a non-empty string\"),\n\t\t});\n\t\treturn () => undefined;\n\t}\n\tlet alive = true;\n\tlet terminal = false;\n\tconst stdoutChunks: Buffer[] = [];\n\tconst stderrChunks: Buffer[] = [];\n\tlet bufferedBytes = 0;\n\tlet exitInfo: { code: number | null; signal: string | null } | undefined;\n\tlet child: ReturnType<typeof spawn>;\n\tlet killTimer: ReturnType<typeof setTimeout> | undefined;\n\tconst clearKillTimer = () => {\n\t\tif (killTimer !== undefined) clearTimeout(killTimer);\n\t\tkillTimer = undefined;\n\t};\n\tconst stop = () => {\n\t\tif (!alive) return;\n\t\talive = false;\n\t\tchild?.stdout?.removeAllListeners(\"data\");\n\t\tchild?.stderr?.removeAllListeners(\"data\");\n\t\tif (!terminal) {\n\t\t\ttry {\n\t\t\t\tchild?.kill(\"SIGTERM\");\n\t\t\t} catch {\n\t\t\t\t// Process may already have exited.\n\t\t\t}\n\t\t\tkillTimer = setTimeout(() => {\n\t\t\t\tif (!terminal) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tchild?.kill(\"SIGKILL\");\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Process may already have exited.\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, opts.killGraceMs);\n\t\t\tkillTimer.unref?.();\n\t\t}\n\t};\n\ttry {\n\t\tchild = spawn(command.program, [...command.args], {\n\t\t\tcwd: command.cwd,\n\t\t\tenv: command.env === undefined ? undefined : Object.fromEntries(command.env),\n\t\t\tshell: opts.shell,\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t});\n\t} catch (err) {\n\t\tterminal = true;\n\t\tcallback({ ok: false, error: err });\n\t\treturn () => undefined;\n\t}\n\tconst fail = (error: unknown) => {\n\t\tclearKillTimer();\n\t\tif (!alive || terminal) return;\n\t\tterminal = true;\n\t\talive = false;\n\t\tchild.stdout?.removeAllListeners(\"data\");\n\t\tchild.stderr?.removeAllListeners(\"data\");\n\t\ttry {\n\t\t\tchild.kill(\"SIGTERM\");\n\t\t} catch {\n\t\t\t// Process may already have exited.\n\t\t}\n\t\tkillTimer = setTimeout(() => {\n\t\t\ttry {\n\t\t\t\tchild.kill(\"SIGKILL\");\n\t\t\t} catch {\n\t\t\t\t// Process may already have exited.\n\t\t\t}\n\t\t}, opts.killGraceMs);\n\t\tkillTimer.unref?.();\n\t\tcallback({ ok: false, error });\n\t};\n\tconst pushOutput = (chunks: Buffer[], chunk: Buffer) => {\n\t\tif (!alive) return;\n\t\tbufferedBytes += chunk.byteLength;\n\t\tif (bufferedBytes > opts.maxBufferBytes) {\n\t\t\tfail(\n\t\t\t\tnew RangeError(\n\t\t\t\t\t`nodeProcessDriver: stdout/stderr exceeded maxBufferBytes (${opts.maxBufferBytes})`,\n\t\t\t\t),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tchunks.push(chunk);\n\t};\n\tchild.stdout?.on(\"data\", (chunk: Buffer) => {\n\t\tpushOutput(stdoutChunks, chunk);\n\t});\n\tchild.stderr?.on(\"data\", (chunk: Buffer) => {\n\t\tpushOutput(stderrChunks, chunk);\n\t});\n\tchild.on(\"error\", (err) => {\n\t\tclearKillTimer();\n\t\tif (!alive || terminal) return;\n\t\tterminal = true;\n\t\talive = false;\n\t\tcallback({ ok: false, error: err });\n\t});\n\tchild.on(\"exit\", (code, signal) => {\n\t\texitInfo = { code, signal };\n\t});\n\tchild.on(\"close\", () => {\n\t\tclearKillTimer();\n\t\tif (!alive || terminal) return;\n\t\tterminal = true;\n\t\talive = false;\n\t\tconst info = exitInfo ?? { code: null, signal: null };\n\t\tcallback({\n\t\t\tok: true,\n\t\t\tvalue: {\n\t\t\t\tstdout: Buffer.concat(stdoutChunks).toString(\"utf8\"),\n\t\t\t\tstderr: Buffer.concat(stderrChunks).toString(\"utf8\"),\n\t\t\t\texitCode: info.code,\n\t\t\t\tsignal: info.signal,\n\t\t\t},\n\t\t});\n\t});\n\treturn stop;\n}\n\ninterface GitPollResult {\n\treadonly head: string;\n\treadonly files: readonly string[];\n\treadonly message: string;\n\treadonly author: string;\n}\n\nfunction stripFinalLineBreak(value: string): string {\n\treturn value.replace(/\\r?\\n$/, \"\");\n}\n\nfunction gitText(repoPath: string, args: readonly string[]): string {\n\treturn stripFinalLineBreak(execFileSync(\"git\", [\"-C\", repoPath, ...args], { encoding: \"utf8\" }));\n}\n\nfunction gitPathList(repoPath: string, args: readonly string[]): readonly string[] {\n\tconst out = execFileSync(\"git\", [\"-C\", repoPath, ...args, \"-z\"]) as Buffer;\n\tconst text = out.toString(\"utf8\");\n\tif (text.length === 0) return [];\n\treturn text.split(\"\\0\").filter((part) => part.length > 0);\n}\n\nfunction readGitHead(\n\trepoPath: string,\n\tpreviousHead: string | undefined,\n): GitPollResult | undefined {\n\tconst head = gitText(repoPath, [\"rev-parse\", \"HEAD\"]);\n\tif (head.length === 0 || head === previousHead) return undefined;\n\tconst files =\n\t\tpreviousHead === undefined\n\t\t\t? []\n\t\t\t: gitPathList(repoPath, [\"diff\", \"--name-only\", `${previousHead}..${head}`]);\n\treturn {\n\t\thead,\n\t\tfiles,\n\t\tmessage: gitText(repoPath, [\"log\", \"-1\", \"--format=%s\", head]),\n\t\tauthor: gitText(repoPath, [\"log\", \"-1\", \"--format=%an\", head]),\n\t};\n}\n\nexport function fromGitHook(\n\trepoPath: string,\n\topts: FromGitHookOptions = {},\n): Operator<never, GitEvent> {\n\tconst { pollMs = 5000, include, exclude, maxConsecutiveErrors = 1, signal } = opts;\n\tvalidatePositiveFinite(\"fromGitHook: pollMs\", pollMs);\n\tif (!Number.isFinite(maxConsecutiveErrors) && maxConsecutiveErrors !== Infinity) {\n\t\tthrow new RangeError(\"fromGitHook: maxConsecutiveErrors must be finite or Infinity\");\n\t}\n\tif (maxConsecutiveErrors <= 0) {\n\t\tthrow new RangeError(\"fromGitHook: maxConsecutiveErrors must be positive\");\n\t}\n\tconst resolvedRepoPath = resolvePath(repoPath);\n\tconst includePatterns = (include ?? []).map(globToRegExp);\n\tconst excludePatterns = (exclude ?? []).map(globToRegExp);\n\tconst accepts = (file: string): boolean => {\n\t\tconst normalized = normalizePath(file);\n\t\tconst included = includePatterns.length === 0 || matchesAny(normalized, includePatterns);\n\t\treturn included && !matchesAny(normalized, excludePatterns);\n\t};\n\n\treturn source<GitEvent>(\"fromGitHook\", (ctx) => {\n\t\tlet done = false;\n\t\tlet lastSeen: string | undefined;\n\t\tlet consecutiveErrors = 0;\n\t\tlet intervalId: ReturnType<typeof setInterval> | undefined;\n\t\tconst cleanup = () => {\n\t\t\tdone = true;\n\t\t\tif (intervalId !== undefined) clearInterval(intervalId);\n\t\t\tintervalId = undefined;\n\t\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\t};\n\t\tconst fail = (err: unknown) => {\n\t\t\tif (done) return;\n\t\t\tcleanup();\n\t\t\tctx.down([[\"ERROR\", errorPayload(err)]]);\n\t\t};\n\t\tconst onAbort = () => fail(signal?.reason);\n\t\tconst poll = () => {\n\t\t\tif (done) return;\n\t\t\ttry {\n\t\t\t\tconst result = readGitHead(resolvedRepoPath, lastSeen);\n\t\t\t\tconsecutiveErrors = 0;\n\t\t\t\tif (result === undefined) return;\n\t\t\t\tconst isBaseline = lastSeen === undefined;\n\t\t\t\tlastSeen = result.head;\n\t\t\t\tif (isBaseline) return;\n\t\t\t\tctx.down([\n\t\t\t\t\t[\n\t\t\t\t\t\t\"DATA\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\thook: \"post-commit\",\n\t\t\t\t\t\t\tcommit: result.head,\n\t\t\t\t\t\t\tfiles: result.files.filter(accepts),\n\t\t\t\t\t\t\tmessage: result.message,\n\t\t\t\t\t\t\tauthor: result.author,\n\t\t\t\t\t\t\ttimestamp_ns: timestampNsNow(),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t]);\n\t\t\t} catch (err) {\n\t\t\t\tconsecutiveErrors += 1;\n\t\t\t\tif (consecutiveErrors >= maxConsecutiveErrors) fail(err);\n\t\t\t}\n\t\t};\n\t\tif (signal?.aborted) {\n\t\t\tonAbort();\n\t\t\treturn cleanup;\n\t\t}\n\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\t\tpoll();\n\t\tif (!done) intervalId = setInterval(poll, pollMs);\n\t\treturn cleanup;\n\t});\n}\n"],"mappings":"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","names":[]}