@xano/cli 1.0.6-beta.13 → 1.0.6-beta.14

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.
@@ -203,6 +203,42 @@ export function resolveDocumentPath(doc, outputDir, deps) {
203
203
  // Realtime v1: realtime_trigger → realtime/trigger/{name}.xs
204
204
  return { baseName: sanitize(doc.name), typeDir: join(outputDir, 'realtime', 'trigger') };
205
205
  }
206
+ if (doc.type === 'realtime_server_trigger') {
207
+ // Realtime v2. A realtime_server's connect/disconnect trigger. It references its
208
+ // owning server by name via `realtime_server = "..."`, so it nests under that
209
+ // server's folder as `<server>/trigger/`, mirroring how the server's own document
210
+ // and its channels already nest under realtime/server/<server>/ (DEV-7712). Keeping
211
+ // it there means every realtime document stays under realtime/ instead of landing at
212
+ // the output root. A server-less doc (a malformed/legacy export) falls back to a flat
213
+ // realtime/server_trigger/ under realtime/ rather than the repo root.
214
+ return {
215
+ baseName: sanitize(doc.name),
216
+ typeDir: doc.server
217
+ ? join(outputDir, 'realtime', 'server', sanitize(doc.server), 'trigger')
218
+ : join(outputDir, 'realtime', 'server_trigger'),
219
+ };
220
+ }
221
+ if (doc.type === 'channel_trigger') {
222
+ // Realtime v2. A channel's join/leave/deliver trigger. It references BOTH its owning
223
+ // server (`realtime_server = "..."`) and its channel (`channel = "..."`), so it nests
224
+ // beside that channel as `<server>/channel/<channel>/trigger/` — the same path the
225
+ // channel's own document and messages already use (DEV-7712). Falls back gracefully:
226
+ // channel but no resolvable server → the legacy flat channel/<path>/trigger/ layout;
227
+ // neither → realtime/channel_trigger/ under realtime/ (never the output root).
228
+ if (doc.server && doc.channel) {
229
+ return {
230
+ baseName: sanitize(doc.name),
231
+ typeDir: join(outputDir, 'realtime', 'server', sanitize(doc.server), 'channel', snakeCase(doc.channel), 'trigger'),
232
+ };
233
+ }
234
+ if (doc.channel) {
235
+ return {
236
+ baseName: sanitize(doc.name),
237
+ typeDir: join(outputDir, 'channel', ...channelPathSegments(doc.channel, snakeCase), 'trigger'),
238
+ };
239
+ }
240
+ return { baseName: sanitize(doc.name), typeDir: join(outputDir, 'realtime', 'channel_trigger') };
241
+ }
206
242
  if (doc.type === 'realtime_server') {
207
243
  // Realtime v2. The realtime_server is the top-level container that owns
208
244
  // channels (which own messages). Its own document is named after itself