@hasna/cloud 0.1.9 → 0.1.10

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/index.js CHANGED
@@ -11605,7 +11605,7 @@ function batchUpsertSqlite(target, table, columns, updateCols, primaryKeys, batc
11605
11605
  const setClause = updateCols.length > 0 ? updateCols.map((c) => `"${c}" = EXCLUDED."${c}"`).join(", ") : `"${primaryKeys[0]}" = EXCLUDED."${primaryKeys[0]}"`;
11606
11606
  const sql = `INSERT INTO "${table}" (${colList}) VALUES ${valuePlaceholders}
11607
11607
  ON CONFLICT (${pkList}) DO UPDATE SET ${setClause}`;
11608
- const params = batch.flatMap((row) => columns.map((c) => row[c] ?? null));
11608
+ const params = batch.flatMap((row) => columns.map((c) => coerceForSqlite(row[c])));
11609
11609
  target.run(sql, ...params);
11610
11610
  }
11611
11611
  async function batchInsertPg(target, table, columns, batch) {
@@ -11626,9 +11626,22 @@ function batchInsertSqlite(target, table, columns, batch) {
11626
11626
  const colList = columns.map((c) => `"${c}"`).join(", ");
11627
11627
  const valuePlaceholders = batch.map(() => `(${columns.map(() => "?").join(", ")})`).join(", ");
11628
11628
  const sql = `INSERT INTO "${table}" (${colList}) VALUES ${valuePlaceholders}`;
11629
- const params = batch.flatMap((row) => columns.map((c) => row[c] ?? null));
11629
+ const params = batch.flatMap((row) => columns.map((c) => coerceForSqlite(row[c])));
11630
11630
  target.run(sql, ...params);
11631
11631
  }
11632
+ function coerceForSqlite(value) {
11633
+ if (value === null || value === undefined)
11634
+ return null;
11635
+ if (typeof value === "string" || typeof value === "number" || typeof value === "bigint" || typeof value === "boolean")
11636
+ return value;
11637
+ if (value instanceof Date)
11638
+ return value.toISOString();
11639
+ if (Buffer.isBuffer(value) || value instanceof Uint8Array)
11640
+ return value;
11641
+ if (typeof value === "object")
11642
+ return JSON.stringify(value);
11643
+ return String(value);
11644
+ }
11632
11645
  function isAsyncAdapter(adapter) {
11633
11646
  return adapter.constructor.name === "PgAdapterAsync" || typeof adapter.raw?.connect === "function";
11634
11647
  }
package/dist/index.js CHANGED
@@ -9597,7 +9597,7 @@ function batchUpsertSqlite(target, table, columns, updateCols, primaryKeys, batc
9597
9597
  const setClause = updateCols.length > 0 ? updateCols.map((c) => `"${c}" = EXCLUDED."${c}"`).join(", ") : `"${primaryKeys[0]}" = EXCLUDED."${primaryKeys[0]}"`;
9598
9598
  const sql = `INSERT INTO "${table}" (${colList}) VALUES ${valuePlaceholders}
9599
9599
  ON CONFLICT (${pkList}) DO UPDATE SET ${setClause}`;
9600
- const params = batch.flatMap((row) => columns.map((c) => row[c] ?? null));
9600
+ const params = batch.flatMap((row) => columns.map((c) => coerceForSqlite(row[c])));
9601
9601
  target.run(sql, ...params);
9602
9602
  }
9603
9603
  async function batchInsertPg(target, table, columns, batch) {
@@ -9618,9 +9618,22 @@ function batchInsertSqlite(target, table, columns, batch) {
9618
9618
  const colList = columns.map((c) => `"${c}"`).join(", ");
9619
9619
  const valuePlaceholders = batch.map(() => `(${columns.map(() => "?").join(", ")})`).join(", ");
9620
9620
  const sql = `INSERT INTO "${table}" (${colList}) VALUES ${valuePlaceholders}`;
9621
- const params = batch.flatMap((row) => columns.map((c) => row[c] ?? null));
9621
+ const params = batch.flatMap((row) => columns.map((c) => coerceForSqlite(row[c])));
9622
9622
  target.run(sql, ...params);
9623
9623
  }
9624
+ function coerceForSqlite(value) {
9625
+ if (value === null || value === undefined)
9626
+ return null;
9627
+ if (typeof value === "string" || typeof value === "number" || typeof value === "bigint" || typeof value === "boolean")
9628
+ return value;
9629
+ if (value instanceof Date)
9630
+ return value.toISOString();
9631
+ if (Buffer.isBuffer(value) || value instanceof Uint8Array)
9632
+ return value;
9633
+ if (typeof value === "object")
9634
+ return JSON.stringify(value);
9635
+ return String(value);
9636
+ }
9624
9637
  function isAsyncAdapter(adapter) {
9625
9638
  return adapter.constructor.name === "PgAdapterAsync" || typeof adapter.raw?.connect === "function";
9626
9639
  }
package/dist/mcp/index.js CHANGED
@@ -24944,7 +24944,7 @@ function batchUpsertSqlite(target, table, columns, updateCols, primaryKeys, batc
24944
24944
  const setClause = updateCols.length > 0 ? updateCols.map((c) => `"${c}" = EXCLUDED."${c}"`).join(", ") : `"${primaryKeys[0]}" = EXCLUDED."${primaryKeys[0]}"`;
24945
24945
  const sql = `INSERT INTO "${table}" (${colList}) VALUES ${valuePlaceholders}
24946
24946
  ON CONFLICT (${pkList}) DO UPDATE SET ${setClause}`;
24947
- const params = batch.flatMap((row) => columns.map((c) => row[c] ?? null));
24947
+ const params = batch.flatMap((row) => columns.map((c) => coerceForSqlite(row[c])));
24948
24948
  target.run(sql, ...params);
24949
24949
  }
24950
24950
  async function batchInsertPg(target, table, columns, batch) {
@@ -24965,9 +24965,22 @@ function batchInsertSqlite(target, table, columns, batch) {
24965
24965
  const colList = columns.map((c) => `"${c}"`).join(", ");
24966
24966
  const valuePlaceholders = batch.map(() => `(${columns.map(() => "?").join(", ")})`).join(", ");
24967
24967
  const sql = `INSERT INTO "${table}" (${colList}) VALUES ${valuePlaceholders}`;
24968
- const params = batch.flatMap((row) => columns.map((c) => row[c] ?? null));
24968
+ const params = batch.flatMap((row) => columns.map((c) => coerceForSqlite(row[c])));
24969
24969
  target.run(sql, ...params);
24970
24970
  }
24971
+ function coerceForSqlite(value) {
24972
+ if (value === null || value === undefined)
24973
+ return null;
24974
+ if (typeof value === "string" || typeof value === "number" || typeof value === "bigint" || typeof value === "boolean")
24975
+ return value;
24976
+ if (value instanceof Date)
24977
+ return value.toISOString();
24978
+ if (Buffer.isBuffer(value) || value instanceof Uint8Array)
24979
+ return value;
24980
+ if (typeof value === "object")
24981
+ return JSON.stringify(value);
24982
+ return String(value);
24983
+ }
24971
24984
  function isAsyncAdapter(adapter) {
24972
24985
  return adapter.constructor.name === "PgAdapterAsync" || typeof adapter.raw?.connect === "function";
24973
24986
  }
@@ -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;AA8iBD;;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"}
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;AAkkBD;;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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/cloud",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "description": "Shared cloud infrastructure — database adapter (SQLite + PostgreSQL), sync engine, feedback system, unified dotfile config",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",