@sureshdsk/devflow-mcp 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +4 -4
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
  6. package/.next/standalone/.next/server/app/_global-error/page.js +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.html +2 -2
  9. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
  16. package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
  17. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.rsc +14 -13
  21. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +14 -13
  22. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  23. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +5 -4
  24. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  25. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  26. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  27. package/.next/standalone/.next/server/app/api/projects/[id]/route.js +2 -2
  28. package/.next/standalone/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/projects/route.js +2 -2
  30. package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/specs/[name]/artifacts/[artifactType]/approve/route.js +2 -2
  32. package/.next/standalone/.next/server/app/api/specs/[name]/artifacts/[artifactType]/approve/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/specs/[name]/artifacts/[artifactType]/route.js +2 -2
  34. package/.next/standalone/.next/server/app/api/specs/[name]/artifacts/[artifactType]/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/specs/[name]/promote/route.js +2 -2
  36. package/.next/standalone/.next/server/app/api/specs/[name]/promote/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/specs/[name]/route.js +2 -2
  38. package/.next/standalone/.next/server/app/api/specs/[name]/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/specs/route.js +2 -2
  40. package/.next/standalone/.next/server/app/api/specs/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/tasks/[id]/route.js +2 -2
  42. package/.next/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/tasks/route.js +2 -2
  44. package/.next/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/index.html +1 -1
  46. package/.next/standalone/.next/server/app/index.rsc +15 -14
  47. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  48. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -14
  49. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  50. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +5 -4
  51. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  52. package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
  53. package/.next/standalone/.next/server/app/page.js +2 -2
  54. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/specs/[name]/page/build-manifest.json +2 -2
  57. package/.next/standalone/.next/server/app/specs/[name]/page.js +2 -2
  58. package/.next/standalone/.next/server/app/specs/[name]/page.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/specs/[name]/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0be0eb8b._.js +3 -0
  61. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__a9d478ee._.js → [root-of-the-server]__160c54ca._.js} +2 -2
  62. package/.next/standalone/.next/server/chunks/[root-of-the-server]__17ac51e3._.js +3 -0
  63. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bb083e9._.js +3 -0
  64. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1dc1e944._.js +3 -0
  65. package/.next/standalone/.next/server/chunks/[root-of-the-server]__22ecfa2c._.js +3 -0
  66. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__13a93eb6._.js → [root-of-the-server]__64710c0d._.js} +2 -2
  67. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a2b7e5f2._.js +3 -0
  68. package/.next/standalone/.next/server/chunks/[root-of-the-server]__cf302bda._.js +3 -0
  69. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d85482cd._.js +3 -0
  70. package/.next/standalone/.next/server/chunks/[root-of-the-server]__dfa21757._.js +3 -0
  71. package/.next/standalone/.next/server/chunks/_3f452afe._.js +2 -2
  72. package/.next/standalone/.next/server/chunks/src_db_index_ts_a71f50f0._.js +3 -0
  73. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__023e2c69._.js +3 -0
  74. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0a1a1435._.js +3 -0
  75. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0c49a387._.js +3 -0
  76. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1be1fc5f._.js +3 -0
  77. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3a2f2efb._.js +3 -0
  78. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4693399c._.js +3 -0
  79. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__937c9212._.js → [root-of-the-server]__72a14301._.js} +2 -2
  80. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__8064ca06._.js +3 -0
  81. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__8b786d48._.js +3 -0
  82. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__8c052461._.js +3 -0
  83. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__8d306066._.js +3 -0
  84. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9532fd59._.js +3 -0
  85. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__a119dd75._.js +3 -0
  86. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__7fb6ef14._.js → [root-of-the-server]__a57b312b._.js} +2 -2
  87. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__a80bd0ea._.js +3 -0
  88. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__abe095b3._.js +3 -0
  89. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__ad3bd783._.js +3 -0
  90. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1e05fe0e._.js → [root-of-the-server]__ae9f05d6._.js} +2 -2
  91. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__c8781469._.js +3 -0
  92. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__c8a25070._.js +3 -0
  93. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__e8c1e595._.js +3 -0
  94. package/.next/standalone/.next/server/chunks/ssr/_0ff3de19._.js +1 -1
  95. package/.next/standalone/.next/server/chunks/ssr/node_modules_01a5cd4b._.js +3 -0
  96. package/.next/standalone/.next/server/chunks/ssr/node_modules_05c6819f._.js +31 -0
  97. package/.next/standalone/.next/server/chunks/ssr/node_modules_06c2c30a._.js +3 -0
  98. package/.next/standalone/.next/server/chunks/ssr/node_modules_09efe605._.js +3 -0
  99. package/.next/standalone/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_ef601841._.js → node_modules_0a439e3b._.js} +2 -2
  100. package/.next/standalone/.next/server/chunks/ssr/{node_modules_3507b41a._.js → node_modules_0e73ad6c._.js} +3 -3
  101. package/.next/standalone/.next/server/chunks/ssr/node_modules_0e7ff06d._.js +3 -0
  102. package/.next/standalone/.next/server/chunks/ssr/node_modules_0f73e25c._.js +3 -0
  103. package/.next/standalone/.next/server/chunks/ssr/node_modules_14cf9cea._.js +3 -0
  104. package/.next/standalone/.next/server/chunks/ssr/node_modules_19801f01._.js +3 -0
  105. package/.next/standalone/.next/server/chunks/ssr/node_modules_2235b8cf._.js +17 -0
  106. package/.next/standalone/.next/server/chunks/ssr/node_modules_23096c6d._.js +3 -0
  107. package/.next/standalone/.next/server/chunks/ssr/node_modules_23db4cf7._.js +17 -0
  108. package/.next/standalone/.next/server/chunks/ssr/node_modules_24381e95._.js +3 -0
  109. package/.next/standalone/.next/server/chunks/ssr/node_modules_24ca0eb6._.js +17 -0
  110. package/.next/standalone/.next/server/chunks/ssr/node_modules_27525793._.js +17 -0
  111. package/.next/standalone/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_4cfa6360._.js → node_modules_27c20382._.js} +2 -2
  112. package/.next/standalone/.next/server/chunks/ssr/node_modules_2c901b92._.js +3 -0
  113. package/.next/standalone/.next/server/chunks/ssr/node_modules_33b818b7._.js +45 -0
  114. package/.next/standalone/.next/server/chunks/ssr/node_modules_345d7791._.js +3 -0
  115. package/.next/standalone/.next/server/chunks/ssr/node_modules_36185c24._.js +45 -0
  116. package/.next/standalone/.next/server/chunks/ssr/node_modules_3ac7ce09._.js +3 -0
  117. package/.next/standalone/.next/server/chunks/ssr/node_modules_41b77cc7._.js +3 -0
  118. package/.next/standalone/.next/server/chunks/ssr/{node_modules_ed317ff6._.js → node_modules_42acd8db._.js} +2 -2
  119. package/.next/standalone/.next/server/chunks/ssr/node_modules_434aa5ec._.js +3 -0
  120. package/.next/standalone/.next/server/chunks/ssr/node_modules_54a9e72d._.js +17 -0
  121. package/.next/standalone/.next/server/chunks/ssr/node_modules_54f1273a._.js +26 -0
  122. package/.next/standalone/.next/server/chunks/ssr/node_modules_58d64491._.js +3 -0
  123. package/.next/standalone/.next/server/chunks/ssr/node_modules_5e012e3d._.js +3 -0
  124. package/.next/standalone/.next/server/chunks/ssr/node_modules_5ea9e4cf._.js +3 -0
  125. package/.next/standalone/.next/server/chunks/ssr/node_modules_5ecf8270._.js +26 -0
  126. package/.next/standalone/.next/server/chunks/ssr/node_modules_611c99b5._.js +1 -1
  127. package/.next/standalone/.next/server/chunks/ssr/{node_modules_d3-scale_src_e02ef77f._.js → node_modules_6629853d._.js} +2 -2
  128. package/.next/standalone/.next/server/chunks/ssr/node_modules_6fe2661c._.js +3 -0
  129. package/.next/standalone/.next/server/chunks/ssr/node_modules_7fe65a84._.js +3 -0
  130. package/.next/standalone/.next/server/chunks/ssr/node_modules_860f971a._.js +3 -0
  131. package/.next/standalone/.next/server/chunks/ssr/node_modules_882f3743._.js +3 -0
  132. package/.next/standalone/.next/server/chunks/ssr/node_modules_8e047938._.js +3 -0
  133. package/.next/standalone/.next/server/chunks/ssr/node_modules_9268cdc4._.js +3 -0
  134. package/.next/standalone/.next/server/chunks/ssr/node_modules_942541c9._.js +3 -0
  135. package/.next/standalone/.next/server/chunks/ssr/node_modules_9d52c0d6._.js +3 -0
  136. package/.next/standalone/.next/server/chunks/ssr/node_modules_@tanstack_query-core_build_modern_21ece5ea._.js +3 -0
  137. package/.next/standalone/.next/server/chunks/ssr/node_modules_ae6841d2._.js +17 -0
  138. package/.next/standalone/.next/server/chunks/ssr/node_modules_ba280bb0._.js +31 -0
  139. package/.next/standalone/.next/server/chunks/ssr/node_modules_bffdb8ec._.js +3 -0
  140. package/.next/standalone/.next/server/chunks/ssr/node_modules_c00f1821._.js +17 -0
  141. package/.next/standalone/.next/server/chunks/ssr/node_modules_c142ba86._.js +3 -0
  142. package/.next/standalone/.next/server/chunks/ssr/node_modules_d1a47cde._.js +17 -0
  143. package/.next/standalone/.next/server/chunks/ssr/node_modules_d9b454fe._.js +3 -0
  144. package/.next/standalone/.next/server/chunks/ssr/node_modules_dbe36b1d._.js +3 -0
  145. package/.next/standalone/.next/server/chunks/ssr/node_modules_ddbe26b7._.js +3 -0
  146. package/.next/standalone/.next/server/chunks/ssr/node_modules_e76b8bf2._.js +3 -0
  147. package/.next/standalone/.next/server/chunks/ssr/node_modules_e945b74d._.js +3 -0
  148. package/.next/standalone/.next/server/chunks/ssr/node_modules_fbd8a2ee._.js +17 -0
  149. package/.next/standalone/.next/server/chunks/ssr/node_modules_katex_dist_katex_mjs_31d456ba._.js +3 -0
  150. package/.next/standalone/.next/server/chunks/ssr/node_modules_katex_dist_katex_mjs_e1edc676._.js +3 -0
  151. package/.next/standalone/.next/server/chunks/ssr/node_modules_lodash-es_33e24dce._.js +3 -0
  152. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-QXUST7PY_mjs_159fba97._.js +1 -1
  153. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-S3R3BYOJ_mjs_dbeeb277._.js +1 -1
  154. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_mermaid_core_mjs_a11916de._.js +9 -0
  155. package/.next/standalone/.next/server/chunks/ssr/src_66a70595._.js +3 -0
  156. package/.next/standalone/.next/server/chunks/ssr/src_components_kanban-board_tsx_7b875e8e._.js +1 -1
  157. package/.next/standalone/.next/server/middleware-build-manifest.js +2 -2
  158. package/.next/standalone/.next/server/pages/404.html +1 -1
  159. package/.next/standalone/.next/server/pages/500.html +2 -2
  160. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  162. package/.next/standalone/AGENTS.md +13 -7
  163. package/.next/standalone/CONTRIBUTING.md +42 -26
  164. package/.next/standalone/README.md +166 -25
  165. package/.next/standalone/bin/devflow.js +12 -5
  166. package/.next/standalone/bun.lock +78 -24
  167. package/.next/standalone/devflow/project-config.json +4 -0
  168. package/.next/standalone/devflow/schemas/api-first/schema.yaml +39 -0
  169. package/.next/standalone/devflow/schemas/api-first/templates/api-design.md +41 -0
  170. package/.next/standalone/devflow/schemas/api-first/templates/db-design.md +28 -0
  171. package/.next/standalone/devflow/schemas/api-first/templates/final-architecture.md +31 -0
  172. package/.next/standalone/devflow/schemas/api-first/templates/proposal.md +22 -0
  173. package/.next/standalone/devflow/schemas/api-first/templates/tasks.md +16 -0
  174. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/.approvals.json +1 -1
  175. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/.meta.json +1 -1
  176. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/design.md +11 -0
  177. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/proposal.md +3 -0
  178. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/tasks.md +34 -2
  179. package/.next/standalone/devflow/specs/precommit/.approvals.json +26 -0
  180. package/.next/standalone/devflow/specs/precommit/.meta.json +7 -0
  181. package/.next/standalone/devflow/specs/precommit/design.md +105 -0
  182. package/.next/standalone/devflow/specs/precommit/proposal.md +43 -0
  183. package/.next/standalone/devflow/specs/precommit/specs.md +89 -0
  184. package/.next/standalone/devflow/specs/precommit/tasks.md +283 -0
  185. package/.next/standalone/docs/custom-schemas.md +117 -0
  186. package/.next/standalone/docs/local-dev-guide.md +73 -0
  187. package/.next/standalone/drizzle.config.ts +7 -7
  188. package/.next/standalone/eslint.config.mjs +2 -2
  189. package/.next/standalone/instrumentation.ts +3 -5
  190. package/.next/standalone/next.config.ts +11 -2
  191. package/.next/standalone/node_modules/{sharp → libsql}/node_modules/detect-libc/package.json +4 -8
  192. package/.next/standalone/package-lock.json +5257 -2085
  193. package/.next/standalone/package.json +16 -7
  194. package/.next/standalone/postcss.config.mjs +1 -1
  195. package/.next/standalone/scripts/init-db.js +3 -5
  196. package/.next/standalone/scripts/init-db.test.js +6 -6
  197. package/.next/standalone/scripts/init-schema.js +22 -22
  198. package/.next/standalone/scripts/init-schema.test.js +45 -45
  199. package/.next/standalone/scripts/install-environments.js +27 -8
  200. package/.next/standalone/scripts/install-environments.test.js +19 -10
  201. package/.next/standalone/scripts/install-skills.js +104 -31
  202. package/.next/standalone/scripts/install-skills.test.js +6 -6
  203. package/.next/standalone/server.js +1 -1
  204. package/.next/standalone/src/app/api/agents/route.ts +2 -2
  205. package/.next/standalone/src/app/api/projects/[id]/route.ts +10 -19
  206. package/.next/standalone/src/app/api/projects/route.ts +4 -10
  207. package/.next/standalone/src/app/api/specs/[name]/artifacts/[artifactType]/approve/route.ts +8 -8
  208. package/.next/standalone/src/app/api/specs/[name]/artifacts/[artifactType]/route.ts +14 -14
  209. package/.next/standalone/src/app/api/specs/[name]/promote/route.ts +17 -23
  210. package/.next/standalone/src/app/api/specs/[name]/route.ts +34 -36
  211. package/.next/standalone/src/app/api/specs/route.ts +10 -10
  212. package/.next/standalone/src/app/api/tasks/[id]/route.ts +11 -33
  213. package/.next/standalone/src/app/api/tasks/route.ts +3 -6
  214. package/.next/standalone/src/app/globals.css +3 -3
  215. package/.next/standalone/src/app/layout.tsx +9 -5
  216. package/.next/standalone/src/app/page.tsx +1 -1
  217. package/.next/standalone/src/app/specs/[name]/page.tsx +26 -68
  218. package/.next/standalone/src/components/kanban-board.tsx +78 -157
  219. package/.next/standalone/src/components/kanban-column.tsx +10 -12
  220. package/.next/standalone/src/components/markdown-preview.tsx +36 -19
  221. package/.next/standalone/src/components/providers.tsx +20 -0
  222. package/.next/standalone/src/components/specs/artifact-dag-status.tsx +12 -14
  223. package/.next/standalone/src/components/specs/artifact-editor.tsx +55 -26
  224. package/.next/standalone/src/components/specs/spec-detail.tsx +48 -40
  225. package/.next/standalone/src/components/specs/spec-kanban-column.tsx +49 -68
  226. package/.next/standalone/src/components/specs/spec-modal.tsx +119 -83
  227. package/.next/standalone/src/components/task-card.tsx +34 -38
  228. package/.next/standalone/src/components/task-dialog.tsx +16 -31
  229. package/.next/standalone/src/components/ui/badge.tsx +12 -18
  230. package/.next/standalone/src/components/ui/button.tsx +23 -28
  231. package/.next/standalone/src/components/ui/card.tsx +42 -62
  232. package/.next/standalone/src/components/ui/dialog.tsx +17 -35
  233. package/.next/standalone/src/db/index.ts +10 -10
  234. package/.next/standalone/src/db/schema.ts +37 -37
  235. package/.next/standalone/src/hooks/use-queries.ts +81 -0
  236. package/.next/standalone/src/hooks/use-websocket.ts +74 -0
  237. package/.next/standalone/src/lib/schema.test.ts +37 -37
  238. package/.next/standalone/src/lib/schema.ts +77 -31
  239. package/.next/standalone/src/lib/specs-dir.ts +8 -8
  240. package/.next/standalone/src/lib/specs.ts +98 -92
  241. package/.next/standalone/src/lib/utils.ts +2 -2
  242. package/.next/standalone/src/mcp/server.ts +556 -349
  243. package/.next/standalone/src/mcp/websocket.ts +26 -23
  244. package/.next/standalone/src/schemas/backend-api/templates/proposal.md +6 -4
  245. package/.next/standalone/src/schemas/backend-api/templates/tasks.md +6 -0
  246. package/.next/standalone/src/schemas/data-engineering/templates/proposal.md +6 -4
  247. package/.next/standalone/src/schemas/data-engineering/templates/tasks.md +6 -0
  248. package/.next/standalone/src/schemas/devops-platform/templates/proposal.md +6 -4
  249. package/.next/standalone/src/schemas/devops-platform/templates/tasks.md +6 -0
  250. package/.next/standalone/src/schemas/frontend-product/templates/proposal.md +6 -4
  251. package/.next/standalone/src/schemas/frontend-product/templates/tasks.md +6 -0
  252. package/.next/standalone/src/schemas/spec-driven/templates/proposal.md +6 -4
  253. package/.next/standalone/src/schemas/spec-driven/templates/tasks.md +26 -0
  254. package/.next/standalone/src/websocket/server.ts +20 -18
  255. package/.next/standalone/tsconfig.json +3 -12
  256. package/.next/standalone/tsconfig.tsbuildinfo +1 -1
  257. package/.next/static/chunks/4f23f64d46848f57.js +1 -0
  258. package/.next/static/chunks/53081dcdcad4f31e.js +1 -0
  259. package/.next/static/chunks/{6a3d582315f1c214.js → 701cfcbb41e0ab47.js} +1 -1
  260. package/.next/static/chunks/ac4b6b4d5b7e486e.css +1 -0
  261. package/.next/static/chunks/d0309ea872db5d9f.js +1 -0
  262. package/.next/static/chunks/d4cf8893a018e965.js +1 -0
  263. package/.next/static/chunks/e6c0233269a4bd69.js +13 -0
  264. package/.next/static/chunks/{7e65cfa9841f66a5.js → e7d83ce855afe416.js} +2 -2
  265. package/.next/static/chunks/ee7035560fc9e5e9.js +1 -0
  266. package/.next/static/chunks/{turbopack-f4d3806ab575051d.js → turbopack-8b3b66a22a5e0fb4.js} +2 -2
  267. package/README.md +166 -25
  268. package/bin/devflow.js +12 -5
  269. package/drizzle.config.ts +7 -7
  270. package/next.config.ts +11 -2
  271. package/package.json +16 -7
  272. package/scripts/init-db.js +3 -5
  273. package/scripts/init-db.test.js +6 -6
  274. package/scripts/init-schema.js +22 -22
  275. package/scripts/init-schema.test.js +45 -45
  276. package/scripts/install-environments.js +27 -8
  277. package/scripts/install-environments.test.js +19 -10
  278. package/scripts/install-skills.js +104 -31
  279. package/scripts/install-skills.test.js +6 -6
  280. package/src/app/api/agents/route.ts +2 -2
  281. package/src/app/api/projects/[id]/route.ts +10 -19
  282. package/src/app/api/projects/route.ts +4 -10
  283. package/src/app/api/specs/[name]/artifacts/[artifactType]/approve/route.ts +8 -8
  284. package/src/app/api/specs/[name]/artifacts/[artifactType]/route.ts +14 -14
  285. package/src/app/api/specs/[name]/promote/route.ts +17 -23
  286. package/src/app/api/specs/[name]/route.ts +34 -36
  287. package/src/app/api/specs/route.ts +10 -10
  288. package/src/app/api/tasks/[id]/route.ts +11 -33
  289. package/src/app/api/tasks/route.ts +3 -6
  290. package/src/app/globals.css +3 -3
  291. package/src/app/layout.tsx +9 -5
  292. package/src/app/page.tsx +1 -1
  293. package/src/app/specs/[name]/page.tsx +26 -68
  294. package/src/components/kanban-board.tsx +78 -157
  295. package/src/components/kanban-column.tsx +10 -12
  296. package/src/components/markdown-preview.tsx +36 -19
  297. package/src/components/providers.tsx +20 -0
  298. package/src/components/specs/artifact-dag-status.tsx +12 -14
  299. package/src/components/specs/artifact-editor.tsx +55 -26
  300. package/src/components/specs/spec-detail.tsx +48 -40
  301. package/src/components/specs/spec-kanban-column.tsx +49 -68
  302. package/src/components/specs/spec-modal.tsx +119 -83
  303. package/src/components/task-card.tsx +34 -38
  304. package/src/components/task-dialog.tsx +16 -31
  305. package/src/components/ui/badge.tsx +12 -18
  306. package/src/components/ui/button.tsx +23 -28
  307. package/src/components/ui/card.tsx +42 -62
  308. package/src/components/ui/dialog.tsx +17 -35
  309. package/src/db/index.ts +10 -10
  310. package/src/db/schema.ts +37 -37
  311. package/src/hooks/use-queries.ts +81 -0
  312. package/src/hooks/use-websocket.ts +74 -0
  313. package/src/lib/schema.test.ts +37 -37
  314. package/src/lib/schema.ts +77 -31
  315. package/src/lib/specs-dir.ts +8 -8
  316. package/src/lib/specs.ts +98 -92
  317. package/src/lib/utils.ts +2 -2
  318. package/src/mcp/server.ts +556 -349
  319. package/src/mcp/websocket.ts +26 -23
  320. package/src/schemas/backend-api/templates/proposal.md +6 -4
  321. package/src/schemas/backend-api/templates/tasks.md +6 -0
  322. package/src/schemas/data-engineering/templates/proposal.md +6 -4
  323. package/src/schemas/data-engineering/templates/tasks.md +6 -0
  324. package/src/schemas/devops-platform/templates/proposal.md +6 -4
  325. package/src/schemas/devops-platform/templates/tasks.md +6 -0
  326. package/src/schemas/frontend-product/templates/proposal.md +6 -4
  327. package/src/schemas/frontend-product/templates/tasks.md +6 -0
  328. package/src/schemas/spec-driven/templates/proposal.md +6 -4
  329. package/src/schemas/spec-driven/templates/tasks.md +26 -0
  330. package/src/types/bun-sqlite.d.ts +1 -1
  331. package/src/websocket/server.ts +20 -18
  332. package/tsconfig.json +3 -12
  333. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1be4e4b6._.js +0 -3
  334. package/.next/standalone/.next/server/chunks/[root-of-the-server]__492a4a24._.js +0 -3
  335. package/.next/standalone/.next/server/chunks/[root-of-the-server]__67c59ae1._.js +0 -3
  336. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6cc7aecd._.js +0 -3
  337. package/.next/standalone/.next/server/chunks/[root-of-the-server]__83a77b07._.js +0 -3
  338. package/.next/standalone/.next/server/chunks/[root-of-the-server]__88d91cb5._.js +0 -3
  339. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a9e095e8._.js +0 -3
  340. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b367d327._.js +0 -3
  341. package/.next/standalone/.next/server/chunks/[root-of-the-server]__eb413bbc._.js +0 -3
  342. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b8c072a._.js +0 -3
  343. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12b2191f._.js +0 -3
  344. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15316462._.js +0 -3
  345. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__19c9c409._.js +0 -3
  346. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__19e5e22f._.js +0 -3
  347. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__25b5ccb3._.js +0 -3
  348. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__2f78c3da._.js +0 -3
  349. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3160b3f4._.js +0 -9
  350. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__319559be._.js +0 -3
  351. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__34f7cbcb._.js +0 -31
  352. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3abab94b._.js +0 -3
  353. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3b3d8930._.js +0 -3
  354. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4250799b._.js +0 -3
  355. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4c29cbc3._.js +0 -26
  356. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4e0bb6eb._.js +0 -9
  357. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__5678d2e3._.js +0 -3
  358. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__673445e0._.js +0 -31
  359. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__934de06b._.js +0 -3
  360. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9b6c6f09._.js +0 -3
  361. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__a1b83a98._.js +0 -3
  362. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b00a15c5._.js +0 -3
  363. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b8567be3._.js +0 -26
  364. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__ce64536e._.js +0 -45
  365. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__e96d33d2._.js +0 -45
  366. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__fd7ec054._.js +0 -3
  367. package/.next/standalone/.next/server/chunks/ssr/node_modules_16a3f9e7._.js +0 -17
  368. package/.next/standalone/.next/server/chunks/ssr/node_modules_45bce0e1._.js +0 -3
  369. package/.next/standalone/.next/server/chunks/ssr/node_modules_5e5a372d._.js +0 -17
  370. package/.next/standalone/.next/server/chunks/ssr/node_modules_6ece6f1e._.js +0 -3
  371. package/.next/standalone/.next/server/chunks/ssr/node_modules_d173e749._.js +0 -3
  372. package/.next/standalone/.next/server/chunks/ssr/node_modules_d3-shape_src_arc_fb1ac087.js +0 -3
  373. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_1f73a830._.js +0 -3
  374. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_663ac803._.js +0 -3
  375. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-FMBD7UC4_mjs_4f485529._.js +0 -17
  376. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-TZMSLE5B_mjs_8436a62a._.js +0 -3
  377. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_f78d2dc4._.js +0 -3
  378. package/.next/standalone/.next/server/chunks/ssr/src_app_layout_tsx_cc8184fa._.js +0 -3
  379. package/.next/standalone/devflow/specs/add-default-schema-template-selection/.approvals.json +0 -26
  380. package/.next/standalone/devflow/specs/add-default-schema-template-selection/.meta.json +0 -8
  381. package/.next/standalone/devflow/specs/add-default-schema-template-selection/design.md +0 -126
  382. package/.next/standalone/devflow/specs/add-default-schema-template-selection/proposal.md +0 -65
  383. package/.next/standalone/devflow/specs/add-default-schema-template-selection/specs.md +0 -107
  384. package/.next/standalone/devflow/specs/add-default-schema-template-selection/tasks.md +0 -235
  385. package/.next/standalone/devflow/specs/test-no-project/.approvals.json +0 -17
  386. package/.next/standalone/devflow/specs/test-no-project/.meta.json +0 -6
  387. package/.next/standalone/devflow/specs/ui-cleanup/.approvals.json +0 -29
  388. package/.next/standalone/devflow/specs/ui-cleanup/.meta.json +0 -6
  389. package/.next/standalone/devflow/specs/ui-cleanup/design.md +0 -49
  390. package/.next/standalone/devflow/specs/ui-cleanup/proposal.md +0 -34
  391. package/.next/standalone/devflow/specs/ui-cleanup/specs.md +0 -55
  392. package/.next/standalone/devflow/specs/ui-cleanup/tasks.md +0 -28
  393. package/.next/standalone/node_modules/@img/colour/color.cjs +0 -1594
  394. package/.next/standalone/node_modules/@img/colour/index.cjs +0 -1
  395. package/.next/standalone/node_modules/@img/colour/package.json +0 -45
  396. package/.next/standalone/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  397. package/.next/standalone/node_modules/@img/sharp-darwin-arm64/package.json +0 -40
  398. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/README.md +0 -46
  399. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/lib/glib-2.0/include/glibconfig.h +0 -220
  400. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/lib/index.js +0 -1
  401. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib +0 -0
  402. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/package.json +0 -36
  403. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/versions.json +0 -30
  404. package/.next/standalone/node_modules/buffer-from/index.js +0 -72
  405. package/.next/standalone/node_modules/buffer-from/package.json +0 -19
  406. package/.next/standalone/node_modules/sharp/lib/channel.js +0 -177
  407. package/.next/standalone/node_modules/sharp/lib/colour.js +0 -195
  408. package/.next/standalone/node_modules/sharp/lib/composite.js +0 -212
  409. package/.next/standalone/node_modules/sharp/lib/constructor.js +0 -499
  410. package/.next/standalone/node_modules/sharp/lib/index.js +0 -16
  411. package/.next/standalone/node_modules/sharp/lib/input.js +0 -809
  412. package/.next/standalone/node_modules/sharp/lib/is.js +0 -143
  413. package/.next/standalone/node_modules/sharp/lib/libvips.js +0 -207
  414. package/.next/standalone/node_modules/sharp/lib/operation.js +0 -1016
  415. package/.next/standalone/node_modules/sharp/lib/output.js +0 -1666
  416. package/.next/standalone/node_modules/sharp/lib/resize.js +0 -595
  417. package/.next/standalone/node_modules/sharp/lib/sharp.js +0 -121
  418. package/.next/standalone/node_modules/sharp/lib/utility.js +0 -291
  419. package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/detect-libc.js +0 -313
  420. package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/elf.js +0 -39
  421. package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/filesystem.js +0 -51
  422. package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/process.js +0 -24
  423. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/comparator.js +0 -143
  424. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/range.js +0 -557
  425. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/semver.js +0 -333
  426. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/cmp.js +0 -54
  427. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/coerce.js +0 -62
  428. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/compare.js +0 -7
  429. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/eq.js +0 -5
  430. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gt.js +0 -5
  431. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gte.js +0 -5
  432. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lt.js +0 -5
  433. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lte.js +0 -5
  434. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/neq.js +0 -5
  435. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/parse.js +0 -18
  436. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/satisfies.js +0 -12
  437. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/constants.js +0 -37
  438. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/debug.js +0 -11
  439. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/identifiers.js +0 -29
  440. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/lrucache.js +0 -42
  441. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/parse-options.js +0 -17
  442. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/re.js +0 -223
  443. package/.next/standalone/node_modules/sharp/node_modules/semver/package.json +0 -78
  444. package/.next/standalone/node_modules/sharp/package.json +0 -202
  445. package/.next/standalone/node_modules/source-map/lib/array-set.js +0 -121
  446. package/.next/standalone/node_modules/source-map/lib/base64-vlq.js +0 -140
  447. package/.next/standalone/node_modules/source-map/lib/base64.js +0 -67
  448. package/.next/standalone/node_modules/source-map/lib/binary-search.js +0 -111
  449. package/.next/standalone/node_modules/source-map/lib/mapping-list.js +0 -79
  450. package/.next/standalone/node_modules/source-map/lib/quick-sort.js +0 -114
  451. package/.next/standalone/node_modules/source-map/lib/source-map-consumer.js +0 -1145
  452. package/.next/standalone/node_modules/source-map/lib/source-map-generator.js +0 -425
  453. package/.next/standalone/node_modules/source-map/lib/source-node.js +0 -413
  454. package/.next/standalone/node_modules/source-map/lib/util.js +0 -488
  455. package/.next/standalone/node_modules/source-map/package.json +0 -73
  456. package/.next/standalone/node_modules/source-map/source-map.js +0 -8
  457. package/.next/standalone/node_modules/source-map-support/LICENSE.md +0 -21
  458. package/.next/standalone/node_modules/source-map-support/README.md +0 -284
  459. package/.next/standalone/node_modules/source-map-support/browser-source-map-support.js +0 -114
  460. package/.next/standalone/node_modules/source-map-support/package.json +0 -31
  461. package/.next/standalone/node_modules/source-map-support/register-hook-require.js +0 -1
  462. package/.next/standalone/node_modules/source-map-support/register.js +0 -1
  463. package/.next/standalone/node_modules/source-map-support/source-map-support.js +0 -625
  464. package/.next/standalone/node_modules/typescript/lib/_tsc.js +0 -133818
  465. package/.next/standalone/node_modules/typescript/lib/_tsserver.js +0 -659
  466. package/.next/standalone/node_modules/typescript/lib/_typingsInstaller.js +0 -222
  467. package/.next/standalone/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
  468. package/.next/standalone/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
  469. package/.next/standalone/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
  470. package/.next/standalone/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
  471. package/.next/standalone/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
  472. package/.next/standalone/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
  473. package/.next/standalone/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
  474. package/.next/standalone/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
  475. package/.next/standalone/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
  476. package/.next/standalone/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
  477. package/.next/standalone/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
  478. package/.next/standalone/node_modules/typescript/lib/tsc.js +0 -8
  479. package/.next/standalone/node_modules/typescript/lib/tsserver.js +0 -8
  480. package/.next/standalone/node_modules/typescript/lib/tsserverlibrary.js +0 -21
  481. package/.next/standalone/node_modules/typescript/lib/typesMap.json +0 -497
  482. package/.next/standalone/node_modules/typescript/lib/typescript.js +0 -200276
  483. package/.next/standalone/node_modules/typescript/lib/typingsInstaller.js +0 -8
  484. package/.next/standalone/node_modules/typescript/lib/watchGuard.js +0 -53
  485. package/.next/standalone/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -2122
  486. package/.next/standalone/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -2122
  487. package/.next/standalone/node_modules/typescript/package.json +0 -120
  488. package/.next/standalone/src/components/ui/collapsible.tsx +0 -12
  489. package/.next/standalone/src/components/ui/sheet.tsx +0 -130
  490. package/.next/standalone/src/components/ui/tabs.tsx +0 -58
  491. package/.next/static/chunks/0177331b8adf7346.js +0 -7
  492. package/.next/static/chunks/06af74e2f3e207c5.js +0 -7
  493. package/.next/static/chunks/1748d5cd2443723b.css +0 -1
  494. package/.next/static/chunks/7ae917cb100be2b9.js +0 -7
  495. package/.next/static/chunks/7c4b901b394c3a8c.js +0 -7
  496. package/src/components/ui/collapsible.tsx +0 -12
  497. package/src/components/ui/sheet.tsx +0 -130
  498. package/src/components/ui/tabs.tsx +0 -58
  499. /package/.next/standalone/node_modules/{detect-libc → libsql/node_modules/detect-libc}/lib/detect-libc.js +0 -0
  500. /package/.next/standalone/node_modules/{detect-libc → libsql/node_modules/detect-libc}/lib/filesystem.js +0 -0
  501. /package/.next/standalone/node_modules/{detect-libc → libsql/node_modules/detect-libc}/lib/process.js +0 -0
  502. /package/.next/static/{5YFrdIQd1UU2IxLxekrU9 → Ql6qo0GYLL23WRu6ec4N5}/_buildManifest.js +0 -0
  503. /package/.next/static/{5YFrdIQd1UU2IxLxekrU9 → Ql6qo0GYLL23WRu6ec4N5}/_clientMiddlewareManifest.json +0 -0
  504. /package/.next/static/{5YFrdIQd1UU2IxLxekrU9 → Ql6qo0GYLL23WRu6ec4N5}/_ssgManifest.js +0 -0
