@hasna/cloud 0.1.31 → 0.1.32
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/LICENSE +2 -1
- package/README.md +17 -0
- package/dist/adapter.test.d.ts +2 -0
- package/dist/adapter.test.d.ts.map +1 -0
- package/dist/auto-sync.d.ts.map +1 -1
- package/dist/cli/cmd-doctor.d.ts +3 -0
- package/dist/cli/cmd-doctor.d.ts.map +1 -0
- package/dist/cli/cmd-feedback.d.ts +3 -0
- package/dist/cli/cmd-feedback.d.ts.map +1 -0
- package/dist/cli/cmd-migrate.d.ts +3 -0
- package/dist/cli/cmd-migrate.d.ts.map +1 -0
- package/dist/cli/cmd-setup.d.ts +3 -0
- package/dist/cli/cmd-setup.d.ts.map +1 -0
- package/dist/cli/cmd-sync.d.ts +4 -0
- package/dist/cli/cmd-sync.d.ts.map +1 -0
- package/dist/cli/index.js +2330 -1079
- package/dist/config.d.ts +138 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/daemon-sync.d.ts +108 -0
- package/dist/daemon-sync.d.ts.map +1 -0
- package/dist/dialect.test.d.ts +2 -0
- package/dist/dialect.test.d.ts.map +1 -0
- package/dist/discover.test.d.ts +2 -0
- package/dist/discover.test.d.ts.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1143 -153
- package/dist/machines.d.ts +63 -0
- package/dist/machines.d.ts.map +1 -0
- package/dist/mcp/http.d.ts +27 -0
- package/dist/mcp/http.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +2 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +2125 -438
- package/dist/scheduled-sync.js +205 -44
- package/dist/sync-conflicts.test.d.ts +2 -0
- package/dist/sync-conflicts.test.d.ts.map +1 -0
- package/dist/sync-incremental.d.ts +5 -0
- package/dist/sync-incremental.d.ts.map +1 -1
- package/dist/sync-schedule.test.d.ts +2 -0
- package/dist/sync-schedule.test.d.ts.map +1 -0
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.test.d.ts +2 -0
- package/dist/sync.test.d.ts.map +1 -0
- package/package.json +1 -1
package/dist/scheduled-sync.js
CHANGED
|
@@ -155,7 +155,7 @@ var require_arrayParser = __commonJS((exports, module) => {
|
|
|
155
155
|
};
|
|
156
156
|
});
|
|
157
157
|
|
|
158
|
-
// node_modules/
|
|
158
|
+
// node_modules/postgres-date/index.js
|
|
159
159
|
var require_postgres_date = __commonJS((exports, module) => {
|
|
160
160
|
var DATE_TIME = /(\d{1,})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})(\.\d{1,})?.*?( BC)?$/;
|
|
161
161
|
var DATE = /^(\d{1,})-(\d{2})-(\d{2})( BC)?$/;
|
|
@@ -257,7 +257,7 @@ var require_mutable = __commonJS((exports, module) => {
|
|
|
257
257
|
}
|
|
258
258
|
});
|
|
259
259
|
|
|
260
|
-
// node_modules/
|
|
260
|
+
// node_modules/postgres-interval/index.js
|
|
261
261
|
var require_postgres_interval = __commonJS((exports, module) => {
|
|
262
262
|
var extend = require_mutable();
|
|
263
263
|
module.exports = PostgresInterval;
|
|
@@ -349,7 +349,7 @@ var require_postgres_interval = __commonJS((exports, module) => {
|
|
|
349
349
|
}
|
|
350
350
|
});
|
|
351
351
|
|
|
352
|
-
// node_modules/
|
|
352
|
+
// node_modules/postgres-bytea/index.js
|
|
353
353
|
var require_postgres_bytea = __commonJS((exports, module) => {
|
|
354
354
|
var bufferFrom = Buffer.from || Buffer;
|
|
355
355
|
module.exports = function parseBytea(input) {
|
|
@@ -9023,8 +9023,10 @@ class SqliteAdapter {
|
|
|
9023
9023
|
return this.db;
|
|
9024
9024
|
}
|
|
9025
9025
|
}
|
|
9026
|
-
|
|
9026
|
+
|
|
9027
|
+
class PgAdapter {
|
|
9027
9028
|
pool;
|
|
9029
|
+
_client = null;
|
|
9028
9030
|
constructor(arg) {
|
|
9029
9031
|
if (typeof arg === "string") {
|
|
9030
9032
|
const sslConfig = arg.includes("sslmode=require") || arg.includes("ssl=true") ? { rejectUnauthorized: false } : undefined;
|
|
@@ -9033,47 +9035,118 @@ class PgAdapterAsync {
|
|
|
9033
9035
|
this.pool = arg;
|
|
9034
9036
|
}
|
|
9035
9037
|
}
|
|
9036
|
-
|
|
9038
|
+
runSync(fn) {
|
|
9039
|
+
let result;
|
|
9040
|
+
let error;
|
|
9041
|
+
let done = false;
|
|
9042
|
+
fn().then((r) => {
|
|
9043
|
+
result = r;
|
|
9044
|
+
done = true;
|
|
9045
|
+
}).catch((e) => {
|
|
9046
|
+
error = e;
|
|
9047
|
+
done = true;
|
|
9048
|
+
});
|
|
9049
|
+
const deadline = Date.now() + 30000;
|
|
9050
|
+
while (!done && Date.now() < deadline) {
|
|
9051
|
+
Bun.sleepSync(1);
|
|
9052
|
+
}
|
|
9053
|
+
if (error)
|
|
9054
|
+
throw error;
|
|
9055
|
+
if (!done)
|
|
9056
|
+
throw new Error("PgAdapter: query timed out (30s)");
|
|
9057
|
+
return result;
|
|
9058
|
+
}
|
|
9059
|
+
run(sql, ...params) {
|
|
9037
9060
|
const pgSql = translateSql(sql, "pg");
|
|
9038
9061
|
const pgParams = translateParams(params);
|
|
9039
|
-
|
|
9040
|
-
|
|
9041
|
-
|
|
9042
|
-
|
|
9043
|
-
|
|
9062
|
+
return this.runSync(async () => {
|
|
9063
|
+
const res = await this.pool.query(pgSql, pgParams);
|
|
9064
|
+
return {
|
|
9065
|
+
changes: res.rowCount ?? 0,
|
|
9066
|
+
lastInsertRowid: res.rows?.[0]?.id ?? 0
|
|
9067
|
+
};
|
|
9068
|
+
});
|
|
9044
9069
|
}
|
|
9045
|
-
|
|
9070
|
+
get(sql, ...params) {
|
|
9046
9071
|
const pgSql = translateSql(sql, "pg");
|
|
9047
9072
|
const pgParams = translateParams(params);
|
|
9048
|
-
|
|
9049
|
-
|
|
9073
|
+
return this.runSync(async () => {
|
|
9074
|
+
const res = await this.pool.query(pgSql, pgParams);
|
|
9075
|
+
return res.rows[0] ?? null;
|
|
9076
|
+
});
|
|
9050
9077
|
}
|
|
9051
|
-
|
|
9078
|
+
all(sql, ...params) {
|
|
9052
9079
|
const pgSql = translateSql(sql, "pg");
|
|
9053
9080
|
const pgParams = translateParams(params);
|
|
9054
|
-
|
|
9055
|
-
|
|
9081
|
+
return this.runSync(async () => {
|
|
9082
|
+
const res = await this.pool.query(pgSql, pgParams);
|
|
9083
|
+
return res.rows;
|
|
9084
|
+
});
|
|
9056
9085
|
}
|
|
9057
|
-
|
|
9086
|
+
exec(sql) {
|
|
9058
9087
|
const pgSql = translateSql(sql, "pg");
|
|
9059
|
-
|
|
9088
|
+
this.runSync(async () => {
|
|
9089
|
+
await this.pool.query(pgSql);
|
|
9090
|
+
});
|
|
9060
9091
|
}
|
|
9061
|
-
|
|
9062
|
-
|
|
9092
|
+
prepare(sql) {
|
|
9093
|
+
const pgSql = translateSql(sql, "pg");
|
|
9094
|
+
const adapter = this;
|
|
9095
|
+
return {
|
|
9096
|
+
run(...params) {
|
|
9097
|
+
const pgParams = translateParams(params);
|
|
9098
|
+
return adapter.runSync(async () => {
|
|
9099
|
+
const res = await adapter.pool.query(pgSql, pgParams);
|
|
9100
|
+
return {
|
|
9101
|
+
changes: res.rowCount ?? 0,
|
|
9102
|
+
lastInsertRowid: res.rows?.[0]?.id ?? 0
|
|
9103
|
+
};
|
|
9104
|
+
});
|
|
9105
|
+
},
|
|
9106
|
+
get(...params) {
|
|
9107
|
+
const pgParams = translateParams(params);
|
|
9108
|
+
return adapter.runSync(async () => {
|
|
9109
|
+
const res = await adapter.pool.query(pgSql, pgParams);
|
|
9110
|
+
return res.rows[0] ?? null;
|
|
9111
|
+
});
|
|
9112
|
+
},
|
|
9113
|
+
all(...params) {
|
|
9114
|
+
const pgParams = translateParams(params);
|
|
9115
|
+
return adapter.runSync(async () => {
|
|
9116
|
+
const res = await adapter.pool.query(pgSql, pgParams);
|
|
9117
|
+
return res.rows;
|
|
9118
|
+
});
|
|
9119
|
+
},
|
|
9120
|
+
finalize() {}
|
|
9121
|
+
};
|
|
9063
9122
|
}
|
|
9064
|
-
|
|
9065
|
-
|
|
9066
|
-
|
|
9067
|
-
|
|
9068
|
-
|
|
9069
|
-
|
|
9070
|
-
|
|
9071
|
-
|
|
9072
|
-
|
|
9073
|
-
|
|
9074
|
-
|
|
9075
|
-
|
|
9076
|
-
|
|
9123
|
+
close() {
|
|
9124
|
+
this.runSync(async () => {
|
|
9125
|
+
await this.pool.end();
|
|
9126
|
+
});
|
|
9127
|
+
}
|
|
9128
|
+
transaction(fn) {
|
|
9129
|
+
return this.runSync(async () => {
|
|
9130
|
+
const client = await this.pool.connect();
|
|
9131
|
+
try {
|
|
9132
|
+
await client.query("BEGIN");
|
|
9133
|
+
const origQuery = this.pool.query.bind(this.pool);
|
|
9134
|
+
this.pool.query = client.query.bind(client);
|
|
9135
|
+
let result;
|
|
9136
|
+
try {
|
|
9137
|
+
result = fn();
|
|
9138
|
+
} finally {
|
|
9139
|
+
this.pool.query = origQuery;
|
|
9140
|
+
}
|
|
9141
|
+
await client.query("COMMIT");
|
|
9142
|
+
return result;
|
|
9143
|
+
} catch (err) {
|
|
9144
|
+
await client.query("ROLLBACK");
|
|
9145
|
+
throw err;
|
|
9146
|
+
} finally {
|
|
9147
|
+
client.release();
|
|
9148
|
+
}
|
|
9149
|
+
});
|
|
9077
9150
|
}
|
|
9078
9151
|
get raw() {
|
|
9079
9152
|
return this.pool;
|
|
@@ -9100,7 +9173,77 @@ function getHasnaDir() {
|
|
|
9100
9173
|
return HASNA_DIR;
|
|
9101
9174
|
}
|
|
9102
9175
|
|
|
9176
|
+
// src/discover.ts
|
|
9177
|
+
var SYNC_EXCLUDED_TABLE_PATTERNS = [
|
|
9178
|
+
/^sqlite_/,
|
|
9179
|
+
/_fts$/,
|
|
9180
|
+
/_fts_/,
|
|
9181
|
+
/^_sync_/,
|
|
9182
|
+
/^_pg_migrations$/
|
|
9183
|
+
];
|
|
9184
|
+
function isSyncExcludedTable(table) {
|
|
9185
|
+
return SYNC_EXCLUDED_TABLE_PATTERNS.some((p) => p.test(table));
|
|
9186
|
+
}
|
|
9187
|
+
|
|
9188
|
+
// src/machines.ts
|
|
9189
|
+
function tableExists(db, table) {
|
|
9190
|
+
try {
|
|
9191
|
+
if (typeof db.query === "function") {
|
|
9192
|
+
const rows2 = db.all(`SELECT name FROM sqlite_master WHERE type='table' AND name = ?`, table);
|
|
9193
|
+
return rows2.length > 0;
|
|
9194
|
+
}
|
|
9195
|
+
const rows = db.all(`SELECT table_name
|
|
9196
|
+
FROM information_schema.tables
|
|
9197
|
+
WHERE table_schema = 'public' AND table_name = ?`, table);
|
|
9198
|
+
return rows.length > 0;
|
|
9199
|
+
} catch {
|
|
9200
|
+
return false;
|
|
9201
|
+
}
|
|
9202
|
+
}
|
|
9203
|
+
function hasMachineIdColumn(db, table) {
|
|
9204
|
+
try {
|
|
9205
|
+
if (typeof db.query === "function") {
|
|
9206
|
+
const rows2 = db.all(`PRAGMA table_info("${table}")`);
|
|
9207
|
+
return rows2.some((row) => row.name === "machine_id");
|
|
9208
|
+
}
|
|
9209
|
+
const rows = db.all(`SELECT column_name
|
|
9210
|
+
FROM information_schema.columns
|
|
9211
|
+
WHERE table_schema = 'public' AND table_name = ? AND column_name = 'machine_id'`, table);
|
|
9212
|
+
return rows.length > 0;
|
|
9213
|
+
} catch {
|
|
9214
|
+
return false;
|
|
9215
|
+
}
|
|
9216
|
+
}
|
|
9217
|
+
function shouldTrackMachineId(table) {
|
|
9218
|
+
return table !== "machines" && !isSyncExcludedTable(table);
|
|
9219
|
+
}
|
|
9220
|
+
function ensureMachineIdColumn(db, table) {
|
|
9221
|
+
if (!shouldTrackMachineId(table) || !tableExists(db, table)) {
|
|
9222
|
+
return false;
|
|
9223
|
+
}
|
|
9224
|
+
if (hasMachineIdColumn(db, table)) {
|
|
9225
|
+
return false;
|
|
9226
|
+
}
|
|
9227
|
+
db.exec(`ALTER TABLE "${table}" ADD COLUMN machine_id TEXT DEFAULT ''`);
|
|
9228
|
+
return true;
|
|
9229
|
+
}
|
|
9230
|
+
|
|
9103
9231
|
// src/config.ts
|
|
9232
|
+
var DaemonConfigSchema = exports_external.object({
|
|
9233
|
+
enabled: exports_external.boolean().default(false),
|
|
9234
|
+
paused: exports_external.boolean().default(false),
|
|
9235
|
+
watch_interval_seconds: exports_external.number().int().positive().default(5),
|
|
9236
|
+
pull_interval_seconds: exports_external.number().int().positive().default(60),
|
|
9237
|
+
push_debounce_seconds: exports_external.number().int().positive().default(5),
|
|
9238
|
+
conflict_strategy: exports_external.enum(["newest-wins", "local-wins", "remote-wins"]).default("newest-wins"),
|
|
9239
|
+
services: exports_external.array(exports_external.string()).default([]),
|
|
9240
|
+
table_intervals: exports_external.record(exports_external.string(), exports_external.record(exports_external.string(), exports_external.number().int().positive())).default({}),
|
|
9241
|
+
file_rules: exports_external.array(exports_external.object({
|
|
9242
|
+
path: exports_external.string(),
|
|
9243
|
+
interval_seconds: exports_external.number().int().positive().default(30),
|
|
9244
|
+
enabled: exports_external.boolean().default(true)
|
|
9245
|
+
})).default([])
|
|
9246
|
+
}).default({});
|
|
9104
9247
|
var CloudConfigSchema = exports_external.object({
|
|
9105
9248
|
rds: exports_external.object({
|
|
9106
9249
|
host: exports_external.string().default(""),
|
|
@@ -9114,7 +9257,8 @@ var CloudConfigSchema = exports_external.object({
|
|
|
9114
9257
|
feedback_endpoint: exports_external.string().default("https://feedback.hasna.com/api/v1/feedback"),
|
|
9115
9258
|
sync: exports_external.object({
|
|
9116
9259
|
schedule_minutes: exports_external.number().default(0)
|
|
9117
|
-
}).default({})
|
|
9260
|
+
}).default({}),
|
|
9261
|
+
daemon: DaemonConfigSchema
|
|
9118
9262
|
});
|
|
9119
9263
|
var CONFIG_DIR = join2(homedir2(), ".hasna", "cloud");
|
|
9120
9264
|
var CONFIG_PATH = join2(CONFIG_DIR, "config.json");
|
|
@@ -9175,6 +9319,11 @@ function transferRows(source, target, table, rows, options) {
|
|
|
9175
9319
|
if (rows.length === 0)
|
|
9176
9320
|
return { written, skipped, errors: errors2 };
|
|
9177
9321
|
const columns = Object.keys(rows[0]);
|
|
9322
|
+
if (columns.includes("machine_id") && table !== "machines") {
|
|
9323
|
+
try {
|
|
9324
|
+
ensureMachineIdColumn(target, table);
|
|
9325
|
+
} catch {}
|
|
9326
|
+
}
|
|
9178
9327
|
const hasConflictCol = columns.includes(conflictColumn);
|
|
9179
9328
|
const hasPrimaryKey = columns.includes(primaryKey);
|
|
9180
9329
|
if (!hasPrimaryKey) {
|
|
@@ -9185,12 +9334,21 @@ function transferRows(source, target, table, rows, options) {
|
|
|
9185
9334
|
try {
|
|
9186
9335
|
const existing = target.get(`SELECT "${primaryKey}"${hasConflictCol ? `, "${conflictColumn}"` : ""} FROM "${table}" WHERE "${primaryKey}" = ?`, row[primaryKey]);
|
|
9187
9336
|
if (existing) {
|
|
9188
|
-
|
|
9189
|
-
|
|
9190
|
-
|
|
9191
|
-
|
|
9192
|
-
|
|
9193
|
-
|
|
9337
|
+
const conflictStrategy = options.conflictStrategy ?? "newest-wins";
|
|
9338
|
+
const sourceRole = options.sourceRole ?? "local";
|
|
9339
|
+
const sourceWins = conflictStrategy === "local-wins" && sourceRole === "local" || conflictStrategy === "remote-wins" && sourceRole === "remote";
|
|
9340
|
+
if (!sourceWins && conflictStrategy !== "newest-wins") {
|
|
9341
|
+
skipped++;
|
|
9342
|
+
continue;
|
|
9343
|
+
}
|
|
9344
|
+
if (conflictStrategy === "newest-wins") {
|
|
9345
|
+
if (hasConflictCol && existing[conflictColumn] && row[conflictColumn]) {
|
|
9346
|
+
const existingTime = new Date(existing[conflictColumn]).getTime();
|
|
9347
|
+
const incomingTime = new Date(row[conflictColumn]).getTime();
|
|
9348
|
+
if (existingTime >= incomingTime) {
|
|
9349
|
+
skipped++;
|
|
9350
|
+
continue;
|
|
9351
|
+
}
|
|
9194
9352
|
}
|
|
9195
9353
|
}
|
|
9196
9354
|
const setClauses = columns.filter((c) => c !== primaryKey).map((c) => `"${c}" = ?`).join(", ");
|
|
@@ -9241,7 +9399,10 @@ function incrementalSyncPush(local, remote, tables, options = {}) {
|
|
|
9241
9399
|
}
|
|
9242
9400
|
for (let offset = 0;offset < rows.length; offset += batchSize) {
|
|
9243
9401
|
const batch = rows.slice(offset, offset + batchSize);
|
|
9244
|
-
const result = transferRows(local, remote, table, batch,
|
|
9402
|
+
const result = transferRows(local, remote, table, batch, {
|
|
9403
|
+
...options,
|
|
9404
|
+
sourceRole: "local"
|
|
9405
|
+
});
|
|
9245
9406
|
stat.synced_rows += result.written;
|
|
9246
9407
|
stat.skipped_rows += result.skipped;
|
|
9247
9408
|
stat.errors.push(...result.errors);
|
|
@@ -9314,7 +9475,7 @@ async function runScheduledSync() {
|
|
|
9314
9475
|
}
|
|
9315
9476
|
try {
|
|
9316
9477
|
const connStr = getConnectionString(service);
|
|
9317
|
-
remote = new
|
|
9478
|
+
remote = new PgAdapter(connStr);
|
|
9318
9479
|
} catch (err) {
|
|
9319
9480
|
result.errors.push(`Connection failed: ${err?.message ?? String(err)}`);
|
|
9320
9481
|
local.close();
|
|
@@ -9330,7 +9491,7 @@ async function runScheduledSync() {
|
|
|
9330
9491
|
result.errors.push(...s.errors);
|
|
9331
9492
|
}
|
|
9332
9493
|
local.close();
|
|
9333
|
-
|
|
9494
|
+
remote.close();
|
|
9334
9495
|
remote = null;
|
|
9335
9496
|
} catch (err) {
|
|
9336
9497
|
result.errors.push(err?.message ?? String(err));
|
|
@@ -9339,7 +9500,7 @@ async function runScheduledSync() {
|
|
|
9339
9500
|
}
|
|
9340
9501
|
if (remote) {
|
|
9341
9502
|
try {
|
|
9342
|
-
|
|
9503
|
+
remote.close();
|
|
9343
9504
|
} catch {}
|
|
9344
9505
|
}
|
|
9345
9506
|
return results;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-conflicts.test.d.ts","sourceRoot":"","sources":["../src/sync-conflicts.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DbAdapter } from "./adapter.js";
|
|
2
|
+
import type { ConflictStrategy } from "./sync-conflicts.js";
|
|
2
3
|
export interface IncrementalSyncStats {
|
|
3
4
|
table: string;
|
|
4
5
|
total_rows: number;
|
|
@@ -20,6 +21,10 @@ export interface IncrementalSyncOptions {
|
|
|
20
21
|
conflictColumn?: string;
|
|
21
22
|
/** Batch size for writes (default: 500). */
|
|
22
23
|
batchSize?: number;
|
|
24
|
+
/** Conflict resolution strategy for rows present on both sides. */
|
|
25
|
+
conflictStrategy?: ConflictStrategy;
|
|
26
|
+
/** Which side is being transferred into the target. */
|
|
27
|
+
sourceRole?: "local" | "remote";
|
|
23
28
|
}
|
|
24
29
|
/**
|
|
25
30
|
* Ensure the `_sync_meta` table exists in the given database.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-incremental.d.ts","sourceRoot":"","sources":["../src/sync-incremental.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-incremental.d.ts","sourceRoot":"","sources":["../src/sync-incremental.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAM5D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CACjC;AAcD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAEvD;AAmJD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,GAAE,sBAA2B,GACnC,oBAAoB,EAAE,CA4ExB;AAMD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,GAAE,sBAA2B,GACnC,oBAAoB,EAAE,CA4ExB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,QAAQ,EAAE,CAKxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,MAAM,GACZ,QAAQ,GAAG,IAAI,CAEjB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAGpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-schedule.test.d.ts","sourceRoot":"","sources":["../src/sync-schedule.test.ts"],"names":[],"mappings":""}
|
package/dist/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAMnD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;AAEpE,MAAM,WAAW,WAAW;IAC1B,sBAAsB;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kCAAkC;IAClC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAMD;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,EAAE,CAAC,CAGvB;AAMD;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,EAAE,CAAC,CAGvB;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAMnD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;AAEpE,MAAM,WAAW,WAAW;IAC1B,sBAAsB;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kCAAkC;IAClC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAMD;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,EAAE,CAAC,CAGvB;AAMD;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,EAAE,CAAC,CAGvB;AAmxBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,EAAE,CAKxD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAKxE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.test.d.ts","sourceRoot":"","sources":["../src/sync.test.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED