spindb 0.50.8 → 0.51.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/README.md +13 -0
- package/dist/cli/commands/branch.js +537 -0
- package/dist/cli/commands/branch.js.map +1 -0
- package/dist/cli/commands/info.js +15 -0
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/menu/container-handlers.js +136 -0
- package/dist/cli/commands/menu/container-handlers.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/version.js +1 -1
- package/dist/core/branch-manager.js +441 -0
- package/dist/core/branch-manager.js.map +1 -0
- package/dist/core/container-manager.js +117 -79
- package/dist/core/container-manager.js.map +1 -1
- package/dist/core/cow-copy.js +108 -0
- package/dist/core/cow-copy.js.map +1 -0
- package/dist/core/git-branch-sync.js +331 -0
- package/dist/core/git-branch-sync.js.map +1 -0
- package/dist/engines/base-engine.js +18 -0
- package/dist/engines/base-engine.js.map +1 -1
- package/dist/engines/clickhouse/index.js +8 -0
- package/dist/engines/clickhouse/index.js.map +1 -1
- package/dist/engines/ferretdb/index.js +15 -0
- package/dist/engines/ferretdb/index.js.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,6 +4,7 @@ import { paths } from '../config/paths.js';
|
|
|
4
4
|
import { processManager } from './process-manager.js';
|
|
5
5
|
import { portManager } from './port-manager.js';
|
|
6
6
|
import { isWindows } from './platform-service.js';
|
|
7
|
+
import { cloneDirectory } from './cow-copy.js';
|
|
7
8
|
import { logDebug, UnsupportedOperationError } from './error-handler.js';
|
|
8
9
|
import { getEngineDefaults, getSupportedEngines } from '../config/defaults.js';
|
|
9
10
|
import { getEngine } from '../engines/index.js';
|
|
@@ -95,41 +96,38 @@ export class ContainerManager {
|
|
|
95
96
|
}
|
|
96
97
|
return null;
|
|
97
98
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
// Convert registry entry to ContainerConfig format
|
|
99
|
+
// Convert a file-based registry entry to ContainerConfig format. Shared by
|
|
100
|
+
// getConfig and list so branch lineage (branchParent/branchedAt/gitBranch) is
|
|
101
|
+
// surfaced consistently. "running" status = the backing file exists.
|
|
102
|
+
fileBasedEntryToConfig(entry, engine) {
|
|
104
103
|
const fileExists = existsSync(entry.filePath);
|
|
105
104
|
return {
|
|
106
105
|
name: entry.name,
|
|
107
|
-
engine
|
|
108
|
-
version: fileBasedEngineVersion(
|
|
106
|
+
engine,
|
|
107
|
+
version: fileBasedEngineVersion(engine),
|
|
109
108
|
port: 0,
|
|
110
|
-
database: entry.filePath, //
|
|
109
|
+
database: entry.filePath, // file-based: database field stores file path
|
|
111
110
|
databases: [entry.filePath],
|
|
112
111
|
created: entry.created,
|
|
113
|
-
status: fileExists ? 'running' : 'stopped',
|
|
112
|
+
status: fileExists ? 'running' : 'stopped',
|
|
113
|
+
...(entry.branchParent ? { branchParent: entry.branchParent } : {}),
|
|
114
|
+
...(entry.branchedAt ? { branchedAt: entry.branchedAt } : {}),
|
|
115
|
+
...(entry.gitBranch ? { gitBranch: entry.gitBranch } : {}),
|
|
114
116
|
};
|
|
115
117
|
}
|
|
118
|
+
async getSqliteConfig(name) {
|
|
119
|
+
const entry = await sqliteRegistry.get(name);
|
|
120
|
+
if (!entry) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
return this.fileBasedEntryToConfig(entry, Engine.SQLite);
|
|
124
|
+
}
|
|
116
125
|
async getDuckDBConfig(name) {
|
|
117
126
|
const entry = await duckdbRegistry.get(name);
|
|
118
127
|
if (!entry) {
|
|
119
128
|
return null;
|
|
120
129
|
}
|
|
121
|
-
|
|
122
|
-
const fileExists = existsSync(entry.filePath);
|
|
123
|
-
return {
|
|
124
|
-
name: entry.name,
|
|
125
|
-
engine: Engine.DuckDB,
|
|
126
|
-
version: fileBasedEngineVersion('duckdb'),
|
|
127
|
-
port: 0,
|
|
128
|
-
database: entry.filePath, // For DuckDB, database field stores file path
|
|
129
|
-
databases: [entry.filePath],
|
|
130
|
-
created: entry.created,
|
|
131
|
-
status: fileExists ? 'running' : 'stopped', // "running" = file exists
|
|
132
|
-
};
|
|
130
|
+
return this.fileBasedEntryToConfig(entry, Engine.DuckDB);
|
|
133
131
|
}
|
|
134
132
|
// Migrates old container configs to include databases array.
|
|
135
133
|
async migrateConfig(config) {
|
|
@@ -196,35 +194,13 @@ export class ContainerManager {
|
|
|
196
194
|
const containers = [];
|
|
197
195
|
// List SQLite containers from registry
|
|
198
196
|
const sqliteEntries = await sqliteRegistry.list();
|
|
199
|
-
const sqliteVersion = fileBasedEngineVersion('sqlite');
|
|
200
197
|
for (const entry of sqliteEntries) {
|
|
201
|
-
|
|
202
|
-
containers.push({
|
|
203
|
-
name: entry.name,
|
|
204
|
-
engine: Engine.SQLite,
|
|
205
|
-
version: sqliteVersion,
|
|
206
|
-
port: 0,
|
|
207
|
-
database: entry.filePath,
|
|
208
|
-
databases: [entry.filePath],
|
|
209
|
-
created: entry.created,
|
|
210
|
-
status: fileExists ? 'running' : 'stopped', // "running" = file exists
|
|
211
|
-
});
|
|
198
|
+
containers.push(this.fileBasedEntryToConfig(entry, Engine.SQLite));
|
|
212
199
|
}
|
|
213
200
|
// List DuckDB containers from registry
|
|
214
201
|
const duckdbEntries = await duckdbRegistry.list();
|
|
215
|
-
const duckdbVersion = fileBasedEngineVersion('duckdb');
|
|
216
202
|
for (const entry of duckdbEntries) {
|
|
217
|
-
|
|
218
|
-
containers.push({
|
|
219
|
-
name: entry.name,
|
|
220
|
-
engine: Engine.DuckDB,
|
|
221
|
-
version: duckdbVersion,
|
|
222
|
-
port: 0,
|
|
223
|
-
database: entry.filePath,
|
|
224
|
-
databases: [entry.filePath],
|
|
225
|
-
created: entry.created,
|
|
226
|
-
status: fileExists ? 'running' : 'stopped', // "running" = file exists
|
|
227
|
-
});
|
|
203
|
+
containers.push(this.fileBasedEntryToConfig(entry, Engine.DuckDB));
|
|
228
204
|
}
|
|
229
205
|
// List server-based containers (PostgreSQL, MySQL, etc.)
|
|
230
206
|
const containersDir = paths.containers;
|
|
@@ -341,7 +317,19 @@ export class ContainerManager {
|
|
|
341
317
|
}
|
|
342
318
|
}
|
|
343
319
|
}
|
|
344
|
-
|
|
320
|
+
/**
|
|
321
|
+
* Duplicate a server-based container's data directory under a new name and
|
|
322
|
+
* write a new container.json for it. Shared by `clone()` (full byte copy) and
|
|
323
|
+
* the branch manager (copy-on-write reflink). The caller is responsible for
|
|
324
|
+
* ensuring the source is in a copyable state (stopped, or a consistent
|
|
325
|
+
* snapshot); this method does the mechanical copy + config rewrite only.
|
|
326
|
+
*
|
|
327
|
+
* File-based engines (SQLite/DuckDB) are NOT handled here — their data lives
|
|
328
|
+
* in an external file tracked by a registry, so the branch manager copies the
|
|
329
|
+
* file and registers a new entry directly.
|
|
330
|
+
*/
|
|
331
|
+
async copyContainerData(options) {
|
|
332
|
+
const { sourceName, targetName, strategy, lineage } = options;
|
|
345
333
|
// Validate target name
|
|
346
334
|
if (!this.isValidName(targetName)) {
|
|
347
335
|
throw new Error('Container name must be alphanumeric with hyphens/underscores only');
|
|
@@ -356,40 +344,61 @@ export class ContainerManager {
|
|
|
356
344
|
if (await this.exists(targetName, { engine })) {
|
|
357
345
|
throw new Error(`Target container "${targetName}" already exists`);
|
|
358
346
|
}
|
|
359
|
-
//
|
|
360
|
-
|
|
361
|
-
if (running) {
|
|
362
|
-
throw new Error(`Source container "${sourceName}" is running. Stop it first`);
|
|
363
|
-
}
|
|
364
|
-
// Copy container directory
|
|
347
|
+
// Duplicate the container directory: reflink for branches (instant where
|
|
348
|
+
// the filesystem supports it), full byte copy for clones.
|
|
365
349
|
const sourcePath = paths.getContainerPath(sourceName, { engine });
|
|
366
350
|
const targetPath = paths.getContainerPath(targetName, { engine });
|
|
367
|
-
|
|
368
|
-
//
|
|
351
|
+
// Copy the data directory, then write the new config. If anything fails —
|
|
352
|
+
// the copy itself, reading the config back, or the engine fixup hook —
|
|
353
|
+
// clean up the (possibly partial) target directory.
|
|
369
354
|
try {
|
|
355
|
+
let method = 'copy';
|
|
356
|
+
if (strategy === 'cow') {
|
|
357
|
+
method = (await cloneDirectory(sourcePath, targetPath)).method;
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
await cp(sourcePath, targetPath, { recursive: true });
|
|
361
|
+
}
|
|
370
362
|
// Update target config
|
|
371
363
|
const config = await this.getConfig(targetName, { engine });
|
|
372
364
|
if (!config) {
|
|
373
|
-
throw new Error('Failed to read
|
|
365
|
+
throw new Error('Failed to read copied container config');
|
|
374
366
|
}
|
|
375
367
|
config.name = targetName;
|
|
376
368
|
config.created = new Date().toISOString();
|
|
377
|
-
|
|
378
|
-
//
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
config.
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
if (
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
369
|
+
// A freshly copied container is not running yet, regardless of what the
|
|
370
|
+
// source's persisted status said.
|
|
371
|
+
config.status = 'stopped';
|
|
372
|
+
// Reset lineage, then apply the requested lineage so branch and clone
|
|
373
|
+
// metadata never leak into each other across repeated operations.
|
|
374
|
+
delete config.clonedFrom;
|
|
375
|
+
delete config.branchParent;
|
|
376
|
+
delete config.branchedAt;
|
|
377
|
+
delete config.gitBranch;
|
|
378
|
+
if (lineage.clonedFrom) {
|
|
379
|
+
config.clonedFrom = lineage.clonedFrom;
|
|
380
|
+
}
|
|
381
|
+
if (lineage.branchParent) {
|
|
382
|
+
config.branchParent = lineage.branchParent;
|
|
383
|
+
config.branchedAt = config.created;
|
|
391
384
|
}
|
|
392
|
-
|
|
385
|
+
// Assign a port: an explicit one (stable-port git branches) or the next
|
|
386
|
+
// free port in the engine's range (excluding ports used by containers).
|
|
387
|
+
if (options.port !== undefined) {
|
|
388
|
+
config.port = options.port;
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
const engineDefaults = getEngineDefaults(engine);
|
|
392
|
+
const { port } = await portManager.findAvailablePortExcludingContainers({
|
|
393
|
+
portRange: engineDefaults.portRange,
|
|
394
|
+
});
|
|
395
|
+
config.port = port;
|
|
396
|
+
}
|
|
397
|
+
await this.saveConfig(targetName, { engine }, config);
|
|
398
|
+
// Let the engine fix up any identity/paths baked into the copied data
|
|
399
|
+
// dir for the new name and port (e.g. ClickHouse regenerates config.xml).
|
|
400
|
+
await getEngine(engine).prepareBranchedDataDir(config, { sourceName });
|
|
401
|
+
return { config, method };
|
|
393
402
|
}
|
|
394
403
|
catch (error) {
|
|
395
404
|
// Clean up the copied directory on failure
|
|
@@ -399,6 +408,35 @@ export class ContainerManager {
|
|
|
399
408
|
throw error;
|
|
400
409
|
}
|
|
401
410
|
}
|
|
411
|
+
async clone(sourceName, targetName) {
|
|
412
|
+
// Get source config to determine the engine and verify it exists
|
|
413
|
+
const sourceConfig = await this.getConfig(sourceName);
|
|
414
|
+
if (!sourceConfig) {
|
|
415
|
+
throw new Error(`Source container "${sourceName}" not found`);
|
|
416
|
+
}
|
|
417
|
+
// copyContainerData duplicates a server container's data directory.
|
|
418
|
+
// File-based engines (SQLite/DuckDB) keep their data in an external file
|
|
419
|
+
// tracked by a registry, which it doesn't handle — point users to branch,
|
|
420
|
+
// which forks the backing file and registers a new entry.
|
|
421
|
+
if (isFileBasedEngine(sourceConfig.engine)) {
|
|
422
|
+
throw new Error(`Cloning file-based containers (${sourceConfig.engine}) is not supported. ` +
|
|
423
|
+
`Use "spindb branch ${sourceName} ${targetName}" to fork it instead.`);
|
|
424
|
+
}
|
|
425
|
+
// Clone requires a stopped source (use `spindb branch` for live sources).
|
|
426
|
+
const running = await processManager.isRunning(sourceName, {
|
|
427
|
+
engine: sourceConfig.engine,
|
|
428
|
+
});
|
|
429
|
+
if (running) {
|
|
430
|
+
throw new Error(`Source container "${sourceName}" is running. Stop it first`);
|
|
431
|
+
}
|
|
432
|
+
const { config } = await this.copyContainerData({
|
|
433
|
+
sourceName,
|
|
434
|
+
targetName,
|
|
435
|
+
strategy: 'copy',
|
|
436
|
+
lineage: { clonedFrom: sourceName },
|
|
437
|
+
});
|
|
438
|
+
return config;
|
|
439
|
+
}
|
|
402
440
|
async rename(oldName, newName) {
|
|
403
441
|
// Validate new name
|
|
404
442
|
if (!this.isValidName(newName)) {
|
|
@@ -427,13 +465,13 @@ export class ContainerManager {
|
|
|
427
465
|
if (existsSync(oldContainerPath)) {
|
|
428
466
|
await this.atomicMoveDirectory(oldContainerPath, newContainerPath);
|
|
429
467
|
}
|
|
430
|
-
// Now update registry - remove old entry and add new one with updated name
|
|
468
|
+
// Now update registry - remove old entry and add new one with updated name.
|
|
469
|
+
// Spread the existing entry so lineage fields (branchParent/branchedAt/
|
|
470
|
+
// gitBranch) survive the rename instead of being dropped.
|
|
431
471
|
await sqliteRegistry.remove(oldName);
|
|
432
472
|
await sqliteRegistry.add({
|
|
473
|
+
...entry,
|
|
433
474
|
name: newName,
|
|
434
|
-
filePath: entry.filePath,
|
|
435
|
-
created: entry.created,
|
|
436
|
-
lastVerified: entry.lastVerified,
|
|
437
475
|
});
|
|
438
476
|
// Return updated config
|
|
439
477
|
return {
|
|
@@ -454,13 +492,13 @@ export class ContainerManager {
|
|
|
454
492
|
if (existsSync(oldContainerPath)) {
|
|
455
493
|
await this.atomicMoveDirectory(oldContainerPath, newContainerPath);
|
|
456
494
|
}
|
|
457
|
-
// Now update registry - remove old entry and add new one with updated name
|
|
495
|
+
// Now update registry - remove old entry and add new one with updated name.
|
|
496
|
+
// Spread the existing entry so lineage fields (branchParent/branchedAt/
|
|
497
|
+
// gitBranch) survive the rename instead of being dropped.
|
|
458
498
|
await duckdbRegistry.remove(oldName);
|
|
459
499
|
await duckdbRegistry.add({
|
|
500
|
+
...entry,
|
|
460
501
|
name: newName,
|
|
461
|
-
filePath: entry.filePath,
|
|
462
|
-
created: entry.created,
|
|
463
|
-
lastVerified: entry.lastVerified,
|
|
464
502
|
});
|
|
465
503
|
// Return updated config
|
|
466
504
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-manager.js","sourceRoot":"","sources":["../../core/container-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"container-manager.js","sourceRoot":"","sources":["../../core/container-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy-on-write directory cloning.
|
|
3
|
+
*
|
|
4
|
+
* Branching a container means duplicating its on-disk data directory. A plain
|
|
5
|
+
* byte copy costs O(data size) in both time and space; a filesystem
|
|
6
|
+
* reflink/clonefile is effectively O(1) and shares blocks with the source until
|
|
7
|
+
* one side is written. We use the OS's CoW primitive when the underlying
|
|
8
|
+
* filesystem supports it (APFS on macOS; Btrfs / XFS-with-reflink / ZFS on
|
|
9
|
+
* Linux) and fall back to a full recursive copy everywhere else (ext4, NTFS).
|
|
10
|
+
*
|
|
11
|
+
* Callers get back which path was taken (`method`) so they can surface it — for
|
|
12
|
+
* example, `spindb branch --json` reports `"method": "reflink"` vs `"copy"` so
|
|
13
|
+
* consumers know whether the branch was instant or a full copy.
|
|
14
|
+
*/
|
|
15
|
+
import { cp, rm, writeFile } from 'fs/promises';
|
|
16
|
+
import { join } from 'path';
|
|
17
|
+
import { spawnAsync } from './spawn-utils.js';
|
|
18
|
+
import { logDebug } from './error-handler.js';
|
|
19
|
+
/**
|
|
20
|
+
* Clone a directory (or file) from `src` to `dst`, preferring a copy-on-write
|
|
21
|
+
* reflink and falling back to a deep byte copy when the filesystem can't do it.
|
|
22
|
+
*
|
|
23
|
+
* `dst` must not already exist (matching `containerManager.clone()` semantics,
|
|
24
|
+
* where the target path is a fresh container directory).
|
|
25
|
+
*
|
|
26
|
+
* @param options.platform - override the detected platform (unit tests only)
|
|
27
|
+
*/
|
|
28
|
+
export async function cloneDirectory(src, dst, options) {
|
|
29
|
+
const platform = options?.platform ?? process.platform;
|
|
30
|
+
const started = Date.now();
|
|
31
|
+
const method = await cloneWithStrategy(src, dst, platform);
|
|
32
|
+
return { method, durationMs: Date.now() - started };
|
|
33
|
+
}
|
|
34
|
+
async function cloneWithStrategy(src, dst, platform) {
|
|
35
|
+
if (platform === 'darwin') {
|
|
36
|
+
// `cp -c` requests clonefile() (APFS copy-on-write); `-R` recurses into
|
|
37
|
+
// directories. Fails if the volume isn't APFS or clonefile is unavailable.
|
|
38
|
+
try {
|
|
39
|
+
await spawnAsync('cp', ['-cR', src, dst]);
|
|
40
|
+
return 'reflink';
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return fallbackToDeepCopy(src, dst, error);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (platform === 'linux') {
|
|
47
|
+
// `--reflink=always` errors out on filesystems without reflink support
|
|
48
|
+
// (e.g. ext4), so a failure here cleanly means "no CoW on this volume".
|
|
49
|
+
// We deliberately avoid `--reflink=auto` because it silently falls back to
|
|
50
|
+
// a full copy, which would make us report 'reflink' when nothing was shared.
|
|
51
|
+
try {
|
|
52
|
+
await spawnAsync('cp', ['-R', '--reflink=always', src, dst]);
|
|
53
|
+
return 'reflink';
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
return fallbackToDeepCopy(src, dst, error);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Windows (NTFS has no reflink) and any unknown platform: full copy.
|
|
60
|
+
await deepCopy(src, dst);
|
|
61
|
+
return 'copy';
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* A failed reflink may have left a partial destination behind. Remove it, then
|
|
65
|
+
* perform a guaranteed full copy.
|
|
66
|
+
*/
|
|
67
|
+
async function fallbackToDeepCopy(src, dst, error) {
|
|
68
|
+
logDebug(`Copy-on-write clone of "${dst}" unavailable, falling back to full copy: ${error.message}`);
|
|
69
|
+
// A failed reflink may have left a partial destination behind. Remove it
|
|
70
|
+
// before the full copy; if cleanup itself fails, surface that error rather
|
|
71
|
+
// than copy into a dirty target. (force:true already ignores a missing dst.)
|
|
72
|
+
await rm(dst, { recursive: true, force: true });
|
|
73
|
+
await deepCopy(src, dst);
|
|
74
|
+
return 'copy';
|
|
75
|
+
}
|
|
76
|
+
async function deepCopy(src, dst) {
|
|
77
|
+
await cp(src, dst, { recursive: true });
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Probe whether the filesystem backing `probeDir` supports copy-on-write
|
|
81
|
+
* cloning, by reflinking a tiny throwaway file. Used for upfront UX hints
|
|
82
|
+
* (e.g. warning before a large branch will be a full copy). The authoritative
|
|
83
|
+
* answer for any given clone is the `method` returned by `cloneDirectory()`.
|
|
84
|
+
*/
|
|
85
|
+
export async function detectCowSupport(probeDir) {
|
|
86
|
+
const platform = process.platform;
|
|
87
|
+
if (platform !== 'darwin' && platform !== 'linux') {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
const probeSource = join(probeDir, `.spindb-cow-probe-${process.pid}-a`);
|
|
91
|
+
const probeTarget = join(probeDir, `.spindb-cow-probe-${process.pid}-b`);
|
|
92
|
+
try {
|
|
93
|
+
await writeFile(probeSource, 'spindb');
|
|
94
|
+
const args = platform === 'darwin'
|
|
95
|
+
? ['-c', probeSource, probeTarget]
|
|
96
|
+
: ['--reflink=always', probeSource, probeTarget];
|
|
97
|
+
await spawnAsync('cp', args);
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
await rm(probeSource, { force: true }).catch(() => { });
|
|
105
|
+
await rm(probeTarget, { force: true }).catch(() => { });
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=cow-copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cow-copy.js","sourceRoot":"","sources":["../../core/cow-copy.ts"],"names":[],"mappings":"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"}
|