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.
- package/dist/cli/commands/config.d.ts +2 -2
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +3 -3
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/cron.d.ts +9 -9
- package/dist/cli/commands/cron.d.ts.map +1 -1
- package/dist/cli/commands/cron.js +8 -13
- package/dist/cli/commands/cron.js.map +1 -1
- package/dist/cli/commands/db.d.ts +13 -3
- package/dist/cli/commands/db.d.ts.map +1 -1
- package/dist/cli/commands/db.js +22 -5
- package/dist/cli/commands/db.js.map +1 -1
- package/dist/cli/commands/dev.d.ts +2 -2
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +15 -4
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/email.d.ts +4 -4
- package/dist/cli/commands/email.d.ts.map +1 -1
- package/dist/cli/commands/email.js +4 -3
- package/dist/cli/commands/email.js.map +1 -1
- package/dist/cli/commands/feedback.js +3 -3
- package/dist/cli/commands/feedback.js.map +1 -1
- package/dist/cli/commands/init.d.ts +2 -2
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +3 -3
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/launch.d.ts +14 -14
- package/dist/cli/commands/launch.d.ts.map +1 -1
- package/dist/cli/commands/launch.js +12 -12
- package/dist/cli/commands/launch.js.map +1 -1
- package/dist/cli/commands/logs.d.ts +2 -2
- package/dist/cli/commands/logs.d.ts.map +1 -1
- package/dist/cli/commands/logs.js +4 -4
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/plugin.d.ts.map +1 -1
- package/dist/cli/commands/plugin.js +4 -3
- package/dist/cli/commands/plugin.js.map +1 -1
- package/dist/cli/commands/project.d.ts +2 -2
- package/dist/cli/commands/project.d.ts.map +1 -1
- package/dist/cli/commands/project.js +32 -22
- package/dist/cli/commands/project.js.map +1 -1
- package/dist/cli/commands/push.d.ts +1 -0
- package/dist/cli/commands/push.d.ts.map +1 -1
- package/dist/cli/commands/push.js +8 -8
- package/dist/cli/commands/push.js.map +1 -1
- package/dist/cli/commands/storage.d.ts +8 -11
- package/dist/cli/commands/storage.d.ts.map +1 -1
- package/dist/cli/commands/storage.js +16 -24
- package/dist/cli/commands/storage.js.map +1 -1
- package/dist/cli/commands/tunnel.js +2 -2
- package/dist/cli/commands/tunnel.js.map +1 -1
- package/dist/cli/commands/upgrade.d.ts +2 -2
- package/dist/cli/commands/upgrade.d.ts.map +1 -1
- package/dist/cli/commands/upgrade.js +2 -2
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/whoami.d.ts.map +1 -1
- package/dist/cli/commands/whoami.js +4 -4
- package/dist/cli/commands/whoami.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts +9 -9
- package/dist/cli/commands/workflow.d.ts.map +1 -1
- package/dist/cli/commands/workflow.js +8 -14
- package/dist/cli/commands/workflow.js.map +1 -1
- package/dist/cli/index.js +3 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/cli-io-impl.d.ts +48 -26
- package/dist/cli/utils/cli-io-impl.d.ts.map +1 -1
- package/dist/cli/utils/cli-io-impl.js +124 -40
- package/dist/cli/utils/cli-io-impl.js.map +1 -1
- package/dist/cli/utils/cli-io.d.ts +57 -29
- package/dist/cli/utils/cli-io.d.ts.map +1 -1
- package/dist/cli/utils/cli-io.js +8 -4
- package/dist/cli/utils/cli-io.js.map +1 -1
- package/dist/cli/utils/config.d.ts +10 -10
- package/dist/cli/utils/config.d.ts.map +1 -1
- package/dist/cli/utils/config.js +1 -1
- package/dist/cli/utils/config.js.map +1 -1
- package/dist/cli/utils/duplicate-check.d.ts +3 -3
- package/dist/cli/utils/duplicate-check.d.ts.map +1 -1
- package/dist/cli/utils/duplicate-check.js.map +1 -1
- package/dist/cli/utils/email.d.ts +2 -1
- package/dist/cli/utils/email.d.ts.map +1 -1
- package/dist/cli/utils/email.js +8 -21
- package/dist/cli/utils/email.js.map +1 -1
- package/dist/cli/utils/format.d.ts +17 -0
- package/dist/cli/utils/format.d.ts.map +1 -0
- package/dist/cli/utils/format.js +30 -0
- package/dist/cli/utils/format.js.map +1 -0
- package/dist/cli/utils/project-name.d.ts +13 -4
- package/dist/cli/utils/project-name.d.ts.map +1 -1
- package/dist/cli/utils/project-name.js +28 -0
- package/dist/cli/utils/project-name.js.map +1 -1
- package/dist/cli/utils/project.d.ts +21 -8
- package/dist/cli/utils/project.d.ts.map +1 -1
- package/dist/cli/utils/project.js +16 -0
- package/dist/cli/utils/project.js.map +1 -1
- package/dist/cli/utils/prompt-new-project.d.ts +2 -2
- package/dist/cli/utils/prompt-new-project.d.ts.map +1 -1
- package/dist/cli/utils/prompt-new-project.js.map +1 -1
- package/dist/cli/utils/registry.d.ts +10 -10
- package/dist/cli/utils/registry.d.ts.map +1 -1
- package/dist/cli/utils/registry.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/repo-shared/email-validation.d.ts +21 -0
- package/dist/repo-shared/email-validation.d.ts.map +1 -0
- package/dist/repo-shared/email-validation.js +30 -0
- package/dist/repo-shared/email-validation.js.map +1 -0
- package/dist/repo-shared/slug-validation.d.ts +29 -0
- package/dist/repo-shared/slug-validation.d.ts.map +1 -0
- package/dist/repo-shared/slug-validation.js +60 -0
- package/dist/repo-shared/slug-validation.js.map +1 -0
- package/dist/runtime/auth.d.ts +26 -0
- package/dist/runtime/auth.d.ts.map +1 -0
- package/dist/runtime/auth.js +241 -0
- package/dist/runtime/auth.js.map +1 -0
- package/dist/runtime/discord.d.ts +3 -2
- package/dist/runtime/discord.d.ts.map +1 -1
- package/dist/runtime/discord.js.map +1 -1
- package/dist/runtime/entry.d.ts +2 -0
- package/dist/runtime/entry.d.ts.map +1 -1
- package/dist/runtime/entry.js +9 -0
- package/dist/runtime/entry.js.map +1 -1
- package/dist/shared/constants.d.ts +1 -10
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +1 -10
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/hmac.d.ts +17 -0
- package/dist/shared/hmac.d.ts.map +1 -0
- package/dist/shared/hmac.js +37 -0
- package/dist/shared/hmac.js.map +1 -0
- package/dist/shared/plugin-metadata.d.ts.map +1 -1
- package/dist/shared/plugin-metadata.js +6 -4
- package/dist/shared/plugin-metadata.js.map +1 -1
- package/dist/worker-runtime/auth.d.ts +79 -0
- package/dist/worker-runtime/auth.d.ts.map +1 -0
- package/dist/worker-runtime/auth.js +425 -0
- package/dist/worker-runtime/auth.js.map +1 -0
- package/dist/worker-runtime/d1-event-store.d.ts +2 -1
- package/dist/worker-runtime/d1-event-store.d.ts.map +1 -1
- package/dist/worker-runtime/d1-event-store.js +26 -0
- package/dist/worker-runtime/d1-event-store.js.map +1 -1
- package/dist/worker-runtime/entry-extract.d.ts.map +1 -1
- package/dist/worker-runtime/entry-extract.js +1 -0
- package/dist/worker-runtime/entry-extract.js.map +1 -1
- package/dist/worker-runtime/entry.d.ts.map +1 -1
- package/dist/worker-runtime/entry.js +24 -16
- package/dist/worker-runtime/entry.js.map +1 -1
- package/dist/worker-runtime/index.d.ts +2 -0
- package/dist/worker-runtime/index.d.ts.map +1 -1
- package/dist/worker-runtime/index.js +2 -0
- package/dist/worker-runtime/index.js.map +1 -1
- package/dist/worker-runtime/types.d.ts +2 -0
- package/dist/worker-runtime/types.d.ts.map +1 -1
- package/dist/workflow/runtime.d.ts +3 -0
- package/dist/workflow/runtime.d.ts.map +1 -1
- package/dist/workflow/runtime.js +37 -4
- package/dist/workflow/runtime.js.map +1 -1
- package/node_modules/flingflow/README.md +10 -0
- package/node_modules/flingflow/SPEC.md +0 -4
- package/node_modules/flingflow/TESTING.md +2 -0
- package/node_modules/flingflow/dist/index.d.ts +1 -1
- package/node_modules/flingflow/dist/store-memory.d.ts +2 -1
- package/node_modules/flingflow/dist/store-memory.js +36 -0
- package/node_modules/flingflow/dist/store-memory.js.map +1 -1
- package/node_modules/flingflow/dist/store-sqlite.d.ts +2 -1
- package/node_modules/flingflow/dist/store-sqlite.js +45 -0
- package/node_modules/flingflow/dist/store-sqlite.js.map +1 -1
- package/node_modules/flingflow/dist/store.d.ts +5 -0
- package/node_modules/flingflow/src/index.ts +1 -1
- package/node_modules/flingflow/src/store-memory.ts +40 -0
- package/node_modules/flingflow/src/store-sqlite.ts +47 -0
- package/node_modules/flingflow/src/store.ts +6 -0
- package/node_modules/flingflow/test/store-conformance.ts +42 -0
- package/package.json +3 -3
- package/templates/default/dot-claude/skills/fling/.hash +1 -1
- package/templates/default/dot-claude/skills/fling/SKILL.md +4 -2
- package/templates/default/dot-claude/skills/fling/references/AUTH.md +149 -0
|
@@ -4,10 +4,14 @@
|
|
|
4
4
|
* These interfaces allow CLI command logic to be tested without mocking
|
|
5
5
|
* individual modules. Tests can provide fake implementations.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* -
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* Naming convention (see AGENTS.md "Dependency Injection in CLI Code"):
|
|
8
|
+
* - Primitive capability interfaces end in `IO` (e.g. `ConsoleIO`, `ProcessIO`,
|
|
9
|
+
* `FileIO`, `EnvIO`, `UserIO`) — small, composable effect surfaces, often
|
|
10
|
+
* combined via `extends`.
|
|
11
|
+
* - Command-level dependency containers end in `Deps` (e.g. `DbDeps`,
|
|
12
|
+
* `LaunchDeps`, `InitDeps`) — the bag of dependencies passed into a
|
|
13
|
+
* `runX(...)` function. These typically aggregate the primitive `xxxIO`
|
|
14
|
+
* capabilities plus higher-level injected functions.
|
|
11
15
|
*/
|
|
12
16
|
import type { ChildProcess, SpawnOptions as NodeSpawnOptions } from "node:child_process";
|
|
13
17
|
import type { BuildContext, BuildOptions } from "esbuild";
|
|
@@ -116,40 +120,40 @@ export interface Lstat {
|
|
|
116
120
|
isSymbolicLink(): boolean;
|
|
117
121
|
} | null;
|
|
118
122
|
}
|
|
119
|
-
export interface
|
|
123
|
+
export interface DbFileDeps extends FileIO, Mkdir {
|
|
120
124
|
remove(path: string, options?: {
|
|
121
125
|
force?: boolean;
|
|
122
126
|
}): void;
|
|
123
127
|
}
|
|
124
|
-
export interface
|
|
128
|
+
export interface StorageFileDeps extends FileIO, ReadFileBuffer, WriteFileBuffer {
|
|
125
129
|
stat(path: string): {
|
|
126
130
|
size: number;
|
|
127
131
|
};
|
|
128
132
|
createReadStream(path: string): ReadableStream<Uint8Array>;
|
|
129
133
|
}
|
|
130
|
-
export interface
|
|
134
|
+
export interface LaunchFileDeps extends FileIO, Mkdir {
|
|
131
135
|
isProjectRoot(path: string): boolean;
|
|
132
136
|
isDirEmpty(path: string): boolean;
|
|
133
137
|
}
|
|
134
|
-
export interface
|
|
138
|
+
export interface InitFileDeps extends FileIO, Mkdir, ReadFileString, WriteFileString {
|
|
135
139
|
copy(src: string, dest: string, options?: {
|
|
136
140
|
recursive?: boolean;
|
|
137
141
|
}): void;
|
|
138
142
|
readdir(path: string): string[];
|
|
139
143
|
}
|
|
140
|
-
export interface
|
|
144
|
+
export interface DevFileDeps extends FileIO, Mkdir, WriteFileString {
|
|
141
145
|
}
|
|
142
|
-
export interface
|
|
146
|
+
export interface ConfigFileDeps extends FileIO, Mkdir, ReadFileString, WriteFileString {
|
|
143
147
|
delete(path: string): void;
|
|
144
148
|
rename(src: string, dest: string): void;
|
|
145
149
|
}
|
|
146
|
-
export interface
|
|
150
|
+
export interface ProjectFileDeps extends FileIO, ReadFileString, Lstat {
|
|
147
151
|
}
|
|
148
|
-
export interface
|
|
152
|
+
export interface RegistryFileDeps extends FileIO, ReadFileString, WriteFileString, Mkdir {
|
|
149
153
|
}
|
|
150
|
-
export interface
|
|
154
|
+
export interface RegistryDeps {
|
|
151
155
|
env: EnvIO;
|
|
152
|
-
file:
|
|
156
|
+
file: RegistryFileDeps;
|
|
153
157
|
isProjectRoot(dir: string): boolean;
|
|
154
158
|
}
|
|
155
159
|
export interface UserIO {
|
|
@@ -198,6 +202,19 @@ export interface BrowserIO {
|
|
|
198
202
|
export interface TimingIO {
|
|
199
203
|
sleep(ms: number): Promise<void>;
|
|
200
204
|
}
|
|
205
|
+
/**
|
|
206
|
+
* Handle returned by a watcher; calling close() stops further callbacks.
|
|
207
|
+
*/
|
|
208
|
+
export interface WatchHandle {
|
|
209
|
+
close(): void;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Watch a single file. The implementation is responsible for any debouncing
|
|
213
|
+
* and edge cases (atomic-rename writes, file recreated after deletion).
|
|
214
|
+
* `onChange` fires with no arguments whenever the file at `path` is created,
|
|
215
|
+
* modified, or deleted.
|
|
216
|
+
*/
|
|
217
|
+
export type WatchFn = (path: string, onChange: () => void) => WatchHandle;
|
|
201
218
|
/**
|
|
202
219
|
* Readable stream interface for spawn stdout/stderr.
|
|
203
220
|
*/
|
|
@@ -242,20 +259,29 @@ export interface InitMeta {
|
|
|
242
259
|
packageVersion: string | null;
|
|
243
260
|
isDevelopmentMode: boolean;
|
|
244
261
|
}
|
|
245
|
-
|
|
246
|
-
|
|
262
|
+
/**
|
|
263
|
+
* Project-detection gate used by user-facing CLI commands (init, dev, push,
|
|
264
|
+
* storage, db) to refuse to run outside a Fling project.
|
|
265
|
+
*/
|
|
266
|
+
export interface ProjectCheckDeps {
|
|
267
|
+
isFlingProject(dir: string): boolean;
|
|
268
|
+
}
|
|
269
|
+
export interface DbDeps {
|
|
270
|
+
file: DbFileDeps;
|
|
247
271
|
process: ProcessIO;
|
|
248
272
|
database: DbAdapter;
|
|
249
273
|
console: ConsoleIO;
|
|
274
|
+
project: ProjectCheckDeps;
|
|
250
275
|
}
|
|
251
|
-
export interface
|
|
252
|
-
file:
|
|
276
|
+
export interface StorageDeps {
|
|
277
|
+
file: StorageFileDeps;
|
|
253
278
|
process: ProcessIOWithStdio;
|
|
254
279
|
console: ConsoleIO;
|
|
280
|
+
project: ProjectCheckDeps;
|
|
255
281
|
}
|
|
256
|
-
export interface
|
|
282
|
+
export interface LaunchDeps {
|
|
257
283
|
user: UserIO;
|
|
258
|
-
file:
|
|
284
|
+
file: LaunchFileDeps;
|
|
259
285
|
paths: LaunchPaths;
|
|
260
286
|
process: ProcessIO & {
|
|
261
287
|
chdir(dir: string): void;
|
|
@@ -264,18 +290,19 @@ export interface LaunchIO {
|
|
|
264
290
|
spawn: SpawnFn;
|
|
265
291
|
claudeCode: ClaudeCodeIO;
|
|
266
292
|
}
|
|
267
|
-
export interface
|
|
268
|
-
file:
|
|
293
|
+
export interface InitDeps {
|
|
294
|
+
file: InitFileDeps;
|
|
269
295
|
process: ProcessIO;
|
|
270
296
|
console: ConsoleIO;
|
|
271
297
|
paths: InitPaths;
|
|
272
298
|
meta: InitMeta;
|
|
299
|
+
project: ProjectCheckDeps;
|
|
273
300
|
registry: {
|
|
274
301
|
register(path: string): void;
|
|
275
302
|
};
|
|
276
303
|
}
|
|
277
|
-
export interface
|
|
278
|
-
file:
|
|
304
|
+
export interface UpgradeDeps {
|
|
305
|
+
file: InitFileDeps;
|
|
279
306
|
process: ProcessIO;
|
|
280
307
|
console: ConsoleIO;
|
|
281
308
|
paths: InitPaths;
|
|
@@ -288,8 +315,8 @@ export interface DevPaths {
|
|
|
288
315
|
nodeRuntimePath: string;
|
|
289
316
|
honoNodeServerPath: string;
|
|
290
317
|
}
|
|
291
|
-
export interface
|
|
292
|
-
file:
|
|
318
|
+
export interface DevDeps {
|
|
319
|
+
file: DevFileDeps;
|
|
293
320
|
process: ProcessIOWithStdio & ProcessIOWithSignals & {
|
|
294
321
|
execPath: string;
|
|
295
322
|
platform: NodeJS.Platform;
|
|
@@ -297,7 +324,7 @@ export interface DevIO {
|
|
|
297
324
|
};
|
|
298
325
|
console: ConsoleIO;
|
|
299
326
|
paths: DevPaths;
|
|
300
|
-
project: {
|
|
327
|
+
project: ProjectCheckDeps & {
|
|
301
328
|
hasWorkerEntry(cwd: string): boolean;
|
|
302
329
|
getWorkerEntryPath(cwd: string): string;
|
|
303
330
|
};
|
|
@@ -314,9 +341,10 @@ export interface DevIO {
|
|
|
314
341
|
destroy(): void;
|
|
315
342
|
};
|
|
316
343
|
};
|
|
344
|
+
watch: WatchFn;
|
|
317
345
|
}
|
|
318
|
-
export interface
|
|
319
|
-
file:
|
|
346
|
+
export interface ConfigDeps {
|
|
347
|
+
file: ConfigFileDeps;
|
|
320
348
|
env: EnvIO;
|
|
321
349
|
console: {
|
|
322
350
|
error(message: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-io.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/cli-io.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cli-io.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/cli-io.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/utils/cli-io.js
CHANGED
|
@@ -4,10 +4,14 @@
|
|
|
4
4
|
* These interfaces allow CLI command logic to be tested without mocking
|
|
5
5
|
* individual modules. Tests can provide fake implementations.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* -
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* Naming convention (see AGENTS.md "Dependency Injection in CLI Code"):
|
|
8
|
+
* - Primitive capability interfaces end in `IO` (e.g. `ConsoleIO`, `ProcessIO`,
|
|
9
|
+
* `FileIO`, `EnvIO`, `UserIO`) — small, composable effect surfaces, often
|
|
10
|
+
* combined via `extends`.
|
|
11
|
+
* - Command-level dependency containers end in `Deps` (e.g. `DbDeps`,
|
|
12
|
+
* `LaunchDeps`, `InitDeps`) — the bag of dependencies passed into a
|
|
13
|
+
* `runX(...)` function. These typically aggregate the primitive `xxxIO`
|
|
14
|
+
* capabilities plus higher-level injected functions.
|
|
11
15
|
*/
|
|
12
16
|
export {};
|
|
13
17
|
//# sourceMappingURL=cli-io.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-io.js","sourceRoot":"","sources":["../../../src/cli/utils/cli-io.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cli-io.js","sourceRoot":"","sources":["../../../src/cli/utils/cli-io.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
|
@@ -10,49 +10,49 @@
|
|
|
10
10
|
* Automatic migration: If ~/.fling exists but the new location doesn't,
|
|
11
11
|
* config is automatically migrated with a one-time notice.
|
|
12
12
|
*/
|
|
13
|
-
import type {
|
|
13
|
+
import type { ConfigDeps } from "./cli-io.js";
|
|
14
14
|
/**
|
|
15
15
|
* Get the legacy config directory path (~/.fling).
|
|
16
16
|
*/
|
|
17
|
-
export declare function getLegacyConfigDir(io:
|
|
17
|
+
export declare function getLegacyConfigDir(io: ConfigDeps): string;
|
|
18
18
|
/**
|
|
19
19
|
* Get the XDG-compliant config directory path.
|
|
20
20
|
* When PRIVATE_PLATFORM is set, uses "fling-{platform}" as the directory name.
|
|
21
21
|
* Respects XDG_CONFIG_HOME if set, otherwise defaults to ~/.config/fling.
|
|
22
22
|
*/
|
|
23
|
-
export declare function getXdgConfigDir(io:
|
|
23
|
+
export declare function getXdgConfigDir(io: ConfigDeps): string;
|
|
24
24
|
/**
|
|
25
25
|
* Migrate config from legacy ~/.fling to XDG location if needed.
|
|
26
26
|
* Returns true if migration was performed, false otherwise.
|
|
27
27
|
*/
|
|
28
|
-
export declare function migrateConfig(io:
|
|
28
|
+
export declare function migrateConfig(io: ConfigDeps): boolean;
|
|
29
29
|
/**
|
|
30
30
|
* Get the configuration directory.
|
|
31
31
|
* Priority: FLING_CONFIG_DIR > XDG_CONFIG_HOME/fling > ~/.config/fling
|
|
32
32
|
*/
|
|
33
|
-
export declare function getConfigDirWithIO(io:
|
|
33
|
+
export declare function getConfigDirWithIO(io: ConfigDeps, attemptMigration?: boolean): string;
|
|
34
34
|
/**
|
|
35
35
|
* Get the stored API token, or null if not logged in.
|
|
36
36
|
* Empty or whitespace-only tokens are treated as null.
|
|
37
37
|
*/
|
|
38
|
-
export declare function getTokenWithIO(io:
|
|
38
|
+
export declare function getTokenWithIO(io: ConfigDeps, configDir: string): string | null;
|
|
39
39
|
/**
|
|
40
40
|
* Store the API token.
|
|
41
41
|
*/
|
|
42
|
-
export declare function setTokenWithIO(io:
|
|
42
|
+
export declare function setTokenWithIO(io: ConfigDeps, configDir: string, token: string): void;
|
|
43
43
|
/**
|
|
44
44
|
* Remove the stored token.
|
|
45
45
|
*/
|
|
46
|
-
export declare function clearTokenWithIO(io:
|
|
46
|
+
export declare function clearTokenWithIO(io: ConfigDeps, configDir: string): void;
|
|
47
47
|
/**
|
|
48
48
|
* Get the API URL.
|
|
49
49
|
* Priority: FLING_API_URL env var > config file > default
|
|
50
50
|
*/
|
|
51
|
-
export declare function getApiUrlWithIO(io:
|
|
51
|
+
export declare function getApiUrlWithIO(io: ConfigDeps, configDir: string): string;
|
|
52
52
|
/**
|
|
53
53
|
* Set the API URL (for development/testing).
|
|
54
54
|
*/
|
|
55
|
-
export declare function setApiUrlWithIO(io:
|
|
55
|
+
export declare function setApiUrlWithIO(io: ConfigDeps, configDir: string, url: string): void;
|
|
56
56
|
/**
|
|
57
57
|
* Reset the cached config dir. Used for testing.
|
|
58
58
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAU9C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAOtD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAuCrD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,UAAU,EACd,gBAAgB,GAAE,OAAc,GAC/B,MAAM,CAYR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK/E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,UAAU,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,IAAI,CAIN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAGxE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAWzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,UAAU,EACd,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,IAAI,CAIN;AA4BD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAExC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAMD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;AAqCvB;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI,CAE1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4BrD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,QAAQ,CAAC,CAcnB"}
|
package/dist/cli/utils/config.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* config is automatically migrated with a one-time notice.
|
|
12
12
|
*/
|
|
13
13
|
import { join, dirname } from "node:path";
|
|
14
|
-
import {
|
|
14
|
+
import { configDeps as defaultConfigIO } from "./cli-io-impl.js";
|
|
15
15
|
import { DEFAULT_PLATFORM_API_URL, resolveConfigDir } from "../../shared/constants.js";
|
|
16
16
|
import { NOT_LOGGED_IN_MESSAGE } from "../commands/auth-shared.js";
|
|
17
17
|
import { fetchWithRetry } from "./retry.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Detects when multiple registered projects share the same project name,
|
|
5
5
|
* which would cause deployments to overwrite each other.
|
|
6
6
|
*/
|
|
7
|
-
import { type DuplicateGroup, type
|
|
7
|
+
import { type DuplicateGroup, type DuplicateCheckDeps } from "./registry.js";
|
|
8
8
|
import type { ConsoleIO } from "./cli-io.js";
|
|
9
9
|
export interface DuplicateCheckResult {
|
|
10
10
|
hasDuplicates: boolean;
|
|
@@ -18,7 +18,7 @@ export interface DuplicateCheckResult {
|
|
|
18
18
|
* If cwd is not in the registry, its project name is still included in the scan
|
|
19
19
|
* to detect duplicates with unregistered projects.
|
|
20
20
|
*/
|
|
21
|
-
export declare function checkDuplicateNames(cwd: string, io:
|
|
21
|
+
export declare function checkDuplicateNames(cwd: string, io: DuplicateCheckDeps): DuplicateCheckResult;
|
|
22
22
|
/**
|
|
23
23
|
* Format a duplicate project name warning for CLI output.
|
|
24
24
|
* Returns an array of lines to print.
|
|
@@ -28,5 +28,5 @@ export declare function formatDuplicateWarning(result: DuplicateCheckResult, cwd
|
|
|
28
28
|
* Convenience wrapper: detect duplicates and print warning.
|
|
29
29
|
* Used by push and launch commands.
|
|
30
30
|
*/
|
|
31
|
-
export declare function checkAndWarnDuplicateNames(cwd: string, io:
|
|
31
|
+
export declare function checkAndWarnDuplicateNames(cwd: string, io: DuplicateCheckDeps, console: ConsoleIO): DuplicateCheckResult;
|
|
32
32
|
//# sourceMappingURL=duplicate-check.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate-check.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/duplicate-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,
|
|
1
|
+
{"version":3,"file":"duplicate-check.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/duplicate-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,kBAAkB,GACrB,oBAAoB,CAqCtB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,oBAAoB,EAC5B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CA6DV;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,kBAAkB,EACtB,OAAO,EAAE,SAAS,GACjB,oBAAoB,CAOtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate-check.js","sourceRoot":"","sources":["../../../src/cli/utils/duplicate-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,yBAAyB,EACzB,gBAAgB,GAGjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AASjE;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAW,EACX,
|
|
1
|
+
{"version":3,"file":"duplicate-check.js","sourceRoot":"","sources":["../../../src/cli/utils/duplicate-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,yBAAyB,EACzB,gBAAgB,GAGjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AASjE;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAW,EACX,EAAsB;IAEtB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,aAAa,GAAG,gBAAgB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE1D,8CAA8C;IAC9C,MAAM,MAAM,GAAG,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAE7C,oEAAoE;IACpE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,EAAE,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,OAAO,KAAK,oBAAoB,EAAE,CAAC;YACrC,4CAA4C;YAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC;YACpE,IAAI,aAAa,EAAE,CAAC;gBAClB,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,mFAAmF;gBACnF,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,OAAO,CAC/C,CAAC;gBACF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC;wBACV,WAAW,EAAE,OAAO;wBACpB,KAAK,EAAE,CAAC,GAAG,aAAa,EAAE,WAAW,CAAC;qBACvC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,MAAM,sBAAsB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/C,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC9B,CAAC;IAEF,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAA4B,EAC5B,GAAW;IAEX,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CACR,gFAAgF,CACjF,CAAC;IACF,KAAK,CAAC,IAAI,CACR,iFAAiF,CAClF,CAAC;IACF,KAAK,CAAC,IAAI,CACR,6EAA6E,CAC9E,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,WAAW,iBAAiB,CAAC,CAAC;QAClE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CACR,kFAAkF,CACnF,CAAC;QACF,KAAK,CAAC,IAAI,CACR,qFAAqF,CACtF,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,8FAA8F,CAC/F,CAAC;QACF,KAAK,CAAC,IAAI,CACR,sFAAsF,CACvF,CAAC;QACF,KAAK,CAAC,IAAI,CACR,2EAA2E,CAC5E,CAAC;QACF,KAAK,CAAC,IAAI,CACR,gEAAgE,CACjE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,gFAAgF,CACjF,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,GAAW,EACX,EAAsB,EACtB,OAAkB;IAElB,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* Validates email format (via Zod) and rejects RFC 2606 example domains.
|
|
5
5
|
* Pure functions — no DI needed.
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
import { isExampleDomain } from "#repo-shared/email-validation";
|
|
8
|
+
export { isExampleDomain };
|
|
8
9
|
export declare function validateEmail(raw: string): {
|
|
9
10
|
valid: true;
|
|
10
11
|
email: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/email.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/email.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAqB,MAAM,+BAA+B,CAAC;AAEnF,OAAO,EAAE,eAAe,EAAE,CAAC;AAM3B,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,GACV;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAIlE"}
|
package/dist/cli/utils/email.js
CHANGED
|
@@ -4,28 +4,15 @@
|
|
|
4
4
|
* Validates email format (via Zod) and rejects RFC 2606 example domains.
|
|
5
5
|
* Pure functions — no DI needed.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const domain = email.split("@")[1]?.toLowerCase();
|
|
12
|
-
if (!domain)
|
|
13
|
-
return false;
|
|
14
|
-
return EXAMPLE_DOMAIN_PATTERN.test(domain);
|
|
7
|
+
import { isExampleDomain, validateUserEmail } from "#repo-shared/email-validation";
|
|
8
|
+
export { isExampleDomain };
|
|
9
|
+
function toCliError(error) {
|
|
10
|
+
return `${error}.`;
|
|
15
11
|
}
|
|
16
12
|
export function validateEmail(raw) {
|
|
17
|
-
const
|
|
18
|
-
if (
|
|
19
|
-
return
|
|
20
|
-
|
|
21
|
-
return { valid: false, error: "Invalid email address." };
|
|
22
|
-
}
|
|
23
|
-
if (isExampleDomain(email)) {
|
|
24
|
-
return {
|
|
25
|
-
valid: false,
|
|
26
|
-
error: "Example domains (example.com, example.org, example.net) are not allowed.",
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
return { valid: true, email };
|
|
13
|
+
const result = validateUserEmail(raw);
|
|
14
|
+
if (result.valid)
|
|
15
|
+
return result;
|
|
16
|
+
return { valid: false, error: toCliError(result.error) };
|
|
30
17
|
}
|
|
31
18
|
//# sourceMappingURL=email.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/cli/utils/email.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/cli/utils/email.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEnF,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,GAAG,KAAK,GAAG,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,GAAW;IAEX,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAChC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Date/time formatting helpers for human-facing CLI output.
|
|
3
|
+
*
|
|
4
|
+
* Output is in the host's local timezone. For machine-readable timestamps
|
|
5
|
+
* (API payloads, log storage, queue messages, etc.), use `Date.toISOString()`
|
|
6
|
+
* directly — do not use these helpers.
|
|
7
|
+
*/
|
|
8
|
+
export type DateInput = Date | number;
|
|
9
|
+
export interface FormatDateTimeOptions {
|
|
10
|
+
/** Append `.SSS` milliseconds suffix. Default: false. */
|
|
11
|
+
milliseconds?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/** Format as `YYYY-MM-DD` in local time. */
|
|
14
|
+
export declare function formatDate(input: DateInput): string;
|
|
15
|
+
/** Format as `YYYY-MM-DD HH:MM:SS` (or `...HH:MM:SS.SSS` if `milliseconds: true`) in local time. */
|
|
16
|
+
export declare function formatDateTime(input: DateInput, options?: FormatDateTimeOptions): string;
|
|
17
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/format.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC;AAEtC,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAcD,4CAA4C;AAC5C,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAGnD;AAED,oGAAoG;AACpG,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE,qBAA0B,GAAG,MAAM,CAM5F"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Date/time formatting helpers for human-facing CLI output.
|
|
3
|
+
*
|
|
4
|
+
* Output is in the host's local timezone. For machine-readable timestamps
|
|
5
|
+
* (API payloads, log storage, queue messages, etc.), use `Date.toISOString()`
|
|
6
|
+
* directly — do not use these helpers.
|
|
7
|
+
*/
|
|
8
|
+
function toLocalDate(input) {
|
|
9
|
+
const d = input instanceof Date ? input : new Date(input);
|
|
10
|
+
if (Number.isNaN(d.getTime())) {
|
|
11
|
+
throw new RangeError(`Invalid date input: ${String(input)}`);
|
|
12
|
+
}
|
|
13
|
+
return d;
|
|
14
|
+
}
|
|
15
|
+
function pad(n, width = 2) {
|
|
16
|
+
return String(n).padStart(width, "0");
|
|
17
|
+
}
|
|
18
|
+
/** Format as `YYYY-MM-DD` in local time. */
|
|
19
|
+
export function formatDate(input) {
|
|
20
|
+
const d = toLocalDate(input);
|
|
21
|
+
return `${pad(d.getFullYear(), 4)}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
|
|
22
|
+
}
|
|
23
|
+
/** Format as `YYYY-MM-DD HH:MM:SS` (or `...HH:MM:SS.SSS` if `milliseconds: true`) in local time. */
|
|
24
|
+
export function formatDateTime(input, options = {}) {
|
|
25
|
+
const d = toLocalDate(input);
|
|
26
|
+
const base = `${pad(d.getFullYear(), 4)}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ` +
|
|
27
|
+
`${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
|
|
28
|
+
return options.milliseconds ? `${base}.${pad(d.getMilliseconds(), 3)}` : base;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cli/utils/format.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,SAAS,WAAW,CAAC,KAAgB;IACnC,MAAM,CAAC,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,UAAU,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,GAAG,CAAC,CAAS,EAAE,KAAK,GAAG,CAAC;IAC/B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,UAAU,CAAC,KAAgB;IACzC,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,cAAc,CAAC,KAAgB,EAAE,UAAiC,EAAE;IAClF,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,IAAI,GACR,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG;QAC1E,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;IACvE,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAChF,CAAC"}
|
|
@@ -11,11 +11,20 @@ export { DEFAULT_PROJECT_NAME };
|
|
|
11
11
|
/**
|
|
12
12
|
* File operations needed for reading project name.
|
|
13
13
|
*/
|
|
14
|
-
export type
|
|
14
|
+
export type ProjectNameFileDeps = FileIO & ReadFileString;
|
|
15
15
|
/**
|
|
16
16
|
* File operations needed for reading and writing project name.
|
|
17
17
|
*/
|
|
18
|
-
export type
|
|
18
|
+
export type ProjectNameWriteDeps = ProjectNameFileDeps & WriteFileString;
|
|
19
|
+
/**
|
|
20
|
+
* Check whether package.json has a `fling` config (a non-null, non-array object).
|
|
21
|
+
* This is the marker that identifies a directory as a Fling project even when
|
|
22
|
+
* the local-only `.fling/` directory is absent (e.g., after `git clone`).
|
|
23
|
+
*
|
|
24
|
+
* Strict on shape: only a plain object counts. Rejects `true`, strings, arrays,
|
|
25
|
+
* and `null` so junk left by other tools doesn't accidentally match.
|
|
26
|
+
*/
|
|
27
|
+
export declare function hasFlingConfig(file: ProjectNameFileDeps, projectDir: string): boolean;
|
|
19
28
|
/**
|
|
20
29
|
* Read the project name from package.json's fling.projectName field.
|
|
21
30
|
* Returns DEFAULT_PROJECT_NAME if the field is not present (backwards compatibility).
|
|
@@ -25,7 +34,7 @@ export type ProjectNameWriteIO = ProjectNameFileIO & WriteFileString;
|
|
|
25
34
|
* @param projectDir - The project directory (defaults to cwd())
|
|
26
35
|
* @returns The project name, or DEFAULT_PROJECT_NAME if not set
|
|
27
36
|
*/
|
|
28
|
-
export declare function getProjectName(file:
|
|
37
|
+
export declare function getProjectName(file: ProjectNameFileDeps, cwd: () => string, projectDir?: string): string;
|
|
29
38
|
/**
|
|
30
39
|
* Regenerate the project name in package.json.
|
|
31
40
|
* Sets fling.projectName to a new random code and writes back.
|
|
@@ -35,5 +44,5 @@ export declare function getProjectName(file: ProjectNameFileIO, cwd: () => strin
|
|
|
35
44
|
* @param generateCode - Function to generate a new code (default: generateRandomCode)
|
|
36
45
|
* @returns The new project name on success, null on failure
|
|
37
46
|
*/
|
|
38
|
-
export declare function regenerateProjectName(file:
|
|
47
|
+
export declare function regenerateProjectName(file: ProjectNameWriteDeps, projectDir: string, generateCode?: () => string): string | null;
|
|
39
48
|
//# sourceMappingURL=project-name.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-name.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/project-name.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG3E,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAQhC;;GAEG;AACH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"project-name.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/project-name.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG3E,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAQhC;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,cAAc,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,eAAe,CAAC;AAEzE;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,MAAM,GACjB,OAAO,CAoBT;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,mBAAmB,EACzB,GAAG,EAAE,MAAM,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAmBR;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,oBAAoB,EAC1B,UAAU,EAAE,MAAM,EAClB,YAAY,GAAE,MAAM,MAA2B,GAC9C,MAAM,GAAG,IAAI,CA8Bf"}
|
|
@@ -10,6 +10,34 @@ import { DEFAULT_PROJECT_NAME } from "../../shared/constants.js";
|
|
|
10
10
|
import { generateRandomCode } from "../../shared/random-code.js";
|
|
11
11
|
// Re-export for consumers
|
|
12
12
|
export { DEFAULT_PROJECT_NAME };
|
|
13
|
+
/**
|
|
14
|
+
* Check whether package.json has a `fling` config (a non-null, non-array object).
|
|
15
|
+
* This is the marker that identifies a directory as a Fling project even when
|
|
16
|
+
* the local-only `.fling/` directory is absent (e.g., after `git clone`).
|
|
17
|
+
*
|
|
18
|
+
* Strict on shape: only a plain object counts. Rejects `true`, strings, arrays,
|
|
19
|
+
* and `null` so junk left by other tools doesn't accidentally match.
|
|
20
|
+
*/
|
|
21
|
+
export function hasFlingConfig(file, projectDir) {
|
|
22
|
+
const packageJsonPath = join(projectDir, "package.json");
|
|
23
|
+
if (!file.exists(packageJsonPath)) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
const content = file.readFileString(packageJsonPath);
|
|
27
|
+
if (content === null) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
let pkg;
|
|
31
|
+
try {
|
|
32
|
+
pkg = JSON.parse(content);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
return (typeof pkg.fling === "object" &&
|
|
38
|
+
pkg.fling !== null &&
|
|
39
|
+
!Array.isArray(pkg.fling));
|
|
40
|
+
}
|
|
13
41
|
/**
|
|
14
42
|
* Read the project name from package.json's fling.projectName field.
|
|
15
43
|
* Returns DEFAULT_PROJECT_NAME if the field is not present (backwards compatibility).
|