flingit 0.0.65 → 0.0.67

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 (179) hide show
  1. package/dist/cli/commands/config.d.ts +2 -2
  2. package/dist/cli/commands/config.d.ts.map +1 -1
  3. package/dist/cli/commands/config.js +3 -3
  4. package/dist/cli/commands/config.js.map +1 -1
  5. package/dist/cli/commands/cron.d.ts +9 -9
  6. package/dist/cli/commands/cron.d.ts.map +1 -1
  7. package/dist/cli/commands/cron.js +8 -13
  8. package/dist/cli/commands/cron.js.map +1 -1
  9. package/dist/cli/commands/db.d.ts +13 -3
  10. package/dist/cli/commands/db.d.ts.map +1 -1
  11. package/dist/cli/commands/db.js +22 -5
  12. package/dist/cli/commands/db.js.map +1 -1
  13. package/dist/cli/commands/dev.d.ts +2 -2
  14. package/dist/cli/commands/dev.d.ts.map +1 -1
  15. package/dist/cli/commands/dev.js +15 -4
  16. package/dist/cli/commands/dev.js.map +1 -1
  17. package/dist/cli/commands/email.d.ts +4 -4
  18. package/dist/cli/commands/email.d.ts.map +1 -1
  19. package/dist/cli/commands/email.js +4 -3
  20. package/dist/cli/commands/email.js.map +1 -1
  21. package/dist/cli/commands/feedback.js +3 -3
  22. package/dist/cli/commands/feedback.js.map +1 -1
  23. package/dist/cli/commands/init.d.ts +2 -2
  24. package/dist/cli/commands/init.d.ts.map +1 -1
  25. package/dist/cli/commands/init.js +3 -3
  26. package/dist/cli/commands/init.js.map +1 -1
  27. package/dist/cli/commands/launch.d.ts +14 -14
  28. package/dist/cli/commands/launch.d.ts.map +1 -1
  29. package/dist/cli/commands/launch.js +12 -12
  30. package/dist/cli/commands/launch.js.map +1 -1
  31. package/dist/cli/commands/logs.d.ts +2 -2
  32. package/dist/cli/commands/logs.d.ts.map +1 -1
  33. package/dist/cli/commands/logs.js +4 -4
  34. package/dist/cli/commands/logs.js.map +1 -1
  35. package/dist/cli/commands/plugin.d.ts.map +1 -1
  36. package/dist/cli/commands/plugin.js +4 -3
  37. package/dist/cli/commands/plugin.js.map +1 -1
  38. package/dist/cli/commands/project.d.ts +2 -2
  39. package/dist/cli/commands/project.d.ts.map +1 -1
  40. package/dist/cli/commands/project.js +32 -22
  41. package/dist/cli/commands/project.js.map +1 -1
  42. package/dist/cli/commands/push.d.ts +1 -0
  43. package/dist/cli/commands/push.d.ts.map +1 -1
  44. package/dist/cli/commands/push.js +8 -8
  45. package/dist/cli/commands/push.js.map +1 -1
  46. package/dist/cli/commands/storage.d.ts +8 -11
  47. package/dist/cli/commands/storage.d.ts.map +1 -1
  48. package/dist/cli/commands/storage.js +16 -24
  49. package/dist/cli/commands/storage.js.map +1 -1
  50. package/dist/cli/commands/tunnel.js +2 -2
  51. package/dist/cli/commands/tunnel.js.map +1 -1
  52. package/dist/cli/commands/upgrade.d.ts +2 -2
  53. package/dist/cli/commands/upgrade.d.ts.map +1 -1
  54. package/dist/cli/commands/upgrade.js +2 -2
  55. package/dist/cli/commands/upgrade.js.map +1 -1
  56. package/dist/cli/commands/whoami.d.ts.map +1 -1
  57. package/dist/cli/commands/whoami.js +4 -4
  58. package/dist/cli/commands/whoami.js.map +1 -1
  59. package/dist/cli/commands/workflow.d.ts +9 -9
  60. package/dist/cli/commands/workflow.d.ts.map +1 -1
  61. package/dist/cli/commands/workflow.js +8 -14
  62. package/dist/cli/commands/workflow.js.map +1 -1
  63. package/dist/cli/index.js +3 -3
  64. package/dist/cli/index.js.map +1 -1
  65. package/dist/cli/utils/cli-io-impl.d.ts +48 -26
  66. package/dist/cli/utils/cli-io-impl.d.ts.map +1 -1
  67. package/dist/cli/utils/cli-io-impl.js +124 -40
  68. package/dist/cli/utils/cli-io-impl.js.map +1 -1
  69. package/dist/cli/utils/cli-io.d.ts +57 -29
  70. package/dist/cli/utils/cli-io.d.ts.map +1 -1
  71. package/dist/cli/utils/cli-io.js +8 -4
  72. package/dist/cli/utils/cli-io.js.map +1 -1
  73. package/dist/cli/utils/config.d.ts +10 -10
  74. package/dist/cli/utils/config.d.ts.map +1 -1
  75. package/dist/cli/utils/config.js +1 -1
  76. package/dist/cli/utils/config.js.map +1 -1
  77. package/dist/cli/utils/duplicate-check.d.ts +3 -3
  78. package/dist/cli/utils/duplicate-check.d.ts.map +1 -1
  79. package/dist/cli/utils/duplicate-check.js.map +1 -1
  80. package/dist/cli/utils/email.d.ts +2 -1
  81. package/dist/cli/utils/email.d.ts.map +1 -1
  82. package/dist/cli/utils/email.js +8 -21
  83. package/dist/cli/utils/email.js.map +1 -1
  84. package/dist/cli/utils/format.d.ts +17 -0
  85. package/dist/cli/utils/format.d.ts.map +1 -0
  86. package/dist/cli/utils/format.js +30 -0
  87. package/dist/cli/utils/format.js.map +1 -0
  88. package/dist/cli/utils/project-name.d.ts +13 -4
  89. package/dist/cli/utils/project-name.d.ts.map +1 -1
  90. package/dist/cli/utils/project-name.js +28 -0
  91. package/dist/cli/utils/project-name.js.map +1 -1
  92. package/dist/cli/utils/project.d.ts +21 -8
  93. package/dist/cli/utils/project.d.ts.map +1 -1
  94. package/dist/cli/utils/project.js +16 -0
  95. package/dist/cli/utils/project.js.map +1 -1
  96. package/dist/cli/utils/prompt-new-project.d.ts +2 -2
  97. package/dist/cli/utils/prompt-new-project.d.ts.map +1 -1
  98. package/dist/cli/utils/prompt-new-project.js.map +1 -1
  99. package/dist/cli/utils/registry.d.ts +10 -10
  100. package/dist/cli/utils/registry.d.ts.map +1 -1
  101. package/dist/cli/utils/registry.js.map +1 -1
  102. package/dist/index.d.ts +2 -0
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +1 -0
  105. package/dist/index.js.map +1 -1
  106. package/dist/repo-shared/email-validation.d.ts +21 -0
  107. package/dist/repo-shared/email-validation.d.ts.map +1 -0
  108. package/dist/repo-shared/email-validation.js +30 -0
  109. package/dist/repo-shared/email-validation.js.map +1 -0
  110. package/dist/repo-shared/slug-validation.d.ts +29 -0
  111. package/dist/repo-shared/slug-validation.d.ts.map +1 -0
  112. package/dist/repo-shared/slug-validation.js +60 -0
  113. package/dist/repo-shared/slug-validation.js.map +1 -0
  114. package/dist/runtime/auth.d.ts +26 -0
  115. package/dist/runtime/auth.d.ts.map +1 -0
  116. package/dist/runtime/auth.js +241 -0
  117. package/dist/runtime/auth.js.map +1 -0
  118. package/dist/runtime/discord.d.ts +3 -2
  119. package/dist/runtime/discord.d.ts.map +1 -1
  120. package/dist/runtime/discord.js.map +1 -1
  121. package/dist/runtime/entry.d.ts +2 -0
  122. package/dist/runtime/entry.d.ts.map +1 -1
  123. package/dist/runtime/entry.js +9 -0
  124. package/dist/runtime/entry.js.map +1 -1
  125. package/dist/shared/constants.d.ts +1 -10
  126. package/dist/shared/constants.d.ts.map +1 -1
  127. package/dist/shared/constants.js +1 -10
  128. package/dist/shared/constants.js.map +1 -1
  129. package/dist/shared/hmac.d.ts +17 -0
  130. package/dist/shared/hmac.d.ts.map +1 -0
  131. package/dist/shared/hmac.js +37 -0
  132. package/dist/shared/hmac.js.map +1 -0
  133. package/dist/shared/plugin-metadata.d.ts.map +1 -1
  134. package/dist/shared/plugin-metadata.js +6 -4
  135. package/dist/shared/plugin-metadata.js.map +1 -1
  136. package/dist/worker-runtime/auth.d.ts +79 -0
  137. package/dist/worker-runtime/auth.d.ts.map +1 -0
  138. package/dist/worker-runtime/auth.js +425 -0
  139. package/dist/worker-runtime/auth.js.map +1 -0
  140. package/dist/worker-runtime/d1-event-store.d.ts +2 -1
  141. package/dist/worker-runtime/d1-event-store.d.ts.map +1 -1
  142. package/dist/worker-runtime/d1-event-store.js +26 -0
  143. package/dist/worker-runtime/d1-event-store.js.map +1 -1
  144. package/dist/worker-runtime/entry-extract.d.ts.map +1 -1
  145. package/dist/worker-runtime/entry-extract.js +1 -0
  146. package/dist/worker-runtime/entry-extract.js.map +1 -1
  147. package/dist/worker-runtime/entry.d.ts.map +1 -1
  148. package/dist/worker-runtime/entry.js +24 -16
  149. package/dist/worker-runtime/entry.js.map +1 -1
  150. package/dist/worker-runtime/index.d.ts +2 -0
  151. package/dist/worker-runtime/index.d.ts.map +1 -1
  152. package/dist/worker-runtime/index.js +2 -0
  153. package/dist/worker-runtime/index.js.map +1 -1
  154. package/dist/worker-runtime/types.d.ts +2 -0
  155. package/dist/worker-runtime/types.d.ts.map +1 -1
  156. package/dist/workflow/runtime.d.ts +3 -0
  157. package/dist/workflow/runtime.d.ts.map +1 -1
  158. package/dist/workflow/runtime.js +37 -4
  159. package/dist/workflow/runtime.js.map +1 -1
  160. package/node_modules/flingflow/README.md +10 -0
  161. package/node_modules/flingflow/SPEC.md +0 -4
  162. package/node_modules/flingflow/TESTING.md +2 -0
  163. package/node_modules/flingflow/dist/index.d.ts +1 -1
  164. package/node_modules/flingflow/dist/store-memory.d.ts +2 -1
  165. package/node_modules/flingflow/dist/store-memory.js +36 -0
  166. package/node_modules/flingflow/dist/store-memory.js.map +1 -1
  167. package/node_modules/flingflow/dist/store-sqlite.d.ts +2 -1
  168. package/node_modules/flingflow/dist/store-sqlite.js +45 -0
  169. package/node_modules/flingflow/dist/store-sqlite.js.map +1 -1
  170. package/node_modules/flingflow/dist/store.d.ts +5 -0
  171. package/node_modules/flingflow/src/index.ts +1 -1
  172. package/node_modules/flingflow/src/store-memory.ts +40 -0
  173. package/node_modules/flingflow/src/store-sqlite.ts +47 -0
  174. package/node_modules/flingflow/src/store.ts +6 -0
  175. package/node_modules/flingflow/test/store-conformance.ts +42 -0
  176. package/package.json +3 -3
  177. package/templates/default/dot-claude/skills/fling/.hash +1 -1
  178. package/templates/default/dot-claude/skills/fling/SKILL.md +4 -2
  179. package/templates/default/dot-claude/skills/fling/references/AUTH.md +149 -0
