dotdo 0.0.2 → 0.1.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 (313) hide show
  1. package/cli/README.md +238 -0
  2. package/cli/agent.ts +72 -0
  3. package/cli/bin.js +44 -0
  4. package/cli/bin.ts +38 -0
  5. package/cli/build.ts +157 -0
  6. package/cli/commands/auth/login.ts +14 -0
  7. package/cli/commands/auth/logout.ts +6 -0
  8. package/cli/commands/auth/whoami.ts +16 -0
  9. package/cli/commands/deploy-multi.ts +245 -0
  10. package/cli/commands/dev/deploy.ts +100 -0
  11. package/cli/commands/dev/dev.ts +95 -0
  12. package/cli/commands/dev/logs.ts +91 -0
  13. package/cli/commands/dev-local.ts +88 -0
  14. package/cli/commands/do-ops.ts +314 -0
  15. package/cli/commands/index.ts +100 -0
  16. package/cli/commands/init.ts +247 -0
  17. package/cli/commands/introspect/emitter.ts +315 -0
  18. package/cli/commands/introspect/index.ts +193 -0
  19. package/cli/commands/link.ts +598 -0
  20. package/cli/commands/snippets.ts +415 -0
  21. package/cli/commands/tunnel.ts +239 -0
  22. package/cli/device-auth.ts +289 -0
  23. package/cli/fallback.ts +12 -0
  24. package/cli/index.ts +121 -0
  25. package/cli/main.ts +246 -0
  26. package/cli/mcp-stdio.ts +790 -0
  27. package/cli/package.json +62 -0
  28. package/cli/runtime/do-registry.ts +193 -0
  29. package/cli/runtime/embedded-db.ts +344 -0
  30. package/cli/runtime/index.ts +9 -0
  31. package/cli/runtime/miniflare-adapter.ts +162 -0
  32. package/cli/sandbox.ts +82 -0
  33. package/cli/src/args.ts +174 -0
  34. package/cli/src/auth.ts +55 -0
  35. package/cli/src/commands/call.ts +84 -0
  36. package/cli/src/commands/charge.ts +96 -0
  37. package/cli/src/commands/config.ts +115 -0
  38. package/cli/src/commands/email.ts +112 -0
  39. package/cli/src/commands/llm.ts +115 -0
  40. package/cli/src/commands/queue.ts +134 -0
  41. package/cli/src/commands/text.ts +86 -0
  42. package/cli/src/config.ts +185 -0
  43. package/cli/src/output.ts +246 -0
  44. package/cli/src/rpc.ts +192 -0
  45. package/cli/utils/config.ts +282 -0
  46. package/cli/utils/detect.ts +73 -0
  47. package/cli/utils/index.ts +15 -0
  48. package/cli/utils/logger.ts +232 -0
  49. package/dist/ai/template-literals.js +2 -2
  50. package/dist/ai/template-literals.js.map +1 -1
  51. package/dist/api/middleware/auth.js +3 -2
  52. package/dist/api/middleware/auth.js.map +1 -1
  53. package/dist/db/iceberg/inverted-index.js +1 -1
  54. package/dist/db/iceberg/inverted-index.js.map +1 -1
  55. package/dist/db/iceberg/puffin.js.map +1 -1
  56. package/dist/db/json-indexes.js.map +1 -1
  57. package/dist/db/objects.js.map +1 -1
  58. package/dist/db/primitives/dag-scheduler/index.js +1 -1
  59. package/dist/db/primitives/dag-scheduler/index.js.map +1 -1
  60. package/dist/db/primitives/observability.js.map +1 -1
  61. package/dist/db/primitives/schema-evolution.js.map +1 -1
  62. package/dist/db/primitives/temporal-store.js.map +1 -1
  63. package/dist/db/primitives/typed-column-store.js.map +1 -1
  64. package/dist/db/primitives/utils/duration.js.map +1 -1
  65. package/dist/db/primitives/utils/murmur3.js +12 -14
  66. package/dist/db/primitives/utils/murmur3.js.map +1 -1
  67. package/dist/db/primitives/window-manager.js.map +1 -1
  68. package/dist/db/stores.js.map +1 -1
  69. package/dist/db/things.js.map +1 -1
  70. package/dist/lib/DODispatcher.js +2 -2
  71. package/dist/lib/DODispatcher.js.map +1 -1
  72. package/dist/lib/auto-wiring.js.map +1 -1
  73. package/dist/lib/channels/email.js +1 -1
  74. package/dist/lib/channels/email.js.map +1 -1
  75. package/dist/lib/channels/slack-blockkit.js.map +1 -1
  76. package/dist/lib/cloudflare/ai.js +1 -1
  77. package/dist/lib/cloudflare/ai.js.map +1 -1
  78. package/dist/lib/cloudflare/kv.js +1 -1
  79. package/dist/lib/cloudflare/kv.js.map +1 -1
  80. package/dist/lib/cloudflare/r2.js +3 -3
  81. package/dist/lib/cloudflare/r2.js.map +1 -1
  82. package/dist/lib/cloudflare/vectorize.js.map +1 -1
  83. package/dist/lib/cloudflare/workflows.js.map +1 -1
  84. package/dist/lib/executors/AgenticFunctionExecutor.js.map +1 -1
  85. package/dist/lib/executors/CodeFunctionExecutor.js.map +1 -1
  86. package/dist/lib/executors/GenerativeFunctionExecutor.js.map +1 -1
  87. package/dist/lib/executors/HumanFunctionExecutor.js +1 -1
  88. package/dist/lib/executors/HumanFunctionExecutor.js.map +1 -1
  89. package/dist/lib/executors/ParallelStepExecutor.js.map +1 -1
  90. package/dist/lib/experiments.js.map +1 -1
  91. package/dist/lib/flags/store.js.map +1 -1
  92. package/dist/lib/functions/FunctionComposition.js.map +1 -1
  93. package/dist/lib/functions/FunctionMiddleware.js.map +1 -1
  94. package/dist/lib/functions/FunctionRegistry.js.map +1 -1
  95. package/dist/lib/humans/templates.js.map +1 -1
  96. package/dist/lib/identity.js +2 -2
  97. package/dist/lib/identity.js.map +1 -1
  98. package/dist/lib/logging/index.js.map +1 -1
  99. package/dist/lib/mixins/bash.js +1 -73
  100. package/dist/lib/mixins/bash.js.map +1 -1
  101. package/dist/lib/mixins/git.js +0 -5
  102. package/dist/lib/mixins/git.js.map +1 -1
  103. package/dist/lib/mixins/npm.js.map +1 -1
  104. package/dist/lib/noun-id.js.map +1 -1
  105. package/dist/lib/rate-limit/sliding-window.js.map +1 -1
  106. package/dist/lib/rpc/bindings.js.map +1 -1
  107. package/dist/lib/safe-stringify.js.map +1 -1
  108. package/dist/lib/sandbox/miniflare-sandbox.js.map +1 -1
  109. package/dist/lib/sqids.js.map +1 -1
  110. package/dist/lib/sql/adapters/node-sql-parser.js.map +1 -1
  111. package/dist/lib/sql/adapters/pgsql-parser.js +19 -18
  112. package/dist/lib/sql/adapters/pgsql-parser.js.map +1 -1
  113. package/dist/metrics/hunch.js.map +1 -1
  114. package/dist/objects/API.js +1 -1
  115. package/dist/objects/API.js.map +1 -1
  116. package/dist/objects/Agent.js.map +1 -1
  117. package/dist/objects/Browser.js.map +1 -1
  118. package/dist/objects/CLI.js.map +1 -1
  119. package/dist/objects/DOBase.js.map +1 -1
  120. package/dist/objects/DOCache.js +153 -0
  121. package/dist/objects/DOCache.js.map +1 -0
  122. package/dist/objects/DOFull.js.map +1 -1
  123. package/dist/objects/Entity.js.map +1 -1
  124. package/dist/objects/Human.js.map +1 -1
  125. package/dist/objects/IcebergMetadataDO.js.map +1 -1
  126. package/dist/objects/IntegrationsDO.js.map +1 -1
  127. package/dist/objects/ObservabilityBroadcaster.js.map +1 -1
  128. package/dist/objects/Package.js.map +1 -1
  129. package/dist/objects/Product.js +1 -1
  130. package/dist/objects/Product.js.map +1 -1
  131. package/dist/objects/SaaS.js.map +1 -1
  132. package/dist/objects/SandboxDO.js.map +1 -1
  133. package/dist/objects/Service.js.map +1 -1
  134. package/dist/objects/VectorShardDO.js +9 -7
  135. package/dist/objects/VectorShardDO.js.map +1 -1
  136. package/dist/objects/Workflow.js.map +1 -1
  137. package/dist/objects/WorkflowFactory.js.map +1 -1
  138. package/dist/objects/WorkflowRuntime.js.map +1 -1
  139. package/dist/objects/lifecycle/Branch.js.map +1 -1
  140. package/dist/objects/lifecycle/Clone.js +1 -1
  141. package/dist/objects/lifecycle/Clone.js.map +1 -1
  142. package/dist/objects/lifecycle/Compact.js.map +1 -1
  143. package/dist/objects/lifecycle/Shard.js.map +1 -1
  144. package/dist/objects/persistence/checkpoint-manager.js.map +1 -1
  145. package/dist/objects/persistence/migration-runner.js.map +1 -1
  146. package/dist/objects/persistence/replication-manager.js +2 -2
  147. package/dist/objects/persistence/replication-manager.js.map +1 -1
  148. package/dist/objects/persistence/tiered-storage-manager.js.map +1 -1
  149. package/dist/objects/persistence/wal-manager.js.map +1 -1
  150. package/dist/objects/transport/auth-layer.js.map +1 -1
  151. package/dist/objects/transport/chain.js.map +1 -1
  152. package/dist/objects/transport/mcp-server.js +7 -6
  153. package/dist/objects/transport/mcp-server.js.map +1 -1
  154. package/dist/objects/transport/rest-autowire.js +3 -2
  155. package/dist/objects/transport/rest-autowire.js.map +1 -1
  156. package/dist/objects/transport/rest-router.js.map +1 -1
  157. package/dist/objects/transport/rpc-server.js +18 -15
  158. package/dist/objects/transport/rpc-server.js.map +1 -1
  159. package/dist/objects/transport/shared.js +2 -1
  160. package/dist/objects/transport/shared.js.map +1 -1
  161. package/dist/snippets/artifacts-ingest.js.map +1 -1
  162. package/dist/snippets/artifacts-serve.js.map +1 -1
  163. package/dist/snippets/search.js.map +1 -1
  164. package/dist/workflows/ScheduleManager.js.map +1 -1
  165. package/dist/workflows/StepResultStorage.js.map +1 -1
  166. package/dist/workflows/WaitForEventManager.js.map +1 -1
  167. package/dist/workflows/compat/backends/cloudflare-workflows.js.map +1 -1
  168. package/dist/workflows/compat/inngest/index.js.map +1 -1
  169. package/dist/workflows/compat/qstash/index.js.map +1 -1
  170. package/dist/workflows/compat/temporal/client.js.map +1 -1
  171. package/dist/workflows/compat/temporal/index.js.map +1 -1
  172. package/dist/workflows/compat/trigger/index.js.map +1 -1
  173. package/dist/workflows/compat/utils/index.js.map +1 -1
  174. package/dist/workflows/context/correlation.js +2 -2
  175. package/dist/workflows/context/correlation.js.map +1 -1
  176. package/dist/workflows/context/experiment.js +1 -1
  177. package/dist/workflows/context/experiment.js.map +1 -1
  178. package/dist/workflows/context/flag.js +1 -1
  179. package/dist/workflows/context/flag.js.map +1 -1
  180. package/dist/workflows/context/measure.js +1 -1
  181. package/dist/workflows/context/measure.js.map +1 -1
  182. package/dist/workflows/context/rate-limit.js.map +1 -1
  183. package/dist/workflows/data/entity-events/entity-events.js.map +1 -1
  184. package/dist/workflows/data/experiment/index.js.map +1 -1
  185. package/dist/workflows/data/goal/context.js +1 -1
  186. package/dist/workflows/data/goal/context.js.map +1 -1
  187. package/dist/workflows/data/measure/index.js +1 -1
  188. package/dist/workflows/data/measure/index.js.map +1 -1
  189. package/dist/workflows/data/stream/index.js +10 -76
  190. package/dist/workflows/data/stream/index.js.map +1 -1
  191. package/dist/workflows/data/track/context.js.map +1 -1
  192. package/dist/workflows/data/view/context.js.map +1 -1
  193. package/dist/workflows/domain.js.map +1 -1
  194. package/dist/workflows/flags.js +1 -1
  195. package/dist/workflows/flags.js.map +1 -1
  196. package/dist/workflows/hash.js.map +1 -1
  197. package/dist/workflows/on.js +1 -1
  198. package/dist/workflows/on.js.map +1 -1
  199. package/dist/workflows/schedule-builder.js.map +1 -1
  200. package/dist/workflows/visibility/index.js +0 -2
  201. package/dist/workflows/visibility/index.js.map +1 -1
  202. package/dist/workflows/visibility/query-parser.js.map +1 -1
  203. package/package.json +18 -3
  204. package/dist/api/analytics/router.js +0 -601
  205. package/dist/api/analytics/router.js.map +0 -1
  206. package/dist/api/index.js +0 -158
  207. package/dist/api/index.js.map +0 -1
  208. package/dist/api/middleware/error-handling.js +0 -176
  209. package/dist/api/middleware/error-handling.js.map +0 -1
  210. package/dist/api/middleware/request-id.js +0 -21
  211. package/dist/api/middleware/request-id.js.map +0 -1
  212. package/dist/api/pages.js +0 -1180
  213. package/dist/api/pages.js.map +0 -1
  214. package/dist/api/routes/api.js +0 -612
  215. package/dist/api/routes/api.js.map +0 -1
  216. package/dist/api/routes/browsers.js +0 -471
  217. package/dist/api/routes/browsers.js.map +0 -1
  218. package/dist/api/routes/do.js +0 -188
  219. package/dist/api/routes/do.js.map +0 -1
  220. package/dist/api/routes/mcp.js +0 -459
  221. package/dist/api/routes/mcp.js.map +0 -1
  222. package/dist/api/routes/obs.js +0 -445
  223. package/dist/api/routes/obs.js.map +0 -1
  224. package/dist/api/routes/openapi.js +0 -794
  225. package/dist/api/routes/openapi.js.map +0 -1
  226. package/dist/api/routes/rpc.js +0 -1103
  227. package/dist/api/routes/rpc.js.map +0 -1
  228. package/dist/api/routes/sandboxes.js +0 -389
  229. package/dist/api/routes/sandboxes.js.map +0 -1
  230. package/dist/api/test-do.js +0 -38
  231. package/dist/api/test-do.js.map +0 -1
  232. package/dist/api/types.js +0 -11
  233. package/dist/api/types.js.map +0 -1
  234. package/dist/cli/bin.js +0 -2
  235. package/dist/cli/main.js +0 -52342
  236. package/dist/do/bash.js +0 -35
  237. package/dist/do/bash.js.map +0 -1
  238. package/dist/do/fs.js +0 -25
  239. package/dist/do/fs.js.map +0 -1
  240. package/dist/do/full.js +0 -61
  241. package/dist/do/full.js.map +0 -1
  242. package/dist/do/git.js +0 -28
  243. package/dist/do/git.js.map +0 -1
  244. package/dist/do/index.js +0 -52
  245. package/dist/do/index.js.map +0 -1
  246. package/dist/lib/agent/tools/bash.js +0 -336
  247. package/dist/lib/agent/tools/bash.js.map +0 -1
  248. package/dist/lib/agent/tools/edit.js +0 -157
  249. package/dist/lib/agent/tools/edit.js.map +0 -1
  250. package/dist/lib/agent/tools/glob.js +0 -137
  251. package/dist/lib/agent/tools/glob.js.map +0 -1
  252. package/dist/lib/agent/tools/grep.js +0 -315
  253. package/dist/lib/agent/tools/grep.js.map +0 -1
  254. package/dist/lib/agent/tools/index.js +0 -71
  255. package/dist/lib/agent/tools/index.js.map +0 -1
  256. package/dist/lib/agent/tools/read.js +0 -212
  257. package/dist/lib/agent/tools/read.js.map +0 -1
  258. package/dist/lib/agent/tools/types.js +0 -197
  259. package/dist/lib/agent/tools/types.js.map +0 -1
  260. package/dist/lib/agent/tools/write.js +0 -159
  261. package/dist/lib/agent/tools/write.js.map +0 -1
  262. package/dist/lib/mixins/index.js +0 -29
  263. package/dist/lib/mixins/index.js.map +0 -1
  264. package/dist/primitives/bashx/src/ast/analyze.js +0 -1472
  265. package/dist/primitives/bashx/src/ast/analyze.js.map +0 -1
  266. package/dist/primitives/bashx/src/ast/parser.js +0 -1488
  267. package/dist/primitives/bashx/src/ast/parser.js.map +0 -1
  268. package/dist/primitives/bashx/src/do/commands/crypto.js +0 -1954
  269. package/dist/primitives/bashx/src/do/commands/crypto.js.map +0 -1
  270. package/dist/primitives/bashx/src/do/commands/data-processing.js +0 -1812
  271. package/dist/primitives/bashx/src/do/commands/data-processing.js.map +0 -1
  272. package/dist/primitives/bashx/src/do/commands/extended-utils.js +0 -804
  273. package/dist/primitives/bashx/src/do/commands/extended-utils.js.map +0 -1
  274. package/dist/primitives/bashx/src/do/commands/math-control.js +0 -1122
  275. package/dist/primitives/bashx/src/do/commands/math-control.js.map +0 -1
  276. package/dist/primitives/bashx/src/do/commands/posix-utils.js +0 -1015
  277. package/dist/primitives/bashx/src/do/commands/posix-utils.js.map +0 -1
  278. package/dist/primitives/bashx/src/do/commands/system-utils.js +0 -687
  279. package/dist/primitives/bashx/src/do/commands/system-utils.js.map +0 -1
  280. package/dist/primitives/bashx/src/do/commands/test-command.js +0 -523
  281. package/dist/primitives/bashx/src/do/commands/test-command.js.map +0 -1
  282. package/dist/primitives/bashx/src/do/commands/text-processing.js +0 -1550
  283. package/dist/primitives/bashx/src/do/commands/text-processing.js.map +0 -1
  284. package/dist/primitives/bashx/src/do/container-executor.js +0 -429
  285. package/dist/primitives/bashx/src/do/container-executor.js.map +0 -1
  286. package/dist/primitives/bashx/src/do/index.js +0 -668
  287. package/dist/primitives/bashx/src/do/index.js.map +0 -1
  288. package/dist/primitives/bashx/src/do/tiered-executor.js +0 -2647
  289. package/dist/primitives/bashx/src/do/tiered-executor.js.map +0 -1
  290. package/dist/primitives/bashx/src/do/worker.js +0 -352
  291. package/dist/primitives/bashx/src/do/worker.js.map +0 -1
  292. package/dist/primitives/bashx/src/types.js +0 -10
  293. package/dist/primitives/bashx/src/types.js.map +0 -1
  294. package/dist/primitives/fsx/core/backend.js +0 -480
  295. package/dist/primitives/fsx/core/backend.js.map +0 -1
  296. package/dist/primitives/fsx/core/constants.js +0 -140
  297. package/dist/primitives/fsx/core/constants.js.map +0 -1
  298. package/dist/primitives/fsx/core/fsx.js +0 -1184
  299. package/dist/primitives/fsx/core/fsx.js.map +0 -1
  300. package/dist/primitives/fsx/core/glob/glob.js +0 -438
  301. package/dist/primitives/fsx/core/glob/glob.js.map +0 -1
  302. package/dist/primitives/fsx/core/glob/index.js +0 -8
  303. package/dist/primitives/fsx/core/glob/index.js.map +0 -1
  304. package/dist/primitives/fsx/core/glob/match.js +0 -392
  305. package/dist/primitives/fsx/core/glob/match.js.map +0 -1
  306. package/dist/primitives/fsx/core/types.js +0 -307
  307. package/dist/primitives/fsx/core/types.js.map +0 -1
  308. package/dist/sdk/capnweb-compat.js +0 -42
  309. package/dist/sdk/capnweb-compat.js.map +0 -1
  310. package/dist/sdk/client.js +0 -20
  311. package/dist/sdk/client.js.map +0 -1
  312. package/dist/sdk/index.js +0 -17
  313. package/dist/sdk/index.js.map +0 -1
