@flytedesk/app-kit 0.1.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/flags-sync.d.ts +2 -0
- package/dist/cli/flags-sync.js +26 -0
- package/dist/cli/flags-sync.js.map +1 -0
- package/dist/cli/profile-sync.d.ts +2 -0
- package/dist/cli/profile-sync.js +26 -0
- package/dist/cli/profile-sync.js.map +1 -0
- package/dist/cli/sync-engine.d.ts +20 -0
- package/dist/cli/sync-engine.js +543 -0
- package/dist/cli/sync-engine.js.map +1 -0
- package/dist/cli/trace-sync.js +9 -359
- package/dist/cli/trace-sync.js.map +1 -1
- package/dist/flags/index.d.ts +49 -0
- package/dist/flags/index.js +49 -0
- package/dist/flags/index.js.map +1 -0
- package/dist/flags/plugin.d.ts +3 -0
- package/dist/flags/plugin.js +296 -0
- package/dist/flags/plugin.js.map +1 -0
- package/dist/flags/types.d.ts +159 -0
- package/dist/flags/types.js +11 -0
- package/dist/flags/types.js.map +1 -0
- package/dist/profile/index.d.ts +36 -0
- package/dist/profile/index.js +36 -0
- package/dist/profile/index.js.map +1 -0
- package/dist/profile/plugin.d.ts +3 -0
- package/dist/profile/plugin.js +111 -0
- package/dist/profile/plugin.js.map +1 -0
- package/dist/profile/types.d.ts +76 -0
- package/dist/profile/types.js +10 -0
- package/dist/profile/types.js.map +1 -0
- package/package.json +12 -2
- package/prisma/fragments/flags.meta.json +4 -0
- package/prisma/fragments/flags.prisma +52 -0
- package/prisma/fragments/profile.meta.json +4 -0
- package/prisma/fragments/profile.prisma +42 -0
- package/prisma/migrations/0002_app_kit_profile_init/migration.sql +15 -0
- package/prisma/migrations/0003_app_kit_flags_init/migration.sql +16 -0
- package/prisma/migrations/manifest.json +15 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-engine.js","sourceRoot":"","sources":["../../src/cli/sync-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/trace-sync.js
CHANGED
|
@@ -2,372 +2,22 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* trace-sync — the CLI half of @flytedesk/app-kit/trace (DEC-39).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* consumer's own `prisma generate` then produces one client that includes these
|
|
11
|
-
* models alongside their own.
|
|
12
|
-
*
|
|
13
|
-
* Subcommands:
|
|
14
|
-
* trace-sync init copy fragment + migration in, run `prisma validate` and
|
|
15
|
-
* `prisma db execute`, write the lock file.
|
|
16
|
-
* trace-sync diff read-only: compare this package's bundled fragment
|
|
17
|
-
* version / migration manifest against the consumer's lock
|
|
18
|
-
* file and report what's pending. Never applies anything.
|
|
19
|
-
* trace-sync apply apply pending migrations + refresh the fragment copy,
|
|
20
|
-
* update the lock file. Does not re-run `prisma validate`
|
|
21
|
-
* against a fresh init — use `init` for first install.
|
|
22
|
-
* trace-sync status read-only report: fragment version, applied migrations,
|
|
23
|
-
* and whether the consumer's copy of the fragment has been
|
|
24
|
-
* hand-edited (checksum mismatch).
|
|
25
|
-
*
|
|
26
|
-
* This is a real, runnable CLI — it shells out to the consumer's local `prisma`
|
|
27
|
-
* via `npx` and touches the consumer's real filesystem — not a stub.
|
|
28
|
-
*/
|
|
29
|
-
import { createHash } from "node:crypto";
|
|
30
|
-
import spawn from "cross-spawn";
|
|
31
|
-
import { copyFileSync, cpSync, existsSync, mkdirSync, readFileSync, writeFileSync, } from "node:fs";
|
|
32
|
-
import path from "node:path";
|
|
33
|
-
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
34
|
-
// ---------------------------------------------------------------------------
|
|
35
|
-
// Package-relative paths
|
|
36
|
-
// ---------------------------------------------------------------------------
|
|
37
|
-
/** Root of the installed @flytedesk/app-kit package (two levels up from
|
|
38
|
-
* dist/cli/trace-sync.js — this file, once built). */
|
|
39
|
-
const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
40
|
-
const fragmentSrcPath = path.join(packageRoot, "prisma", "fragments", "trace.prisma");
|
|
41
|
-
const fragmentMetaPath = path.join(packageRoot, "prisma", "fragments", "trace.meta.json");
|
|
42
|
-
const migrationsSrcDir = path.join(packageRoot, "prisma", "migrations");
|
|
43
|
-
const manifestSrcPath = path.join(migrationsSrcDir, "manifest.json");
|
|
44
|
-
const LOCK_FILE_NAME = ".app-kit-trace.lock.json";
|
|
45
|
-
class TraceSyncError extends Error {
|
|
46
|
-
}
|
|
47
|
-
function fail(message) {
|
|
48
|
-
console.error(`trace-sync: ${message}`);
|
|
49
|
-
process.exitCode = 1;
|
|
50
|
-
throw new TraceSyncError(message);
|
|
51
|
-
}
|
|
52
|
-
function readJson(filePath) {
|
|
53
|
-
return JSON.parse(readFileSync(filePath, "utf8"));
|
|
54
|
-
}
|
|
55
|
-
function sha256(content) {
|
|
56
|
-
return `sha256:${createHash("sha256").update(content).digest("hex")}`;
|
|
57
|
-
}
|
|
58
|
-
function sha256File(filePath) {
|
|
59
|
-
return sha256(readFileSync(filePath));
|
|
60
|
-
}
|
|
61
|
-
function readFragmentMeta() {
|
|
62
|
-
return readJson(fragmentMetaPath);
|
|
63
|
-
}
|
|
64
|
-
function readManifest() {
|
|
65
|
-
return readJson(manifestSrcPath);
|
|
66
|
-
}
|
|
67
|
-
function lockFilePath(consumerRoot) {
|
|
68
|
-
return path.join(consumerRoot, LOCK_FILE_NAME);
|
|
69
|
-
}
|
|
70
|
-
function readLockFile(consumerRoot) {
|
|
71
|
-
const p = lockFilePath(consumerRoot);
|
|
72
|
-
if (!existsSync(p))
|
|
73
|
-
return null;
|
|
74
|
-
return readJson(p);
|
|
75
|
-
}
|
|
76
|
-
function writeLockFile(consumerRoot, lock) {
|
|
77
|
-
writeFileSync(lockFilePath(consumerRoot), `${JSON.stringify(lock, null, 2)}\n`, "utf8");
|
|
78
|
-
}
|
|
79
|
-
// ---------------------------------------------------------------------------
|
|
80
|
-
// Locating the consumer's Prisma schema folder via their prisma.config.ts
|
|
81
|
-
// ---------------------------------------------------------------------------
|
|
82
|
-
const CONSUMER_CONFIG_CANDIDATES = [
|
|
83
|
-
"prisma.config.ts",
|
|
84
|
-
"prisma.config.mts",
|
|
85
|
-
"prisma.config.js",
|
|
86
|
-
"prisma.config.mjs",
|
|
87
|
-
];
|
|
88
|
-
function findConsumerConfigFile(consumerRoot) {
|
|
89
|
-
for (const candidate of CONSUMER_CONFIG_CANDIDATES) {
|
|
90
|
-
const p = path.join(consumerRoot, candidate);
|
|
91
|
-
if (existsSync(p))
|
|
92
|
-
return p;
|
|
93
|
-
}
|
|
94
|
-
fail(`could not find a prisma.config.{ts,mts,js,mjs} in ${consumerRoot}. ` +
|
|
95
|
-
`trace-sync reads this file to find your Prisma schema folder — it does not assume a path.`);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Best-effort read of the consumer's `schema` setting out of their
|
|
99
|
-
* prisma.config.ts default export. Supports the shapes Prisma's config API has
|
|
100
|
-
* used: a bare string path (file or folder), or `{ path: string }`. Relies on
|
|
101
|
-
* Node's native TypeScript type-stripping (unflagged as of the Node 24 baseline
|
|
102
|
-
* this package requires) to import a .ts file directly — if the consumer's
|
|
103
|
-
* config uses syntax that isn't erasable (enums, namespaces, parameter
|
|
104
|
-
* properties, etc.) this import will fail, and that failure is surfaced as-is
|
|
105
|
-
* rather than swallowed.
|
|
5
|
+
* A thin wrapper around the generalized sync engine in ./sync-engine.js — see that
|
|
6
|
+
* file's doc comment for the full subcommand reference (init/diff/apply/status) and
|
|
7
|
+
* how fragments/migrations/lock files work. This file only supplies the "trace"
|
|
8
|
+
* fragment name and the "trace-sync" bin name; profile-sync.ts is the same wrapper
|
|
9
|
+
* for the profile fragment.
|
|
106
10
|
*/
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
let mod;
|
|
110
|
-
try {
|
|
111
|
-
mod = await import(pathToFileURL(configFile).href);
|
|
112
|
-
}
|
|
113
|
-
catch (err) {
|
|
114
|
-
fail(`failed to load ${configFile}: ${err.message}\n` +
|
|
115
|
-
`If this config file uses TypeScript syntax that Node can't type-strip natively ` +
|
|
116
|
-
`(enums, namespaces, decorators, ...), trace-sync can't import it directly.`);
|
|
117
|
-
}
|
|
118
|
-
const config = mod.default ?? mod;
|
|
119
|
-
const schema = config?.schema;
|
|
120
|
-
let schemaPath;
|
|
121
|
-
if (typeof schema === "string") {
|
|
122
|
-
schemaPath = schema;
|
|
123
|
-
}
|
|
124
|
-
else if (schema &&
|
|
125
|
-
typeof schema === "object" &&
|
|
126
|
-
typeof schema.path === "string") {
|
|
127
|
-
schemaPath = schema.path;
|
|
128
|
-
}
|
|
129
|
-
if (!schemaPath) {
|
|
130
|
-
fail(`could not find a "schema" path in ${configFile}'s default export. ` +
|
|
131
|
-
`Expected \`defineConfig({ schema: "prisma/schema" })\` (or a { path } object).`);
|
|
132
|
-
}
|
|
133
|
-
return path.resolve(path.dirname(configFile), schemaPath);
|
|
134
|
-
}
|
|
135
|
-
/** Resolve the folder trace.prisma gets copied into, from the config's schema
|
|
136
|
-
* path (which may point at the folder itself, or at a single schema file
|
|
137
|
-
* inside it, e.g. "prisma/schema.prisma"). */
|
|
138
|
-
function resolveSchemaFolder(schemaPath) {
|
|
139
|
-
if (schemaPath.endsWith(".prisma")) {
|
|
140
|
-
return path.dirname(schemaPath);
|
|
141
|
-
}
|
|
142
|
-
return schemaPath;
|
|
143
|
-
}
|
|
144
|
-
/** The conventional "prisma root" a schema folder sits under, used to locate
|
|
145
|
-
* (or create) the sibling `migrations/` directory. For the common multi-file
|
|
146
|
-
* layout `prisma/schema/*.prisma`, that's `prisma/`; for a flat
|
|
147
|
-
* `prisma/schema.prisma` layout, `resolveSchemaFolder` already returned
|
|
148
|
-
* `prisma/`, so this is a no-op. */
|
|
149
|
-
function resolvePrismaRoot(schemaFolder) {
|
|
150
|
-
return path.basename(schemaFolder) === "schema"
|
|
151
|
-
? path.dirname(schemaFolder)
|
|
152
|
-
: schemaFolder;
|
|
153
|
-
}
|
|
154
|
-
// ---------------------------------------------------------------------------
|
|
155
|
-
// Shelling out to the consumer's local `prisma`
|
|
156
|
-
// ---------------------------------------------------------------------------
|
|
157
|
-
function runPrisma(args, cwd) {
|
|
158
|
-
// On Windows, npx resolves to npx.cmd, a shell script — node:child_process's
|
|
159
|
-
// spawnSync can't exec it directly (EINVAL) without shell:true, and shell:true
|
|
160
|
-
// with an argument array is an unescaped-concatenation footgun (path arguments
|
|
161
|
-
// here can contain spaces). cross-spawn resolves and correctly quotes .cmd/.bat
|
|
162
|
-
// executables on Windows without going through a shell at all.
|
|
163
|
-
const result = spawn.sync("npx", ["prisma", ...args], { cwd, stdio: "inherit" });
|
|
164
|
-
if (result.error) {
|
|
165
|
-
fail(`failed to run "npx prisma ${args.join(" ")}": ${result.error.message}`);
|
|
166
|
-
}
|
|
167
|
-
if (result.status !== 0) {
|
|
168
|
-
fail(`"npx prisma ${args.join(" ")}" exited with code ${result.status}`);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
// ---------------------------------------------------------------------------
|
|
172
|
-
// File copying
|
|
173
|
-
// ---------------------------------------------------------------------------
|
|
174
|
-
function copyFragment(schemaFolder) {
|
|
175
|
-
mkdirSync(schemaFolder, { recursive: true });
|
|
176
|
-
copyFileSync(fragmentSrcPath, path.join(schemaFolder, "trace.prisma"));
|
|
177
|
-
}
|
|
178
|
-
function copyMigration(migrationId, migrationsDestDir) {
|
|
179
|
-
const srcDir = path.join(migrationsSrcDir, migrationId);
|
|
180
|
-
const destDir = path.join(migrationsDestDir, migrationId);
|
|
181
|
-
mkdirSync(destDir, { recursive: true });
|
|
182
|
-
cpSync(srcDir, destDir, { recursive: true });
|
|
183
|
-
}
|
|
184
|
-
// ---------------------------------------------------------------------------
|
|
185
|
-
// Subcommands
|
|
186
|
-
// ---------------------------------------------------------------------------
|
|
187
|
-
async function cmdInit(consumerRoot) {
|
|
188
|
-
const schemaPath = await loadConsumerSchemaPath(consumerRoot);
|
|
189
|
-
const schemaFolder = resolveSchemaFolder(schemaPath);
|
|
190
|
-
const prismaRoot = resolvePrismaRoot(schemaFolder);
|
|
191
|
-
const migrationsDestDir = path.join(prismaRoot, "migrations");
|
|
192
|
-
console.log(`trace-sync: copying trace.prisma into ${schemaFolder}`);
|
|
193
|
-
copyFragment(schemaFolder);
|
|
194
|
-
console.log(`trace-sync: running "npx prisma validate" against ${consumerRoot}`);
|
|
195
|
-
runPrisma(["validate"], consumerRoot);
|
|
196
|
-
const manifest = readManifest();
|
|
197
|
-
const appliedMigrations = [];
|
|
198
|
-
for (const entry of manifest) {
|
|
199
|
-
console.log(`trace-sync: copying migration ${entry.id} into ${migrationsDestDir}`);
|
|
200
|
-
copyMigration(entry.id, migrationsDestDir);
|
|
201
|
-
const migrationSqlPath = path.join(migrationsDestDir, entry.id, "migration.sql");
|
|
202
|
-
console.log(`trace-sync: applying ${entry.id} via "npx prisma db execute"`);
|
|
203
|
-
runPrisma(
|
|
204
|
-
// Prisma ORM v7's `db execute` no longer accepts `--schema` at all — the
|
|
205
|
-
// datasource URL comes only from the consumer's prisma.config.ts now (same
|
|
206
|
-
// "config file, not CLI flags" migration documented on flytedesk-id's own
|
|
207
|
-
// prisma.config.ts). Passing --schema here is a hard CLI usage error
|
|
208
|
-
// ("unknown or unexpected option: --schema") against a real Prisma 7 install,
|
|
209
|
-
// confirmed while building examples/hello-world.
|
|
210
|
-
["db", "execute", "--file", migrationSqlPath], consumerRoot);
|
|
211
|
-
appliedMigrations.push(entry.id);
|
|
212
|
-
}
|
|
213
|
-
const meta = readFragmentMeta();
|
|
214
|
-
writeLockFile(consumerRoot, {
|
|
215
|
-
fragmentVersion: meta.fragmentVersion,
|
|
216
|
-
fragmentChecksum: sha256File(fragmentSrcPath),
|
|
217
|
-
appliedMigrations,
|
|
218
|
-
lastSyncedAt: new Date().toISOString(),
|
|
219
|
-
});
|
|
220
|
-
console.log(`trace-sync: wrote ${lockFilePath(consumerRoot)}`);
|
|
221
|
-
console.log("trace-sync: init complete.");
|
|
222
|
-
}
|
|
223
|
-
function computePending(consumerRoot) {
|
|
224
|
-
const lock = readLockFile(consumerRoot);
|
|
225
|
-
if (!lock) {
|
|
226
|
-
fail(`no ${LOCK_FILE_NAME} found at ${consumerRoot}. Run "trace-sync init" first.`);
|
|
227
|
-
}
|
|
228
|
-
const meta = readFragmentMeta();
|
|
229
|
-
const manifest = readManifest();
|
|
230
|
-
const applied = new Set(lock.appliedMigrations);
|
|
231
|
-
const pendingMigrations = manifest.filter((entry) => !applied.has(entry.id));
|
|
232
|
-
return {
|
|
233
|
-
fragmentVersionCurrent: meta.fragmentVersion,
|
|
234
|
-
fragmentVersionInstalled: lock.fragmentVersion,
|
|
235
|
-
fragmentVersionChanged: meta.fragmentVersion !== lock.fragmentVersion,
|
|
236
|
-
pendingMigrations,
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
function cmdDiff(consumerRoot) {
|
|
240
|
-
const report = computePending(consumerRoot);
|
|
241
|
-
if (report.fragmentVersionChanged) {
|
|
242
|
-
console.log(`fragment version: ${report.fragmentVersionInstalled} -> ${report.fragmentVersionCurrent} (changed)`);
|
|
243
|
-
}
|
|
244
|
-
else {
|
|
245
|
-
console.log(`fragment version: ${report.fragmentVersionCurrent} (up to date)`);
|
|
246
|
-
}
|
|
247
|
-
if (report.pendingMigrations.length === 0) {
|
|
248
|
-
console.log("migrations: up to date, nothing pending.");
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
console.log(`migrations: ${report.pendingMigrations.length} pending:`);
|
|
252
|
-
for (const entry of report.pendingMigrations) {
|
|
253
|
-
console.log(` - ${entry.id} (introduced in fragment ${entry.introducedInFragmentVersion})`);
|
|
254
|
-
}
|
|
255
|
-
console.log('trace-sync diff is read-only. Run "trace-sync apply" to apply these.');
|
|
256
|
-
}
|
|
257
|
-
async function cmdApply(consumerRoot) {
|
|
258
|
-
const report = computePending(consumerRoot);
|
|
259
|
-
const schemaPath = await loadConsumerSchemaPath(consumerRoot);
|
|
260
|
-
const schemaFolder = resolveSchemaFolder(schemaPath);
|
|
261
|
-
const prismaRoot = resolvePrismaRoot(schemaFolder);
|
|
262
|
-
const migrationsDestDir = path.join(prismaRoot, "migrations");
|
|
263
|
-
console.log(`trace-sync: refreshing trace.prisma in ${schemaFolder}`);
|
|
264
|
-
copyFragment(schemaFolder);
|
|
265
|
-
const lock = readLockFile(consumerRoot);
|
|
266
|
-
if (!lock) {
|
|
267
|
-
fail(`no ${LOCK_FILE_NAME} found at ${consumerRoot}. Run "trace-sync init" first.`);
|
|
268
|
-
}
|
|
269
|
-
const appliedMigrations = [...lock.appliedMigrations];
|
|
270
|
-
if (report.pendingMigrations.length === 0) {
|
|
271
|
-
console.log("trace-sync: no pending migrations to apply.");
|
|
272
|
-
}
|
|
273
|
-
for (const entry of report.pendingMigrations) {
|
|
274
|
-
console.log(`trace-sync: copying migration ${entry.id} into ${migrationsDestDir}`);
|
|
275
|
-
copyMigration(entry.id, migrationsDestDir);
|
|
276
|
-
const migrationSqlPath = path.join(migrationsDestDir, entry.id, "migration.sql");
|
|
277
|
-
console.log(`trace-sync: applying ${entry.id} via "npx prisma db execute"`);
|
|
278
|
-
runPrisma(
|
|
279
|
-
// Prisma ORM v7's `db execute` no longer accepts `--schema` at all — the
|
|
280
|
-
// datasource URL comes only from the consumer's prisma.config.ts now (same
|
|
281
|
-
// "config file, not CLI flags" migration documented on flytedesk-id's own
|
|
282
|
-
// prisma.config.ts). Passing --schema here is a hard CLI usage error
|
|
283
|
-
// ("unknown or unexpected option: --schema") against a real Prisma 7 install,
|
|
284
|
-
// confirmed while building examples/hello-world.
|
|
285
|
-
["db", "execute", "--file", migrationSqlPath], consumerRoot);
|
|
286
|
-
appliedMigrations.push(entry.id);
|
|
287
|
-
}
|
|
288
|
-
const meta = readFragmentMeta();
|
|
289
|
-
writeLockFile(consumerRoot, {
|
|
290
|
-
fragmentVersion: meta.fragmentVersion,
|
|
291
|
-
fragmentChecksum: sha256File(fragmentSrcPath),
|
|
292
|
-
appliedMigrations,
|
|
293
|
-
lastSyncedAt: new Date().toISOString(),
|
|
294
|
-
});
|
|
295
|
-
console.log(`trace-sync: wrote ${lockFilePath(consumerRoot)}`);
|
|
296
|
-
console.log("trace-sync: apply complete.");
|
|
297
|
-
}
|
|
298
|
-
async function cmdStatus(consumerRoot) {
|
|
299
|
-
const lock = readLockFile(consumerRoot);
|
|
300
|
-
if (!lock) {
|
|
301
|
-
console.log(`no ${LOCK_FILE_NAME} found at ${consumerRoot}. Not yet initialized — run "trace-sync init".`);
|
|
302
|
-
return;
|
|
303
|
-
}
|
|
304
|
-
console.log(`fragment version (installed): ${lock.fragmentVersion}`);
|
|
305
|
-
console.log(`fragment version (package): ${readFragmentMeta().fragmentVersion}`);
|
|
306
|
-
console.log(`last synced: ${lock.lastSyncedAt}`);
|
|
307
|
-
console.log(`applied migrations (${lock.appliedMigrations.length}):`);
|
|
308
|
-
for (const id of lock.appliedMigrations) {
|
|
309
|
-
console.log(` - ${id}`);
|
|
310
|
-
}
|
|
311
|
-
try {
|
|
312
|
-
const schemaPath = await loadConsumerSchemaPath(consumerRoot);
|
|
313
|
-
const schemaFolder = resolveSchemaFolder(schemaPath);
|
|
314
|
-
const copiedFragmentPath = path.join(schemaFolder, "trace.prisma");
|
|
315
|
-
if (!existsSync(copiedFragmentPath)) {
|
|
316
|
-
console.log(`fragment copy: MISSING at ${copiedFragmentPath}`);
|
|
317
|
-
return;
|
|
318
|
-
}
|
|
319
|
-
const installedChecksum = sha256File(copiedFragmentPath);
|
|
320
|
-
if (installedChecksum === lock.fragmentChecksum) {
|
|
321
|
-
console.log("fragment copy: unmodified");
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
console.log(`fragment copy: CHECKSUM MISMATCH — ${copiedFragmentPath} has been hand-edited ` +
|
|
325
|
-
`(or is out of sync with the lock file)`);
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
catch (err) {
|
|
329
|
-
console.log(`fragment copy: could not verify (${err.message})`);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
// ---------------------------------------------------------------------------
|
|
333
|
-
// Entry point
|
|
334
|
-
// ---------------------------------------------------------------------------
|
|
335
|
-
const SUBCOMMANDS = ["init", "diff", "apply", "status"];
|
|
336
|
-
function isSubcommand(value) {
|
|
337
|
-
return SUBCOMMANDS.includes(value);
|
|
338
|
-
}
|
|
11
|
+
import { pathToFileURL } from "node:url";
|
|
12
|
+
import { runSyncCli, SyncCliError } from "./sync-engine.js";
|
|
339
13
|
export async function main(argv) {
|
|
340
|
-
|
|
341
|
-
if (!isSubcommand(subcommand)) {
|
|
342
|
-
console.error(`usage: trace-sync <${SUBCOMMANDS.join("|")}>`);
|
|
343
|
-
process.exitCode = 1;
|
|
344
|
-
return;
|
|
345
|
-
}
|
|
346
|
-
// Reserved for a future --cwd override; today trace-sync always operates on
|
|
347
|
-
// the directory it's invoked from, which is how `npx trace-sync ...` /
|
|
348
|
-
// an npm script in the consumer's own package.json will run it.
|
|
349
|
-
void rest;
|
|
350
|
-
const consumerRoot = process.cwd();
|
|
351
|
-
switch (subcommand) {
|
|
352
|
-
case "init":
|
|
353
|
-
await cmdInit(consumerRoot);
|
|
354
|
-
break;
|
|
355
|
-
case "diff":
|
|
356
|
-
cmdDiff(consumerRoot);
|
|
357
|
-
break;
|
|
358
|
-
case "apply":
|
|
359
|
-
await cmdApply(consumerRoot);
|
|
360
|
-
break;
|
|
361
|
-
case "status":
|
|
362
|
-
await cmdStatus(consumerRoot);
|
|
363
|
-
break;
|
|
364
|
-
}
|
|
14
|
+
return runSyncCli(argv, { name: "trace", binName: "trace-sync" });
|
|
365
15
|
}
|
|
366
16
|
const isMainModule = process.argv[1] !== undefined &&
|
|
367
17
|
import.meta.url === pathToFileURL(process.argv[1]).href;
|
|
368
18
|
if (isMainModule) {
|
|
369
19
|
main(process.argv.slice(2)).catch((err) => {
|
|
370
|
-
if (!(err instanceof
|
|
20
|
+
if (!(err instanceof SyncCliError)) {
|
|
371
21
|
console.error(err);
|
|
372
22
|
}
|
|
373
23
|
process.exitCode = process.exitCode ?? 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-sync.js","sourceRoot":"","sources":["../../src/cli/trace-sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trace-sync.js","sourceRoot":"","sources":["../../src/cli/trace-sync.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAc;IACvC,OAAO,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;IAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAE1D,IAAI,YAAY,EAAE,CAAC;IACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACjD,IAAI,CAAC,CAAC,GAAG,YAAY,YAAY,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic project-scoped feature-flag module (enabled/disabled, percentage
|
|
3
|
+
* rollout, role targeting, per-user overrides) — DEC-39. Ships a Prisma schema
|
|
4
|
+
* fragment + a raw SQL migration + a `flags-sync` CLI (all generalized from
|
|
5
|
+
* @flytedesk/app-kit/trace's and @flytedesk/app-kit/profile's DEC-39 machinery —
|
|
6
|
+
* see prisma/fragments/flags.prisma and src/cli/flags-sync.ts) plus a real Fastify
|
|
7
|
+
* plugin with GET/PATCH routes, ported from media-planner's own `flags.ts` so other
|
|
8
|
+
* flytedesk apps don't each hand-roll their own flag-admin routes + migration for
|
|
9
|
+
* this. The one genuinely app-specific piece of the original — resolving a flag key
|
|
10
|
+
* to its label/description/owner/project from media-planner's own hardcoded
|
|
11
|
+
* `FLAG_ROADMAP` — is generalized into a required `describeFlag` callback.
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
*
|
|
15
|
+
* import Fastify from "fastify";
|
|
16
|
+
* import { flytedeskAuth } from "@flytedesk/app-kit/auth";
|
|
17
|
+
* import { appKitFlags } from "@flytedesk/app-kit/flags";
|
|
18
|
+
*
|
|
19
|
+
* const app = Fastify();
|
|
20
|
+
* await app.register(flytedeskAuth, { ...authOptions });
|
|
21
|
+
* // Must come after flytedeskAuth (or whatever else decorates request.authUser)
|
|
22
|
+
* // — see plugin.ts's registration-time check.
|
|
23
|
+
* await app.register(appKitFlags, {
|
|
24
|
+
* store: {
|
|
25
|
+
* list: () => prisma.appKitFeatureFlag.findMany(),
|
|
26
|
+
* findByKey: (key) => prisma.appKitFeatureFlag.findUnique({ where: { key } }),
|
|
27
|
+
* upsert: (key, patch) =>
|
|
28
|
+
* prisma.appKitFeatureFlag.upsert({
|
|
29
|
+
* where: { key },
|
|
30
|
+
* create: { key, project: "unknown", ...patch },
|
|
31
|
+
* update: patch,
|
|
32
|
+
* }),
|
|
33
|
+
* },
|
|
34
|
+
* describeFlag: (key) => FLAG_ROADMAP.find((f) => f.key === key),
|
|
35
|
+
* onChange: async (key, changes, actor) => {
|
|
36
|
+
* await recordAudit({ actorId: actor.id, who: actor.name, action: "flag.update", target: key, ... });
|
|
37
|
+
* },
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* // GET /flags -> { rows, pager, sort, filter }
|
|
41
|
+
* // GET /flags/:key -> single flag, or 404
|
|
42
|
+
* // PATCH /flags/:key { enabled?, rollout?, roles?, users? } -> updated flag
|
|
43
|
+
*
|
|
44
|
+
* No permission check is baked in — register your own `preHandler` on top of these
|
|
45
|
+
* routes for whatever RBAC category gates flag administration in your app (same
|
|
46
|
+
* boundary @flytedesk/app-kit/profile draws).
|
|
47
|
+
*/
|
|
48
|
+
export { appKitFlags } from "./plugin.js";
|
|
49
|
+
export type { AppKitFlagsOptions, FlagFields, FlagListResponseBody, FlagMeta, FlagPager, FlagPatch, FlagResponseBody, FlagRow, FlagStore, } from "./types.js";
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic project-scoped feature-flag module (enabled/disabled, percentage
|
|
3
|
+
* rollout, role targeting, per-user overrides) — DEC-39. Ships a Prisma schema
|
|
4
|
+
* fragment + a raw SQL migration + a `flags-sync` CLI (all generalized from
|
|
5
|
+
* @flytedesk/app-kit/trace's and @flytedesk/app-kit/profile's DEC-39 machinery —
|
|
6
|
+
* see prisma/fragments/flags.prisma and src/cli/flags-sync.ts) plus a real Fastify
|
|
7
|
+
* plugin with GET/PATCH routes, ported from media-planner's own `flags.ts` so other
|
|
8
|
+
* flytedesk apps don't each hand-roll their own flag-admin routes + migration for
|
|
9
|
+
* this. The one genuinely app-specific piece of the original — resolving a flag key
|
|
10
|
+
* to its label/description/owner/project from media-planner's own hardcoded
|
|
11
|
+
* `FLAG_ROADMAP` — is generalized into a required `describeFlag` callback.
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
*
|
|
15
|
+
* import Fastify from "fastify";
|
|
16
|
+
* import { flytedeskAuth } from "@flytedesk/app-kit/auth";
|
|
17
|
+
* import { appKitFlags } from "@flytedesk/app-kit/flags";
|
|
18
|
+
*
|
|
19
|
+
* const app = Fastify();
|
|
20
|
+
* await app.register(flytedeskAuth, { ...authOptions });
|
|
21
|
+
* // Must come after flytedeskAuth (or whatever else decorates request.authUser)
|
|
22
|
+
* // — see plugin.ts's registration-time check.
|
|
23
|
+
* await app.register(appKitFlags, {
|
|
24
|
+
* store: {
|
|
25
|
+
* list: () => prisma.appKitFeatureFlag.findMany(),
|
|
26
|
+
* findByKey: (key) => prisma.appKitFeatureFlag.findUnique({ where: { key } }),
|
|
27
|
+
* upsert: (key, patch) =>
|
|
28
|
+
* prisma.appKitFeatureFlag.upsert({
|
|
29
|
+
* where: { key },
|
|
30
|
+
* create: { key, project: "unknown", ...patch },
|
|
31
|
+
* update: patch,
|
|
32
|
+
* }),
|
|
33
|
+
* },
|
|
34
|
+
* describeFlag: (key) => FLAG_ROADMAP.find((f) => f.key === key),
|
|
35
|
+
* onChange: async (key, changes, actor) => {
|
|
36
|
+
* await recordAudit({ actorId: actor.id, who: actor.name, action: "flag.update", target: key, ... });
|
|
37
|
+
* },
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* // GET /flags -> { rows, pager, sort, filter }
|
|
41
|
+
* // GET /flags/:key -> single flag, or 404
|
|
42
|
+
* // PATCH /flags/:key { enabled?, rollout?, roles?, users? } -> updated flag
|
|
43
|
+
*
|
|
44
|
+
* No permission check is baked in — register your own `preHandler` on top of these
|
|
45
|
+
* routes for whatever RBAC category gates flag administration in your app (same
|
|
46
|
+
* boundary @flytedesk/app-kit/profile draws).
|
|
47
|
+
*/
|
|
48
|
+
export { appKitFlags } from "./plugin.js";
|
|
49
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/flags/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|