@@ -1 +1 @@
1
- {"version":3,"file":"project-name.js","sourceRoot":"","sources":["../../../src/cli/utils/project-name.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAGjE,0BAA0B;AAC1B,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAkBhC;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAuB,EACvB,GAAiB,EACjB,UAAmB;IAEnB,MAAM,GAAG,GAAG,UAAU,IAAI,GAAG,EAAE,CAAC;IAChC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAElD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QAClC,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;QAC/C,OAAO,GAAG,CAAC,KAAK,EAAE,WAAW,IAAI,oBAAoB,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,oBAAoB,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAwB,EACxB,UAAkB,EAClB,eAA6B,kBAAkB;IAE/C,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAEzD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,GAA4B,CAAC;IACjC,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAE7B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC5C,QAAoC,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"project-name.js","sourceRoot":"","sources":["../../../src/cli/utils/project-name.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,12 @@
4
4
  * Provides helpers for locating project files and validating project structure.
5
5
  * All functions accept dependency-injected I/O interfaces for testability.
6
6
  */
7
- import type { ProjectFileIO } from "./cli-io.js";
7
+ import type { FileIO, ProjectFileDeps, ReadFileString } from "./cli-io.js";
8
8
  /**
9
9
  * Dependencies for getFlingRoot.
10
10
  */
11
11
  export interface GetFlingRootDeps {
12
- file: ProjectFileIO;
12
+ file: ProjectFileDeps;
13
13
  moduleFilePath: string;
14
14
  }
15
15
  /**
@@ -41,7 +41,7 @@ export type SkillsStatus = {
41
41
  * File operations needed for checking skills status.
42
42
  * Allows dependency injection for testing.
43
43
  */
44
- export interface SkillsStatusIO {
44
+ export interface SkillsStatusDeps {
45
45
  findEnclosingProject(startDir: string): string | null;
46
46
  hasSymlinkInPath(targetPath: string, basePath: string): boolean;
47
47
  readFileString(path: string): string | null;
@@ -50,7 +50,7 @@ export interface SkillsStatusIO {
50
50
  * Check whether skills need updating.
51
51
  * Returns a discriminated union with the status and relevant paths.
52
52
  */
53
- export declare function checkSkillsStatus(cwd: string, templateDir: string, io: SkillsStatusIO): SkillsStatus;
53
+ export declare function checkSkillsStatus(cwd: string, templateDir: string, io: SkillsStatusDeps): SkillsStatus;
54
54
  /**
55
55
  * Get the full path to the Fling skills directory in a project.
56
56
  */
@@ -67,20 +67,33 @@ export declare function getWorkerEntryPath(projectDir: string): string;
67
67
  /**
68
68
  * Check if worker entry point exists.
69
69
  */
70
- export declare function hasWorkerEntry(projectDir: string, file: ProjectFileIO): boolean;
70
+ export declare function hasWorkerEntry(projectDir: string, file: ProjectFileDeps): boolean;
71
71
  /**
72
72
  * Check if a directory is a Fling project root (has a fling Claude skill).
73
73
  */
74
- export declare function isProjectRoot(dir: string, file: ProjectFileIO): boolean;
74
+ export declare function isProjectRoot(dir: string, file: ProjectFileDeps): boolean;
75
+ /**
76
+ * Check if a directory is a Fling project as far as user-facing CLI commands
77
+ * (init/dev/push/storage/db) are concerned.
78
+ *
79
+ * A directory counts as a Fling project if either:
80
+ * - It contains a `.fling/` directory (created by `fling init`), OR
81
+ * - Its `package.json` has a top-level `fling` config object.
82
+ *
83
+ * The `package.json` path matters because `.fling/` is gitignored: a project
84
+ * cloned from GitHub has the `fling` config but no `.fling/` until something
85
+ * lazily creates it.
86
+ */
87
+ export declare function isFlingProject(dir: string, file: FileIO & ReadFileString): boolean;
75
88
  /**
76
89
  * Walk up from startDir looking for an enclosing Fling project.
77
90
  * Returns the project root path, or null if none found.
78
91
  */
79
- export declare function findEnclosingProject(startDir: string, file: ProjectFileIO): string | null;
92
+ export declare function findEnclosingProject(startDir: string, file: ProjectFileDeps): string | null;
80
93
  /**
81
94
  * Check if any component of a path is a symlink.
82
95
  * Walks from the target path up to (but not including) the base path.
83
96
  * This only checks symlinks within the project, not above it.
84
97
  */
85
- export declare function hasSymlinkInPath(targetPath: string, basePath: string, file: ProjectFileIO): boolean;
98
+ export declare function hasSymlinkInPath(targetPath: string, basePath: string, file: ProjectFileDeps): boolean;
86
99
  //# sourceMappingURL=project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAwB3D;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAC5B;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACtD,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAChE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,cAAc,GACjB,YAAY,CAgCd;AAaD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAE/E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAEvE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAezF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAmBnG"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG3E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAwB3D;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAC5B;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACtD,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAChE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,gBAAgB,GACnB,YAAY,CAgCd;AAaD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAEjF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAEzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,cAAc,GAC5B,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAe3F;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAmBrG"}
@@ -5,6 +5,7 @@
5
5
  * All functions accept dependency-injected I/O interfaces for testability.
6
6
  */
7
7
  import { join, dirname, resolve } from "node:path";
8
+ import { hasFlingConfig } from "./project-name.js";
8
9
  /**
9
10
  * Get Fling root directory by walking up from the module file to find package.json.
10
11
  * Verifies the package name is "flingit" to ensure we found the right one.
@@ -105,6 +106,21 @@ export function hasWorkerEntry(projectDir, file) {
105
106
  export function isProjectRoot(dir, file) {
106
107
  return file.exists(getProjectSkillsDir(dir));
107
108
  }
109
+ /**
110
+ * Check if a directory is a Fling project as far as user-facing CLI commands
111
+ * (init/dev/push/storage/db) are concerned.
112
+ *
113
+ * A directory counts as a Fling project if either:
114
+ * - It contains a `.fling/` directory (created by `fling init`), OR
115
+ * - Its `package.json` has a top-level `fling` config object.
116
+ *
117
+ * The `package.json` path matters because `.fling/` is gitignored: a project
118
+ * cloned from GitHub has the `fling` config but no `.fling/` until something
119
+ * lazily creates it.
120
+ */
121
+ export function isFlingProject(dir, file) {
122
+ return file.exists(join(dir, ".fling")) || hasFlingConfig(file, dir);
123
+ }
108
124
  /**
109
125
  * Walk up from startDir looking for an enclosing Fling project.
110
126
  * Returns the project root path, or null if none found.
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/cli/utils/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWnD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9B,OAAO,OAAO,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;YAC1D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;oBACrD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAC3B,OAAO,OAAO,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,6BAA6B;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,GAAG,MAAM,CAAC;QACjB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;AACrG,CAAC;AAsBD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAW,EACX,WAAmB,EACnB,EAAkB;IAElB,MAAM,WAAW,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACjD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAE1D,IAAI,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,CAAC;QACvD,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAEzD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAEvD,gDAAgD;IAChD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;AAElE;;GAEG;AACH,MAAM,oBAAoB,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;AAExE;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,iBAAiB,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,oBAAoB,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,IAAmB;IACpE,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,IAAmB;IAC5D,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,IAAmB;IACxE,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,OAAO,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,MAAM,CAAC;QACjB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IACD,mCAAmC;IACnC,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,QAAgB,EAAE,IAAmB;IACxF,IAAI,OAAO,GAAG,UAAU,CAAC;IACzB,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9B,6DAA6D;IAC7D,OAAO,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,oCAAoC;YACpC,MAAM;QACR,CAAC;QACD,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,MAAM,CAAC;QACjB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/cli/utils/project.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Prompt the user to select where to create a new Fling project.
3
3
  */
4
- import type { LaunchIO, PromptNewProjectResult } from "./cli-io.js";
4
+ import type { LaunchDeps, PromptNewProjectResult } from "./cli-io.js";
5
5
  /**
6
6
  * Prompt the user to select a location for creating a new project.
7
7
  *
@@ -12,5 +12,5 @@ import type { LaunchIO, PromptNewProjectResult } from "./cli-io.js";
12
12
  * @param io - The launch I/O context
13
13
  * @returns The chosen directory path, or null if cancelled
14
14
  */
15
- export declare function promptNewProject(io: LaunchIO): Promise<PromptNewProjectResult>;
15
+ export declare function promptNewProject(io: LaunchDeps): Promise<PromptNewProjectResult>;
16
16
  //# sourceMappingURL=prompt-new-project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-new-project.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/prompt-new-project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGpE;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,QAAQ,GACX,OAAO,CAAC,sBAAsB,CAAC,CAwDjC"}
1
+ {"version":3,"file":"prompt-new-project.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/prompt-new-project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGtE;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,UAAU,GACb,OAAO,CAAC,sBAAsB,CAAC,CAwDjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-new-project.js","sourceRoot":"","sources":["../../../src/cli/utils/prompt-new-project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAY;IAEZ,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACjC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE1C,MAAM,OAAO,GAAuC,EAAE,CAAC;IAEvD,yBAAyB;IACzB,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE/C,iEAAiE;IACjE,8DAA8D;IAC9D,qEAAqE;IACrE,qEAAqE;IACrE,yCAAyC;IACzC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,wBAAwB,EAAE,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,mEAAmE;IACnE,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,GAAG;YACV,KAAK,EAAE,+BAA+B,GAAG,GAAG;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE,qDAAqD;QAC9D,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,sCAAsC;YAC/C,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YACvC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC,OAAO,CAAC;QACZ,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"prompt-new-project.js","sourceRoot":"","sources":["../../../src/cli/utils/prompt-new-project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAc;IAEd,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACjC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE1C,MAAM,OAAO,GAAuC,EAAE,CAAC;IAEvD,yBAAyB;IACzB,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE/C,iEAAiE;IACjE,8DAA8D;IAC9D,qEAAqE;IACrE,qEAAqE;IACrE,yCAAyC;IACzC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,wBAAwB,EAAE,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,mEAAmE;IACnE,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,GAAG;YACV,KAAK,EAAE,+BAA+B,GAAG,GAAG;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE,qDAAqD;QAC9D,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,sCAAsC;YAC/C,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YACvC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC,OAAO,CAAC;QACZ,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -4,46 +4,46 @@
4
4
  * (XDG Base Directory spec, or FLING_CONFIG_DIR if set).
5
5
  * Uses dependency injection for testability.
6
6
  */
7
- import type { RegistryIO } from "./cli-io.js";
7
+ import type { RegistryDeps } from "./cli-io.js";
8
8
  /**
9
9
  * Read the project registry. Returns an empty array if the file
10
10
  * is missing or malformed.
11
11
  */
12
- export declare function readRegistry(io: RegistryIO): string[];
12
+ export declare function readRegistry(io: RegistryDeps): string[];
13
13
  /**
14
14
  * Write the project registry.
15
15
  */
16
- export declare function writeRegistry(projects: string[], io: RegistryIO): void;
16
+ export declare function writeRegistry(projects: string[], io: RegistryDeps): void;
17
17
  /**
18
18
  * Register a project path. Idempotent — resolves to absolute path
19
19
  * before storing.
20
20
  */
21
- export declare function registerProject(projectPath: string, io: RegistryIO): void;
21
+ export declare function registerProject(projectPath: string, io: RegistryDeps): void;
22
22
  /**
23
23
  * Unregister a project path.
24
24
  */
25
- export declare function unregisterProject(projectPath: string, io: RegistryIO): void;
25
+ export declare function unregisterProject(projectPath: string, io: RegistryDeps): void;
26
26
  /**
27
27
  * Get valid projects — those whose directories still exist and
28
28
  * contain a .fling/ subdirectory. Stale entries are auto-pruned
29
29
  * from the registry file.
30
30
  */
31
- export declare function getValidProjects(io: RegistryIO): string[];
31
+ export declare function getValidProjects(io: RegistryDeps): string[];
32
32
  /**
33
33
  * Check if a path is registered.
34
34
  */
35
- export declare function isRegistered(projectPath: string, io: RegistryIO): boolean;
35
+ export declare function isRegistered(projectPath: string, io: RegistryDeps): boolean;
36
36
  export interface DuplicateGroup {
37
37
  projectName: string;
38
38
  paths: string[];
39
39
  }
40
- export interface DuplicateCheckIO {
41
- registry: RegistryIO;
40
+ export interface DuplicateCheckDeps {
41
+ registry: RegistryDeps;
42
42
  getProjectNameForPath: (projectPath: string) => string;
43
43
  }
44
44
  /**
45
45
  * Find groups of projects that share the same project name.
46
46
  * Excludes projects with DEFAULT_PROJECT_NAME (legacy projects).
47
47
  */
48
- export declare function findDuplicateProjectNames(io: DuplicateCheckIO): DuplicateGroup[];
48
+ export declare function findDuplicateProjectNames(io: DuplicateCheckDeps): DuplicateGroup[];
49
49
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAS,UAAU,EAAE,MAAM,aAAa,CAAC;AAyBrD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,EAAE,CAkBrD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,UAAU,GAAG,IAAI,CAOtE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,IAAI,CAOzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,IAAI,CAO3E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,EAAE,CASzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAGzE;AAMD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,UAAU,CAAC;IACrB,qBAAqB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;CACxD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,gBAAgB,GAAG,cAAc,EAAE,CAyBhF"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAS,YAAY,EAAE,MAAM,aAAa,CAAC;AAyBvD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,EAAE,CAkBvD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI,CAOxE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI,CAO3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI,CAO7E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,EAAE,CAS3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,GAAG,OAAO,CAG3E;AAMD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,YAAY,CAAC;IACvB,qBAAqB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;CACxD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAyBlF"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/cli/utils/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/cli/utils/registry.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -12,8 +12,10 @@ export { migrate } from "./runtime/migrate.js";
12
12
  export { secrets } from "./runtime/secrets.js";
13
13
  export { storage } from "./runtime/storage.js";
14
14
  export { workflow } from "./workflow/runtime.js";
15
+ export { auth } from "./runtime/auth.js";
15
16
  export { NonRetryableError } from "flingflow/types";
16
17
  export type { Storage, StorageObject, StorageObjectBody, StoragePutOptions, StorageListOptions, StorageListResult, CreateUploadUrlOptions, CreateDownloadUrlOptions, PresignedUrl, } from "./types/storage.js";
18
+ export type { AuthUser, AuthAllowConfig } from "./runtime/auth.js";
17
19
  export type { InboundEmail, InboundEmailAttachment, EmailAddress } from "./types/email.js";
18
20
  export type { WorkflowCtx, WorkflowStepHandler, WorkflowContinuation, WorkflowOptions, WorkflowRun, WorkflowStartOptions, WorkflowListFilters, } from "./types/workflow.js";
19
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,YAAY,EACV,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAG3F,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,YAAY,EACV,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGnE,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAG3F,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -12,5 +12,6 @@ export { migrate } from "./runtime/migrate.js";
12
12
  export { secrets } from "./runtime/secrets.js";
13
13
  export { storage } from "./runtime/storage.js";
14
14
  export { workflow } from "./workflow/runtime.js";
15
+ export { auth } from "./runtime/auth.js";
15
16
  export { NonRetryableError } from "flingflow/types";
16
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { z } from "zod";
2
+ export declare const EMAIL_REQUIRED_ERROR = "Email is required";
3
+ export declare const INVALID_EMAIL_ERROR = "Invalid email address";
4
+ export declare const EXAMPLE_DOMAIN_ERROR = "Example domains (example.com, example.org, example.net) are not allowed";
5
+ /**
6
+ * RFC 2606 reserved "example" domains: example.com, example.org, example.net
7
+ * and any subdomain thereof (e.g. mail.example.com).
8
+ */
9
+ export declare const EXAMPLE_DOMAIN_PATTERN: RegExp;
10
+ export declare const EmailAddressSchema: z.ZodEmail;
11
+ export declare function isExampleDomain(email: string): boolean;
12
+ export declare const UserEmailAddressSchema: z.ZodEmail;
13
+ export type UserEmailValidationResult = {
14
+ valid: true;
15
+ email: string;
16
+ } | {
17
+ valid: false;
18
+ error: string;
19
+ };
20
+ export declare function validateUserEmail(raw: string): UserEmailValidationResult;
21
+ //# sourceMappingURL=email-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-validation.d.ts","sourceRoot":"","sources":["../../shared/email-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AACxD,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAC3D,eAAO,MAAM,oBAAoB,4EAC0C,CAAC;AAE5E;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAoC,CAAC;AAExE,eAAO,MAAM,kBAAkB,YAA0C,CAAC;AAE1E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAItD;AAED,eAAO,MAAM,sBAAsB,YAGlC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GACjC;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpC,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAUxE"}
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ export const EMAIL_REQUIRED_ERROR = "Email is required";
3
+ export const INVALID_EMAIL_ERROR = "Invalid email address";
4
+ export const EXAMPLE_DOMAIN_ERROR = "Example domains (example.com, example.org, example.net) are not allowed";
5
+ /**
6
+ * RFC 2606 reserved "example" domains: example.com, example.org, example.net
7
+ * and any subdomain thereof (e.g. mail.example.com).
8
+ */
9
+ export const EXAMPLE_DOMAIN_PATTERN = /^(.*\.)?example\.(com|org|net)$/;
10
+ export const EmailAddressSchema = z.email({ error: INVALID_EMAIL_ERROR });
11
+ export function isExampleDomain(email) {
12
+ const domain = email.split("@")[1]?.toLowerCase();
13
+ if (!domain)
14
+ return false;
15
+ return EXAMPLE_DOMAIN_PATTERN.test(domain);
16
+ }
17
+ export const UserEmailAddressSchema = EmailAddressSchema.refine((email) => !isExampleDomain(email), EXAMPLE_DOMAIN_ERROR);
18
+ export function validateUserEmail(raw) {
19
+ const email = raw.trim();
20
+ if (!email)
21
+ return { valid: false, error: EMAIL_REQUIRED_ERROR };
22
+ if (!EmailAddressSchema.safeParse(email).success) {
23
+ return { valid: false, error: INVALID_EMAIL_ERROR };
24
+ }
25
+ if (isExampleDomain(email)) {
26
+ return { valid: false, error: EXAMPLE_DOMAIN_ERROR };
27
+ }
28
+ return { valid: true, email };
29
+ }
30
+ //# sourceMappingURL=email-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-validation.js","sourceRoot":"","sources":["../../shared/email-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAC/B,yEAAyE,CAAC;AAE5E;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iCAAiC,CAAC;AAExE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAE1E,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,MAAM,CAC7D,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,EAClC,oBAAoB,CACrB,CAAC;AAMF,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IACjE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Shared project slug validation rules.
3
+ *
4
+ * Keep this module dependency-free so both the CLI and platform workers can use
5
+ * the same validation source without pulling platform-only packages into CLI
6
+ * business logic.
7
+ */
8
+ export declare const SLUG_MAX_LENGTH = 63;
9
+ export declare const USER_SLUG_MIN_LENGTH = 5;
10
+ /**
11
+ * Project slugs are DNS labels: lowercase alphanumeric with optional internal
12
+ * hyphens. They must start and end with an alphanumeric character.
13
+ */
14
+ export declare const SLUG_PATTERN: RegExp;
15
+ /**
16
+ * Slugs reserved for platform infrastructure and third-party services.
17
+ * These become subdomains, so we must prevent conflicts.
18
+ */
19
+ export declare const RESERVED_SLUGS: readonly ["api", "cname", "plugin", "plugins", "tunnel", "mail", "discord", "slack", "google", "stripe", "email", "auth", "login", "verify"];
20
+ export type ReservedSlug = (typeof RESERVED_SLUGS)[number];
21
+ export type UserSlugValidationError = "too_short" | "too_long" | "invalid_format" | "reserved";
22
+ export declare function isSlugFormatValid(slug: string): boolean;
23
+ export declare function isReservedSlug(slug: string): slug is ReservedSlug;
24
+ /**
25
+ * Validate a user-controlled project slug in the same order the CLI historically
26
+ * reported errors: length first, then format, then reservation conflicts.
27
+ */
28
+ export declare function getUserSlugValidationError(slug: string): UserSlugValidationError | null;
29
+ //# sourceMappingURL=slug-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug-validation.d.ts","sourceRoot":"","sources":["../../shared/slug-validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAuC,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,cAAc,8IAejB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,MAAM,uBAAuB,GAC/B,WAAW,GACX,UAAU,GACV,gBAAgB,GAChB,UAAU,CAAC;AAEf,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAEjE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,CAkBvF"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Shared project slug validation rules.
3
+ *
4
+ * Keep this module dependency-free so both the CLI and platform workers can use
5
+ * the same validation source without pulling platform-only packages into CLI
6
+ * business logic.
7
+ */
8
+ export const SLUG_MAX_LENGTH = 63;
9
+ export const USER_SLUG_MIN_LENGTH = 5;
10
+ /**
11
+ * Project slugs are DNS labels: lowercase alphanumeric with optional internal
12
+ * hyphens. They must start and end with an alphanumeric character.
13
+ */
14
+ export const SLUG_PATTERN = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/u;
15
+ /**
16
+ * Slugs reserved for platform infrastructure and third-party services.
17
+ * These become subdomains, so we must prevent conflicts.
18
+ */
19
+ export const RESERVED_SLUGS = [
20
+ "api",
21
+ "cname",
22
+ "plugin",
23
+ "plugins",
24
+ "tunnel",
25
+ "mail",
26
+ "discord",
27
+ "slack",
28
+ "google",
29
+ "stripe",
30
+ "email",
31
+ "auth",
32
+ "login",
33
+ "verify",
34
+ ];
35
+ export function isSlugFormatValid(slug) {
36
+ return SLUG_PATTERN.test(slug);
37
+ }
38
+ export function isReservedSlug(slug) {
39
+ return RESERVED_SLUGS.includes(slug);
40
+ }
41
+ /**
42
+ * Validate a user-controlled project slug in the same order the CLI historically
43
+ * reported errors: length first, then format, then reservation conflicts.
44
+ */
45
+ export function getUserSlugValidationError(slug) {
46
+ if (slug.length < USER_SLUG_MIN_LENGTH) {
47
+ return "too_short";
48
+ }
49
+ if (slug.length > SLUG_MAX_LENGTH) {
50
+ return "too_long";
51
+ }
52
+ if (!isSlugFormatValid(slug)) {
53
+ return "invalid_format";
54
+ }
55
+ if (isReservedSlug(slug)) {
56
+ return "reserved";
57
+ }
58
+ return null;
59
+ }
60
+ //# sourceMappingURL=slug-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug-validation.js","sourceRoot":"","sources":["../../shared/slug-validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,oCAAoC,CAAC;AAEjE;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK;IACL,OAAO;IACP,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,MAAM;IACN,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,QAAQ;CACA,CAAC;AAUX,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAoB,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,IAAI,IAAI,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QACvC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QAClC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Local development auth implementation.
3
+ *
4
+ * Deployed Google OAuth auth is implemented in the Workers runtime. In local
5
+ * development, auth routes use a dummy login screen so developers can exercise
6
+ * authenticated app flows without a deployed project or real Google credentials.
7
+ */
8
+ import type { Context, MiddlewareHandler } from "hono";
9
+ export interface AuthUser {
10
+ email: string;
11
+ name: string;
12
+ picture?: string;
13
+ }
14
+ export interface AuthAllowConfig {
15
+ domains?: string[];
16
+ sessionMaxAge?: number;
17
+ }
18
+ export declare function __isAuthEnabled(): boolean;
19
+ export declare function __handleAuthRoute(request: Request): Promise<Response | null>;
20
+ export declare const auth: {
21
+ allow(config?: AuthAllowConfig): void;
22
+ require(): MiddlewareHandler;
23
+ user(c: Context): Promise<AuthUser | null>;
24
+ };
25
+ export declare function __resetAuthState(): void;
26
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/runtime/auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAQ,MAAM,MAAM,CAAC;AAG7D,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA4MD,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAWlF;AAED,eAAO,MAAM,IAAI;mBACA,eAAe,GAAG,IAAI;eAU1B,iBAAiB;YAad,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;CAYjD,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC"}