@@ -1,392 +0,0 @@
1
- /**
2
- * Pattern matching for glob patterns
3
- *
4
- * This module provides functions for matching file paths against glob patterns.
5
- * Supports standard glob syntax: *, **, ?, [abc], [a-z], [!abc], {a,b,c}
6
- */
7
- /**
8
- * Escape special regex characters
9
- */
10
- function escapeRegex(str) {
11
- return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
12
- }
13
- /**
14
- * Convert a single pattern segment to regex
15
- * Handles: *, ?, [abc], [!abc], [a-z], {a,b,c}
16
- */
17
- function segmentToRegex(segment, options) {
18
- let result = '';
19
- let i = 0;
20
- const dot = options.dot ?? false;
21
- while (i < segment.length) {
22
- const char = segment[i];
23
- if (char === '*') {
24
- // * matches anything except path separator
25
- // If at start and not dot mode, don't match dotfiles
26
- if (i === 0 && !dot) {
27
- result += '(?!\\.)[^/]*';
28
- }
29
- else {
30
- result += '[^/]*';
31
- }
32
- i++;
33
- }
34
- else if (char === '?') {
35
- // ? matches single char except path separator
36
- // If at start and not dot mode, don't match dotfiles
37
- if (i === 0 && !dot) {
38
- result += '(?!\\.)[^/]';
39
- }
40
- else {
41
- result += '[^/]';
42
- }
43
- i++;
44
- }
45
- else if (char === '[') {
46
- // Character class - find the closing ]
47
- const classStart = i;
48
- i++;
49
- // Check for negation
50
- let negated = false;
51
- if (segment[i] === '!' || segment[i] === '^') {
52
- negated = true;
53
- i++;
54
- }
55
- // Find closing bracket (handle ] as first char in class)
56
- let classContent = '';
57
- let firstChar = true;
58
- while (i < segment.length && (segment[i] !== ']' || firstChar)) {
59
- classContent += segment[i];
60
- firstChar = false;
61
- i++;
62
- }
63
- if (segment[i] === ']') {
64
- i++; // consume ]
65
- // Build character class
66
- // Escape special regex chars inside class (but not - or ^)
67
- let escapedContent = '';
68
- for (let j = 0; j < classContent.length; j++) {
69
- const c = classContent[j];
70
- // Escape special chars except - (which has special meaning)
71
- if (c === '\\' || c === ']' || c === '^') {
72
- escapedContent += '\\' + c;
73
- }
74
- else {
75
- escapedContent += c;
76
- }
77
- }
78
- result += negated ? `[^${escapedContent}]` : `[${escapedContent}]`;
79
- }
80
- else {
81
- // No closing bracket, treat as literal
82
- result += escapeRegex(segment.slice(classStart));
83
- }
84
- }
85
- else if (char === '{') {
86
- // Brace expansion - find closing }
87
- const braceStart = i;
88
- i++;
89
- let depth = 1;
90
- let braceContent = '';
91
- while (i < segment.length && depth > 0) {
92
- if (segment[i] === '{')
93
- depth++;
94
- else if (segment[i] === '}')
95
- depth--;
96
- if (depth > 0) {
97
- braceContent += segment[i];
98
- }
99
- i++;
100
- }
101
- if (depth === 0) {
102
- // Split by comma and convert each alternative
103
- const alternatives = splitBraceContent(braceContent);
104
- const altRegexes = alternatives.map(alt => segmentToRegex(alt, { ...options, dot: true }));
105
- result += `(?:${altRegexes.join('|')})`;
106
- }
107
- else {
108
- // No closing brace, treat as literal
109
- result += escapeRegex(segment.slice(braceStart));
110
- }
111
- }
112
- else if (char === '\\' && i + 1 < segment.length) {
113
- // Escaped character - treat next char literally
114
- const nextChar = segment[i + 1];
115
- if (nextChar !== undefined) {
116
- result += escapeRegex(nextChar);
117
- }
118
- i += 2;
119
- }
120
- else {
121
- // Literal character
122
- result += escapeRegex(char);
123
- i++;
124
- }
125
- }
126
- return result;
127
- }
128
- /**
129
- * Split brace content by comma, handling nested braces
130
- */
131
- function splitBraceContent(content) {
132
- const parts = [];
133
- let current = '';
134
- let depth = 0;
135
- for (let i = 0; i < content.length; i++) {
136
- const char = content[i];
137
- if (char === '{') {
138
- depth++;
139
- current += char;
140
- }
141
- else if (char === '}') {
142
- depth--;
143
- current += char;
144
- }
145
- else if (char === ',' && depth === 0) {
146
- parts.push(current);
147
- current = '';
148
- }
149
- else {
150
- current += char;
151
- }
152
- }
153
- parts.push(current);
154
- return parts;
155
- }
156
- /**
157
- * Compile a pattern for efficient reuse
158
- */
159
- function compilePattern(pattern, options = {}) {
160
- if (pattern === '') {
161
- throw new Error('Pattern cannot be empty');
162
- }
163
- // Handle negation
164
- let isNegated = false;
165
- let workingPattern = pattern;
166
- while (workingPattern.startsWith('!')) {
167
- isNegated = !isNegated;
168
- workingPattern = workingPattern.slice(1);
169
- }
170
- // Handle special case of just "/"
171
- if (workingPattern === '/') {
172
- return {
173
- pattern,
174
- isNegated,
175
- regex: /^\/$/,
176
- segments: ['/'],
177
- hasGlobstar: false,
178
- options,
179
- };
180
- }
181
- // Split pattern into segments
182
- const segments = workingPattern.split('/').filter((s, i, arr) => {
183
- // Keep empty strings for trailing slashes
184
- if (i === arr.length - 1 && s === '')
185
- return true;
186
- return s !== '';
187
- });
188
- // Check if pattern has globstar
189
- const hasGlobstar = segments.some(s => s === '**');
190
- // If no globstar, we can compile to a single regex
191
- if (!hasGlobstar) {
192
- const regexParts = segments.map(seg => segmentToRegex(seg, options));
193
- const regexStr = '^' + regexParts.join('/') + '$';
194
- const flags = options.nocase ? 'i' : '';
195
- return {
196
- pattern,
197
- isNegated,
198
- regex: new RegExp(regexStr, flags),
199
- segments,
200
- hasGlobstar: false,
201
- options,
202
- };
203
- }
204
- // Has globstar - we'll use segment matching
205
- return {
206
- pattern,
207
- isNegated,
208
- regex: null,
209
- segments,
210
- hasGlobstar: true,
211
- options,
212
- };
213
- }
214
- /**
215
- * Match a single segment pattern against a path segment
216
- */
217
- function matchSegment(patternSeg, pathSeg, options) {
218
- const regexStr = '^' + segmentToRegex(patternSeg, options) + '$';
219
- const flags = options.nocase ? 'i' : '';
220
- const regex = new RegExp(regexStr, flags);
221
- return regex.test(pathSeg);
222
- }
223
- /**
224
- * Match path against compiled pattern with globstar support
225
- */
226
- function matchGlobstar(compiled, pathSegments) {
227
- const { segments: patternSegments, options } = compiled;
228
- const dot = options.dot ?? false;
229
- // Recursive helper with memoization
230
- function matchFrom(pi, pathi, memo) {
231
- const key = `${pi}:${pathi}`;
232
- if (memo.has(key))
233
- return memo.get(key);
234
- // Base cases
235
- if (pi === patternSegments.length && pathi === pathSegments.length) {
236
- memo.set(key, true);
237
- return true;
238
- }
239
- if (pi === patternSegments.length) {
240
- // Pattern exhausted but path remains
241
- memo.set(key, false);
242
- return false;
243
- }
244
- const patternSeg = patternSegments[pi];
245
- // Handle ** (globstar)
246
- if (patternSeg === '**') {
247
- // ** can match:
248
- // 1. Nothing (skip to next pattern segment)
249
- if (matchFrom(pi + 1, pathi, memo)) {
250
- memo.set(key, true);
251
- return true;
252
- }
253
- // 2. One or more path segments
254
- for (let j = pathi; j < pathSegments.length; j++) {
255
- const pathSegAtJ = pathSegments[j];
256
- // Check dotfile constraint for each segment ** matches
257
- if (!dot && pathSegAtJ?.startsWith('.')) {
258
- // ** shouldn't match dotfiles unless dot option
259
- // But we continue trying to match later segments
260
- }
261
- if (matchFrom(pi + 1, j + 1, memo)) {
262
- memo.set(key, true);
263
- return true;
264
- }
265
- // Also try consuming this segment and continuing with **
266
- if (matchFrom(pi, j + 1, memo)) {
267
- memo.set(key, true);
268
- return true;
269
- }
270
- }
271
- memo.set(key, false);
272
- return false;
273
- }
274
- // Path exhausted but pattern remains (and pattern is not **)
275
- if (pathi === pathSegments.length) {
276
- // Special case: trailing empty segment in pattern (for src/)
277
- if (patternSeg === '' && pi === patternSegments.length - 1) {
278
- memo.set(key, true);
279
- return true;
280
- }
281
- memo.set(key, false);
282
- return false;
283
- }
284
- const pathSeg = pathSegments[pathi];
285
- if (!pathSeg || !patternSeg) {
286
- memo.set(key, false);
287
- return false;
288
- }
289
- // Check dotfile constraint
290
- if (!dot && pathSeg.startsWith('.') && patternSeg !== pathSeg) {
291
- // If the segment starts with . and pattern doesn't literally match,
292
- // check if pattern starts with * or ?
293
- if (patternSeg.startsWith('*') || patternSeg.startsWith('?')) {
294
- memo.set(key, false);
295
- return false;
296
- }
297
- }
298
- // Match current segments
299
- if (matchSegment(patternSeg, pathSeg, options)) {
300
- const result = matchFrom(pi + 1, pathi + 1, memo);
301
- memo.set(key, result);
302
- return result;
303
- }
304
- memo.set(key, false);
305
- return false;
306
- }
307
- return matchFrom(0, 0, new Map());
308
- }
309
- /**
310
- * Match a path against a glob pattern
311
- *
312
- * @param pattern - The glob pattern to match against
313
- * @param path - The path to test
314
- * @param options - Matching options
315
- * @returns true if the path matches the pattern
316
- * @throws Error if pattern is empty
317
- *
318
- * @example
319
- * ```typescript
320
- * match('*.ts', 'foo.ts') // true
321
- * match('src/**\/*.ts', 'src/a/b.ts') // true
322
- * match('[abc].ts', 'a.ts') // true
323
- * match('*.{ts,js}', 'foo.js') // true
324
- * ```
325
- */
326
- export function match(pattern, path, options = {}) {
327
- if (pattern === '') {
328
- throw new Error('Pattern cannot be empty');
329
- }
330
- // Empty path never matches (except empty pattern which throws)
331
- if (path === '') {
332
- return false;
333
- }
334
- const compiled = compilePattern(pattern, options);
335
- // Handle simple regex match (no globstar)
336
- if (compiled.regex && !compiled.hasGlobstar) {
337
- const result = compiled.regex.test(path);
338
- return compiled.isNegated ? !result : result;
339
- }
340
- // Handle globstar matching
341
- const pathSegments = path.split('/').filter((s, i, arr) => {
342
- // Keep trailing empty segment
343
- if (i === arr.length - 1 && s === '' && path.endsWith('/'))
344
- return true;
345
- return s !== '';
346
- });
347
- const result = matchGlobstar(compiled, pathSegments);
348
- return compiled.isNegated ? !result : result;
349
- }
350
- /**
351
- * Create a reusable matcher function for a pattern
352
- *
353
- * More efficient when matching many paths against the same pattern,
354
- * as the pattern is only parsed once.
355
- *
356
- * @param pattern - The glob pattern to compile
357
- * @param options - Matching options
358
- * @returns A function that tests paths against the compiled pattern
359
- * @throws Error if pattern is empty
360
- *
361
- * @example
362
- * ```typescript
363
- * const isTypeScript = createMatcher('**\/*.ts')
364
- * isTypeScript('src/index.ts') // true
365
- * isTypeScript('README.md') // false
366
- * ```
367
- */
368
- export function createMatcher(pattern, options = {}) {
369
- if (pattern === '') {
370
- throw new Error('Pattern cannot be empty');
371
- }
372
- const compiled = compilePattern(pattern, options);
373
- return (path) => {
374
- if (path === '') {
375
- return false;
376
- }
377
- // Handle simple regex match (no globstar)
378
- if (compiled.regex && !compiled.hasGlobstar) {
379
- const result = compiled.regex.test(path);
380
- return compiled.isNegated ? !result : result;
381
- }
382
- // Handle globstar matching
383
- const pathSegments = path.split('/').filter((s, i, arr) => {
384
- if (i === arr.length - 1 && s === '' && path.endsWith('/'))
385
- return true;
386
- return s !== '';
387
- });
388
- const result = matchGlobstar(compiled, pathSegments);
389
- return compiled.isNegated ? !result : result;
390
- };
391
- }
392
- //# sourceMappingURL=match.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"match.js","sourceRoot":"","sources":["../../../../../primitives/fsx/core/glob/match.ts"],"names":[],"mappings":"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"}