@@ -1,223 +0,0 @@
1
- 'use strict'
2
-
3
- const {
4
- MAX_SAFE_COMPONENT_LENGTH,
5
- MAX_SAFE_BUILD_LENGTH,
6
- MAX_LENGTH,
7
- } = require('./constants')
8
- const debug = require('./debug')
9
- exports = module.exports = {}
10
-
11
- // The actual regexps go on exports.re
12
- const re = exports.re = []
13
- const safeRe = exports.safeRe = []
14
- const src = exports.src = []
15
- const safeSrc = exports.safeSrc = []
16
- const t = exports.t = {}
17
- let R = 0
18
-
19
- const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
20
-
21
- // Replace some greedy regex tokens to prevent regex dos issues. These regex are
22
- // used internally via the safeRe object since all inputs in this library get
23
- // normalized first to trim and collapse all extra whitespace. The original
24
- // regexes are exported for userland consumption and lower level usage. A
25
- // future breaking change could export the safer regex only with a note that
26
- // all input should have extra whitespace removed.
27
- const safeRegexReplacements = [
28
- ['\\s', 1],
29
- ['\\d', MAX_LENGTH],
30
- [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
31
- ]
32
-
33
- const makeSafeRegex = (value) => {
34
- for (const [token, max] of safeRegexReplacements) {
35
- value = value
36
- .split(`${token}*`).join(`${token}{0,${max}}`)
37
- .split(`${token}+`).join(`${token}{1,${max}}`)
38
- }
39
- return value
40
- }
41
-
42
- const createToken = (name, value, isGlobal) => {
43
- const safe = makeSafeRegex(value)
44
- const index = R++
45
- debug(name, index, value)
46
- t[name] = index
47
- src[index] = value
48
- safeSrc[index] = safe
49
- re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
50
- safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)
51
- }
52
-
53
- // The following Regular Expressions can be used for tokenizing,
54
- // validating, and parsing SemVer version strings.
55
-
56
- // ## Numeric Identifier
57
- // A single `0`, or a non-zero digit followed by zero or more digits.
58
-
59
- createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
60
- createToken('NUMERICIDENTIFIERLOOSE', '\\d+')
61
-
62
- // ## Non-numeric Identifier
63
- // Zero or more digits, followed by a letter or hyphen, and then zero or
64
- // more letters, digits, or hyphens.
65
-
66
- createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)
67
-
68
- // ## Main Version
69
- // Three dot-separated numeric identifiers.
70
-
71
- createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` +
72
- `(${src[t.NUMERICIDENTIFIER]})\\.` +
73
- `(${src[t.NUMERICIDENTIFIER]})`)
74
-
75
- createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
76
- `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
77
- `(${src[t.NUMERICIDENTIFIERLOOSE]})`)
78
-
79
- // ## Pre-release Version Identifier
80
- // A numeric identifier, or a non-numeric identifier.
81
- // Non-numberic identifiers include numberic identifiers but can be longer.
82
- // Therefore non-numberic identifiers must go first.
83
-
84
- createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]
85
- }|${src[t.NUMERICIDENTIFIER]})`)
86
-
87
- createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]
88
- }|${src[t.NUMERICIDENTIFIERLOOSE]})`)
89
-
90
- // ## Pre-release Version
91
- // Hyphen, followed by one or more dot-separated pre-release version
92
- // identifiers.
93
-
94
- createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]
95
- }(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`)
96
-
97
- createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
98
- }(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)
99
-
100
- // ## Build Metadata Identifier
101
- // Any combination of digits, letters, or hyphens.
102
-
103
- createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)
104
-
105
- // ## Build Metadata
106
- // Plus sign, followed by one or more period-separated build metadata
107
- // identifiers.
108
-
109
- createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER]
110
- }(?:\\.${src[t.BUILDIDENTIFIER]})*))`)
111
-
112
- // ## Full Version String
113
- // A main version, followed optionally by a pre-release version and
114
- // build metadata.
115
-
116
- // Note that the only major, minor, patch, and pre-release sections of
117
- // the version string are capturing groups. The build metadata is not a
118
- // capturing group, because it should not ever be used in version
119
- // comparison.
120
-
121
- createToken('FULLPLAIN', `v?${src[t.MAINVERSION]
122
- }${src[t.PRERELEASE]}?${
123
- src[t.BUILD]}?`)
124
-
125
- createToken('FULL', `^${src[t.FULLPLAIN]}$`)
126
-
127
- // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
128
- // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
129
- // common in the npm registry.
130
- createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE]
131
- }${src[t.PRERELEASELOOSE]}?${
132
- src[t.BUILD]}?`)
133
-
134
- createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)
135
-
136
- createToken('GTLT', '((?:<|>)?=?)')
137
-
138
- // Something like "2.*" or "1.2.x".
139
- // Note that "x.x" is a valid xRange identifer, meaning "any version"
140
- // Only the first item is strictly required.
141
- createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`)
142
- createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`)
143
-
144
- createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` +
145
- `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
146
- `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
147
- `(?:${src[t.PRERELEASE]})?${
148
- src[t.BUILD]}?` +
149
- `)?)?`)
150
-
151
- createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +
152
- `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
153
- `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
154
- `(?:${src[t.PRERELEASELOOSE]})?${
155
- src[t.BUILD]}?` +
156
- `)?)?`)
157
-
158
- createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`)
159
- createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
160
-
161
- // Coercion.
162
- // Extract anything that could conceivably be a part of a valid semver
163
- createToken('COERCEPLAIN', `${'(^|[^\\d])' +
164
- '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
165
- `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
166
- `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)
167
- createToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\d])`)
168
- createToken('COERCEFULL', src[t.COERCEPLAIN] +
169
- `(?:${src[t.PRERELEASE]})?` +
170
- `(?:${src[t.BUILD]})?` +
171
- `(?:$|[^\\d])`)
172
- createToken('COERCERTL', src[t.COERCE], true)
173
- createToken('COERCERTLFULL', src[t.COERCEFULL], true)
174
-
175
- // Tilde ranges.
176
- // Meaning is "reasonably at or greater than"
177
- createToken('LONETILDE', '(?:~>?)')
178
-
179
- createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true)
180
- exports.tildeTrimReplace = '$1~'
181
-
182
- createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)
183
- createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)
184
-
185
- // Caret ranges.
186
- // Meaning is "at least and backwards compatible with"
187
- createToken('LONECARET', '(?:\\^)')
188
-
189
- createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true)
190
- exports.caretTrimReplace = '$1^'
191
-
192
- createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)
193
- createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)
194
-
195
- // A simple gt/lt/eq thing, or just "" to indicate "any version"
196
- createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`)
197
- createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`)
198
-
199
- // An expression to strip any whitespace between the gtlt and the thing
200
- // it modifies, so that `> 1.2.3` ==> `>1.2.3`
201
- createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
202
- }\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)
203
- exports.comparatorTrimReplace = '$1$2$3'
204
-
205
- // Something like `1.2.3 - 1.2.4`
206
- // Note that these all use the loose form, because they'll be
207
- // checked against either the strict or loose comparator form
208
- // later.
209
- createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` +
210
- `\\s+-\\s+` +
211
- `(${src[t.XRANGEPLAIN]})` +
212
- `\\s*$`)
213
-
214
- createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` +
215
- `\\s+-\\s+` +
216
- `(${src[t.XRANGEPLAINLOOSE]})` +
217
- `\\s*$`)
218
-
219
- // Star ranges basically just allow anything at all.
220
- createToken('STAR', '(<|>)?=?\\s*\\*')
221
- // >=0.0.0 is like a star
222
- createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$')
223
- createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$')
@@ -1,78 +0,0 @@
1
- {
2
- "name": "semver",
3
- "version": "7.7.3",
4
- "description": "The semantic version parser used by npm.",
5
- "main": "index.js",
6
- "scripts": {
7
- "test": "tap",
8
- "snap": "tap",
9
- "lint": "npm run eslint",
10
- "postlint": "template-oss-check",
11
- "lintfix": "npm run eslint -- --fix",
12
- "posttest": "npm run lint",
13
- "template-oss-apply": "template-oss-apply --force",
14
- "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
15
- },
16
- "devDependencies": {
17
- "@npmcli/eslint-config": "^5.0.0",
18
- "@npmcli/template-oss": "4.25.1",
19
- "benchmark": "^2.1.4",
20
- "tap": "^16.0.0"
21
- },
22
- "license": "ISC",
23
- "repository": {
24
- "type": "git",
25
- "url": "git+https://github.com/npm/node-semver.git"
26
- },
27
- "bin": {
28
- "semver": "bin/semver.js"
29
- },
30
- "files": [
31
- "bin/",
32
- "lib/",
33
- "classes/",
34
- "functions/",
35
- "internal/",
36
- "ranges/",
37
- "index.js",
38
- "preload.js",
39
- "range.bnf"
40
- ],
41
- "tap": {
42
- "timeout": 30,
43
- "coverage-map": "map.js",
44
- "nyc-arg": [
45
- "--exclude",
46
- "tap-snapshots/**"
47
- ]
48
- },
49
- "engines": {
50
- "node": ">=10"
51
- },
52
- "author": "GitHub Inc.",
53
- "templateOSS": {
54
- "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
55
- "version": "4.25.1",
56
- "engines": ">=10",
57
- "distPaths": [
58
- "classes/",
59
- "functions/",
60
- "internal/",
61
- "ranges/",
62
- "index.js",
63
- "preload.js",
64
- "range.bnf"
65
- ],
66
- "allowPaths": [
67
- "/classes/",
68
- "/functions/",
69
- "/internal/",
70
- "/ranges/",
71
- "/index.js",
72
- "/preload.js",
73
- "/range.bnf",
74
- "/benchmarks"
75
- ],
76
- "publish": "true"
77
- }
78
- }
@@ -1,202 +0,0 @@
1
- {
2
- "name": "sharp",
3
- "description": "High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, GIF, AVIF and TIFF images",
4
- "version": "0.34.5",
5
- "author": "Lovell Fuller <npm@lovell.info>",
6
- "homepage": "https://sharp.pixelplumbing.com",
7
- "contributors": [
8
- "Pierre Inglebert <pierre.inglebert@gmail.com>",
9
- "Jonathan Ong <jonathanrichardong@gmail.com>",
10
- "Chanon Sajjamanochai <chanon.s@gmail.com>",
11
- "Juliano Julio <julianojulio@gmail.com>",
12
- "Daniel Gasienica <daniel@gasienica.ch>",
13
- "Julian Walker <julian@fiftythree.com>",
14
- "Amit Pitaru <pitaru.amit@gmail.com>",
15
- "Brandon Aaron <hello.brandon@aaron.sh>",
16
- "Andreas Lind <andreas@one.com>",
17
- "Maurus Cuelenaere <mcuelenaere@gmail.com>",
18
- "Linus Unnebäck <linus@folkdatorn.se>",
19
- "Victor Mateevitsi <mvictoras@gmail.com>",
20
- "Alaric Holloway <alaric.holloway@gmail.com>",
21
- "Bernhard K. Weisshuhn <bkw@codingforce.com>",
22
- "Chris Riley <criley@primedia.com>",
23
- "David Carley <dacarley@gmail.com>",
24
- "John Tobin <john@limelightmobileinc.com>",
25
- "Kenton Gray <kentongray@gmail.com>",
26
- "Felix Bünemann <Felix.Buenemann@gmail.com>",
27
- "Samy Al Zahrani <samyalzahrany@gmail.com>",
28
- "Chintan Thakkar <lemnisk8@gmail.com>",
29
- "F. Orlando Galashan <frulo@gmx.de>",
30
- "Kleis Auke Wolthuizen <info@kleisauke.nl>",
31
- "Matt Hirsch <mhirsch@media.mit.edu>",
32
- "Matthias Thoemmes <thoemmes@gmail.com>",
33
- "Patrick Paskaris <patrick@paskaris.gr>",
34
- "Jérémy Lal <kapouer@melix.org>",
35
- "Rahul Nanwani <r.nanwani@gmail.com>",
36
- "Alice Monday <alice0meta@gmail.com>",
37
- "Kristo Jorgenson <kristo.jorgenson@gmail.com>",
38
- "YvesBos <yves_bos@outlook.com>",
39
- "Guy Maliar <guy@tailorbrands.com>",
40
- "Nicolas Coden <nicolas@ncoden.fr>",
41
- "Matt Parrish <matt.r.parrish@gmail.com>",
42
- "Marcel Bretschneider <marcel.bretschneider@gmail.com>",
43
- "Matthew McEachen <matthew+github@mceachen.org>",
44
- "Jarda Kotěšovec <jarda.kotesovec@gmail.com>",
45
- "Kenric D'Souza <kenric.dsouza@gmail.com>",
46
- "Oleh Aleinyk <oleg.aleynik@gmail.com>",
47
- "Marcel Bretschneider <marcel.bretschneider@gmail.com>",
48
- "Andrea Bianco <andrea.bianco@unibas.ch>",
49
- "Rik Heywood <rik@rik.org>",
50
- "Thomas Parisot <hi@oncletom.io>",
51
- "Nathan Graves <nathanrgraves+github@gmail.com>",
52
- "Tom Lokhorst <tom@lokhorst.eu>",
53
- "Espen Hovlandsdal <espen@hovlandsdal.com>",
54
- "Sylvain Dumont <sylvain.dumont35@gmail.com>",
55
- "Alun Davies <alun.owain.davies@googlemail.com>",
56
- "Aidan Hoolachan <ajhoolachan21@gmail.com>",
57
- "Axel Eirola <axel.eirola@iki.fi>",
58
- "Freezy <freezy@xbmc.org>",
59
- "Daiz <taneli.vatanen@gmail.com>",
60
- "Julian Aubourg <j@ubourg.net>",
61
- "Keith Belovay <keith@picthrive.com>",
62
- "Michael B. Klein <mbklein@gmail.com>",
63
- "Jordan Prudhomme <jordan@raboland.fr>",
64
- "Ilya Ovdin <iovdin@gmail.com>",
65
- "Andargor <andargor@yahoo.com>",
66
- "Paul Neave <paul.neave@gmail.com>",
67
- "Brendan Kennedy <brenwken@gmail.com>",
68
- "Brychan Bennett-Odlum <git@brychan.io>",
69
- "Edward Silverton <e.silverton@gmail.com>",
70
- "Roman Malieiev <aromaleev@gmail.com>",
71
- "Tomas Szabo <tomas.szabo@deftomat.com>",
72
- "Robert O'Rourke <robert@o-rourke.org>",
73
- "Guillermo Alfonso Varela Chouciño <guillevch@gmail.com>",
74
- "Christian Flintrup <chr@gigahost.dk>",
75
- "Manan Jadhav <manan@motionden.com>",
76
- "Leon Radley <leon@radley.se>",
77
- "alza54 <alza54@thiocod.in>",
78
- "Jacob Smith <jacob@frende.me>",
79
- "Michael Nutt <michael@nutt.im>",
80
- "Brad Parham <baparham@gmail.com>",
81
- "Taneli Vatanen <taneli.vatanen@gmail.com>",
82
- "Joris Dugué <zaruike10@gmail.com>",
83
- "Chris Banks <christopher.bradley.banks@gmail.com>",
84
- "Ompal Singh <ompal.hitm09@gmail.com>",
85
- "Brodan <christopher.hranj@gmail.com>",
86
- "Ankur Parihar <ankur.github@gmail.com>",
87
- "Brahim Ait elhaj <brahima@gmail.com>",
88
- "Mart Jansink <m.jansink@gmail.com>",
89
- "Lachlan Newman <lachnewman007@gmail.com>",
90
- "Dennis Beatty <dennis@dcbeatty.com>",
91
- "Ingvar Stepanyan <me@rreverser.com>",
92
- "Don Denton <don@happycollision.com>"
93
- ],
94
- "scripts": {
95
- "build": "node install/build.js",
96
- "install": "node install/check.js || npm run build",
97
- "clean": "rm -rf src/build/ .nyc_output/ coverage/ test/fixtures/output.*",
98
- "test": "npm run lint && npm run test-unit",
99
- "lint": "npm run lint-cpp && npm run lint-js && npm run lint-types",
100
- "lint-cpp": "cpplint --quiet src/*.h src/*.cc",
101
- "lint-js": "biome lint",
102
- "lint-types": "tsd --files ./test/types/sharp.test-d.ts",
103
- "test-leak": "./test/leak/leak.sh",
104
- "test-unit": "node --experimental-test-coverage test/unit.mjs",
105
- "package-from-local-build": "node npm/from-local-build.js",
106
- "package-release-notes": "node npm/release-notes.js",
107
- "docs-build": "node docs/build.mjs",
108
- "docs-serve": "cd docs && npm start",
109
- "docs-publish": "cd docs && npm run build && npx firebase-tools deploy --project pixelplumbing --only hosting:pixelplumbing-sharp"
110
- },
111
- "type": "commonjs",
112
- "main": "lib/index.js",
113
- "types": "lib/index.d.ts",
114
- "files": [
115
- "install",
116
- "lib",
117
- "src/*.{cc,h,gyp}"
118
- ],
119
- "repository": {
120
- "type": "git",
121
- "url": "git://github.com/lovell/sharp.git"
122
- },
123
- "keywords": [
124
- "jpeg",
125
- "png",
126
- "webp",
127
- "avif",
128
- "tiff",
129
- "gif",
130
- "svg",
131
- "jp2",
132
- "dzi",
133
- "image",
134
- "resize",
135
- "thumbnail",
136
- "crop",
137
- "embed",
138
- "libvips",
139
- "vips"
140
- ],
141
- "dependencies": {
142
- "@img/colour": "^1.0.0",
143
- "detect-libc": "^2.1.2",
144
- "semver": "^7.7.3"
145
- },
146
- "optionalDependencies": {
147
- "@img/sharp-darwin-arm64": "0.34.5",
148
- "@img/sharp-darwin-x64": "0.34.5",
149
- "@img/sharp-libvips-darwin-arm64": "1.2.4",
150
- "@img/sharp-libvips-darwin-x64": "1.2.4",
151
- "@img/sharp-libvips-linux-arm": "1.2.4",
152
- "@img/sharp-libvips-linux-arm64": "1.2.4",
153
- "@img/sharp-libvips-linux-ppc64": "1.2.4",
154
- "@img/sharp-libvips-linux-riscv64": "1.2.4",
155
- "@img/sharp-libvips-linux-s390x": "1.2.4",
156
- "@img/sharp-libvips-linux-x64": "1.2.4",
157
- "@img/sharp-libvips-linuxmusl-arm64": "1.2.4",
158
- "@img/sharp-libvips-linuxmusl-x64": "1.2.4",
159
- "@img/sharp-linux-arm": "0.34.5",
160
- "@img/sharp-linux-arm64": "0.34.5",
161
- "@img/sharp-linux-ppc64": "0.34.5",
162
- "@img/sharp-linux-riscv64": "0.34.5",
163
- "@img/sharp-linux-s390x": "0.34.5",
164
- "@img/sharp-linux-x64": "0.34.5",
165
- "@img/sharp-linuxmusl-arm64": "0.34.5",
166
- "@img/sharp-linuxmusl-x64": "0.34.5",
167
- "@img/sharp-wasm32": "0.34.5",
168
- "@img/sharp-win32-arm64": "0.34.5",
169
- "@img/sharp-win32-ia32": "0.34.5",
170
- "@img/sharp-win32-x64": "0.34.5"
171
- },
172
- "devDependencies": {
173
- "@biomejs/biome": "^2.3.4",
174
- "@cpplint/cli": "^0.1.0",
175
- "@emnapi/runtime": "^1.7.0",
176
- "@img/sharp-libvips-dev": "1.2.4",
177
- "@img/sharp-libvips-dev-wasm32": "1.2.4",
178
- "@img/sharp-libvips-win32-arm64": "1.2.4",
179
- "@img/sharp-libvips-win32-ia32": "1.2.4",
180
- "@img/sharp-libvips-win32-x64": "1.2.4",
181
- "@types/node": "*",
182
- "emnapi": "^1.7.0",
183
- "exif-reader": "^2.0.2",
184
- "extract-zip": "^2.0.1",
185
- "icc": "^3.0.0",
186
- "jsdoc-to-markdown": "^9.1.3",
187
- "node-addon-api": "^8.5.0",
188
- "node-gyp": "^11.5.0",
189
- "tar-fs": "^3.1.1",
190
- "tsd": "^0.33.0"
191
- },
192
- "license": "Apache-2.0",
193
- "engines": {
194
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
195
- },
196
- "config": {
197
- "libvips": ">=8.17.3"
198
- },
199
- "funding": {
200
- "url": "https://opencollective.com/libvips"
201
- }
202
- }
@@ -1,121 +0,0 @@
1
- /* -*- Mode: js; js-indent-level: 2; -*- */
2
- /*
3
- * Copyright 2011 Mozilla Foundation and contributors
4
- * Licensed under the New BSD license. See LICENSE or:
5
- * http://opensource.org/licenses/BSD-3-Clause
6
- */
7
-
8
- var util = require('./util');
9
- var has = Object.prototype.hasOwnProperty;
10
- var hasNativeMap = typeof Map !== "undefined";
11
-
12
- /**
13
- * A data structure which is a combination of an array and a set. Adding a new
14
- * member is O(1), testing for membership is O(1), and finding the index of an
15
- * element is O(1). Removing elements from the set is not supported. Only
16
- * strings are supported for membership.
17
- */
18
- function ArraySet() {
19
- this._array = [];
20
- this._set = hasNativeMap ? new Map() : Object.create(null);
21
- }
22
-
23
- /**
24
- * Static method for creating ArraySet instances from an existing array.
25
- */
26
- ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
27
- var set = new ArraySet();
28
- for (var i = 0, len = aArray.length; i < len; i++) {
29
- set.add(aArray[i], aAllowDuplicates);
30
- }
31
- return set;
32
- };
33
-
34
- /**
35
- * Return how many unique items are in this ArraySet. If duplicates have been
36
- * added, than those do not count towards the size.
37
- *
38
- * @returns Number
39
- */
40
- ArraySet.prototype.size = function ArraySet_size() {
41
- return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;
42
- };
43
-
44
- /**
45
- * Add the given string to this set.
46
- *
47
- * @param String aStr
48
- */
49
- ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
50
- var sStr = hasNativeMap ? aStr : util.toSetString(aStr);
51
- var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);
52
- var idx = this._array.length;
53
- if (!isDuplicate || aAllowDuplicates) {
54
- this._array.push(aStr);
55
- }
56
- if (!isDuplicate) {
57
- if (hasNativeMap) {
58
- this._set.set(aStr, idx);
59
- } else {
60
- this._set[sStr] = idx;
61
- }
62
- }
63
- };
64
-
65
- /**
66
- * Is the given string a member of this set?
67
- *
68
- * @param String aStr
69
- */
70
- ArraySet.prototype.has = function ArraySet_has(aStr) {
71
- if (hasNativeMap) {
72
- return this._set.has(aStr);
73
- } else {
74
- var sStr = util.toSetString(aStr);
75
- return has.call(this._set, sStr);
76
- }
77
- };
78
-
79
- /**
80
- * What is the index of the given string in the array?
81
- *
82
- * @param String aStr
83
- */
84
- ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
85
- if (hasNativeMap) {
86
- var idx = this._set.get(aStr);
87
- if (idx >= 0) {
88
- return idx;
89
- }
90
- } else {
91
- var sStr = util.toSetString(aStr);
92
- if (has.call(this._set, sStr)) {
93
- return this._set[sStr];
94
- }
95
- }
96
-
97
- throw new Error('"' + aStr + '" is not in the set.');
98
- };
99
-
100
- /**
101
- * What is the element at the given index?
102
- *
103
- * @param Number aIdx
104
- */
105
- ArraySet.prototype.at = function ArraySet_at(aIdx) {
106
- if (aIdx >= 0 && aIdx < this._array.length) {
107
- return this._array[aIdx];
108
- }
109
- throw new Error('No element indexed by ' + aIdx);
110
- };
111
-
112
- /**
113
- * Returns the array representation of this set (which has the proper indices
114
- * indicated by indexOf). Note that this is a copy of the internal array used
115
- * for storing the members so that no one can mess with internal state.
116
- */
117
- ArraySet.prototype.toArray = function ArraySet_toArray() {
118
- return this._array.slice();
119
- };
120
-
121
- exports.ArraySet = ArraySet;