@tinycloud/node-sdk 1.5.0 → 1.6.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/index.cjs CHANGED
@@ -13751,9 +13751,9 @@ var init_lib20 = __esm({
13751
13751
  }
13752
13752
  });
13753
13753
 
13754
- // ../../node_modules/aes-js/index.js
13754
+ // ../../node_modules/@ethersproject/json-wallets/node_modules/aes-js/index.js
13755
13755
  var require_aes_js = __commonJS({
13756
- "../../node_modules/aes-js/index.js"(exports2, module2) {
13756
+ "../../node_modules/@ethersproject/json-wallets/node_modules/aes-js/index.js"(exports2, module2) {
13757
13757
  "use strict";
13758
13758
  (function(root) {
13759
13759
  function checkInt(value) {
@@ -17025,44 +17025,48 @@ var require_utils2 = __commonJS({
17025
17025
  // src/index.ts
17026
17026
  var index_exports = {};
17027
17027
  __export(index_exports, {
17028
- CapabilityKeyRegistry: () => import_sdk_core10.CapabilityKeyRegistry,
17029
- CapabilityKeyRegistryErrorCodes: () => import_sdk_core10.CapabilityKeyRegistryErrorCodes,
17030
- DataVaultService: () => import_sdk_core8.DataVaultService,
17028
+ CapabilityKeyRegistry: () => import_sdk_core11.CapabilityKeyRegistry,
17029
+ CapabilityKeyRegistryErrorCodes: () => import_sdk_core11.CapabilityKeyRegistryErrorCodes,
17030
+ DataVaultService: () => import_sdk_core9.DataVaultService,
17031
17031
  DatabaseHandle: () => import_sdk_core7.DatabaseHandle,
17032
17032
  DelegatedAccess: () => DelegatedAccess,
17033
- DelegationErrorCodes: () => import_sdk_core9.DelegationErrorCodes,
17034
- DelegationManager: () => import_sdk_core9.DelegationManager,
17033
+ DelegationErrorCodes: () => import_sdk_core10.DelegationErrorCodes,
17034
+ DelegationManager: () => import_sdk_core10.DelegationManager,
17035
+ DuckDbAction: () => import_sdk_core8.DuckDbAction,
17036
+ DuckDbDatabaseHandle: () => import_sdk_core8.DuckDbDatabaseHandle,
17037
+ DuckDbService: () => import_sdk_core8.DuckDbService,
17035
17038
  FileSessionStorage: () => FileSessionStorage,
17036
17039
  KVService: () => import_sdk_core6.KVService,
17037
17040
  MemorySessionStorage: () => MemorySessionStorage,
17038
17041
  NodeUserAuthorization: () => NodeUserAuthorization,
17039
17042
  PrefixedKVService: () => import_sdk_core6.PrefixedKVService,
17040
17043
  PrivateKeySigner: () => PrivateKeySigner,
17041
- ProtocolMismatchError: () => import_sdk_core12.ProtocolMismatchError,
17044
+ ProtocolMismatchError: () => import_sdk_core13.ProtocolMismatchError,
17042
17045
  SQLAction: () => import_sdk_core7.SQLAction,
17043
17046
  SQLService: () => import_sdk_core7.SQLService,
17044
- ServiceContext: () => import_sdk_core13.ServiceContext,
17045
- SharingService: () => import_sdk_core9.SharingService,
17046
- Space: () => import_sdk_core11.Space,
17047
- SpaceErrorCodes: () => import_sdk_core11.SpaceErrorCodes,
17048
- SpaceService: () => import_sdk_core11.SpaceService,
17047
+ ServiceContext: () => import_sdk_core14.ServiceContext,
17048
+ SharingService: () => import_sdk_core10.SharingService,
17049
+ Space: () => import_sdk_core12.Space,
17050
+ SpaceErrorCodes: () => import_sdk_core12.SpaceErrorCodes,
17051
+ SpaceService: () => import_sdk_core12.SpaceService,
17049
17052
  TinyCloud: () => import_sdk_core5.TinyCloud,
17050
17053
  TinyCloudNode: () => TinyCloudNode,
17051
- VaultAction: () => import_sdk_core8.VaultAction,
17052
- VaultHeaders: () => import_sdk_core8.VaultHeaders,
17053
- VersionCheckError: () => import_sdk_core12.VersionCheckError,
17054
+ UnsupportedFeatureError: () => import_sdk_core13.UnsupportedFeatureError,
17055
+ VaultAction: () => import_sdk_core9.VaultAction,
17056
+ VaultHeaders: () => import_sdk_core9.VaultHeaders,
17057
+ VersionCheckError: () => import_sdk_core13.VersionCheckError,
17054
17058
  WasmKeyProvider: () => WasmKeyProvider,
17055
- buildSpaceUri: () => import_sdk_core11.buildSpaceUri,
17056
- checkNodeVersion: () => import_sdk_core12.checkNodeVersion,
17057
- createCapabilityKeyRegistry: () => import_sdk_core10.createCapabilityKeyRegistry,
17058
- createSharingService: () => import_sdk_core9.createSharingService,
17059
- createSpaceService: () => import_sdk_core11.createSpaceService,
17060
- createVaultCrypto: () => import_sdk_core8.createVaultCrypto,
17059
+ buildSpaceUri: () => import_sdk_core12.buildSpaceUri,
17060
+ checkNodeVersion: () => import_sdk_core13.checkNodeVersion,
17061
+ createCapabilityKeyRegistry: () => import_sdk_core11.createCapabilityKeyRegistry,
17062
+ createSharingService: () => import_sdk_core10.createSharingService,
17063
+ createSpaceService: () => import_sdk_core12.createSpaceService,
17064
+ createVaultCrypto: () => import_sdk_core9.createVaultCrypto,
17061
17065
  createWasmKeyProvider: () => createWasmKeyProvider,
17062
17066
  defaultSignStrategy: () => defaultSignStrategy,
17063
17067
  deserializeDelegation: () => deserializeDelegation,
17064
- makePublicSpaceId: () => import_sdk_core11.makePublicSpaceId,
17065
- parseSpaceUri: () => import_sdk_core11.parseSpaceUri,
17068
+ makePublicSpaceId: () => import_sdk_core12.makePublicSpaceId,
17069
+ parseSpaceUri: () => import_sdk_core12.parseSpaceUri,
17066
17070
  serializeDelegation: () => serializeDelegation
17067
17071
  });
17068
17072
  module.exports = __toCommonJS(index_exports);
@@ -17333,6 +17337,7 @@ var defaultSignStrategy = { type: "auto-sign" };
17333
17337
  var _NodeUserAuthorization = class _NodeUserAuthorization {
17334
17338
  constructor(config) {
17335
17339
  this.extensions = [];
17340
+ this._nodeFeatures = [];
17336
17341
  if (!_NodeUserAuthorization.wasmInitialized) {
17337
17342
  (0, import_node_sdk_wasm2.initPanicHook)();
17338
17343
  _NodeUserAuthorization.wasmInitialized = true;
@@ -17362,6 +17367,17 @@ var _NodeUserAuthorization = class _NodeUserAuthorization {
17362
17367
  "tinycloud.sql/export"
17363
17368
  ]
17364
17369
  },
17370
+ duckdb: {
17371
+ "": [
17372
+ "tinycloud.duckdb/read",
17373
+ "tinycloud.duckdb/write",
17374
+ "tinycloud.duckdb/admin",
17375
+ "tinycloud.duckdb/describe",
17376
+ "tinycloud.duckdb/export",
17377
+ "tinycloud.duckdb/import",
17378
+ "tinycloud.duckdb/execute"
17379
+ ]
17380
+ },
17365
17381
  capabilities: {
17366
17382
  "": ["tinycloud.capabilities/read"]
17367
17383
  }
@@ -17385,6 +17401,9 @@ var _NodeUserAuthorization = class _NodeUserAuthorization {
17385
17401
  get tinyCloudSession() {
17386
17402
  return this._tinyCloudSession;
17387
17403
  }
17404
+ get nodeFeatures() {
17405
+ return this._nodeFeatures;
17406
+ }
17388
17407
  /**
17389
17408
  * Add an extension to the authorization flow.
17390
17409
  */
@@ -17580,7 +17599,7 @@ var _NodeUserAuthorization = class _NodeUserAuthorization {
17580
17599
  this._tinyCloudSession = tinyCloudSession;
17581
17600
  this._address = address;
17582
17601
  this._chainId = chainId;
17583
- await (0, import_sdk_core2.checkNodeVersion)(this.tinycloudHosts[0], (0, import_node_sdk_wasm2.protocolVersion)());
17602
+ this._nodeFeatures = await (0, import_sdk_core2.checkNodeVersion)(this.tinycloudHosts[0], (0, import_node_sdk_wasm2.protocolVersion)());
17584
17603
  for (const ext of this.extensions) {
17585
17604
  if (ext.afterSignIn) {
17586
17605
  await ext.afterSignIn(clientSession);
@@ -17738,7 +17757,7 @@ var _NodeUserAuthorization = class _NodeUserAuthorization {
17738
17757
  this._tinyCloudSession = tinyCloudSession;
17739
17758
  this._address = address;
17740
17759
  this._chainId = chainId;
17741
- await (0, import_sdk_core2.checkNodeVersion)(this.tinycloudHosts[0], (0, import_node_sdk_wasm2.protocolVersion)());
17760
+ this._nodeFeatures = await (0, import_sdk_core2.checkNodeVersion)(this.tinycloudHosts[0], (0, import_node_sdk_wasm2.protocolVersion)());
17742
17761
  for (const ext of this.extensions) {
17743
17762
  if (ext.afterSignIn) {
17744
17763
  await ext.afterSignIn(clientSession);
@@ -17842,6 +17861,9 @@ var DelegatedAccess = class {
17842
17861
  this._sql = new import_sdk_core3.SQLService({});
17843
17862
  this._sql.initialize(this._serviceContext);
17844
17863
  this._serviceContext.registerService("sql", this._sql);
17864
+ this._duckdb = new import_sdk_core3.DuckDbService({});
17865
+ this._duckdb.initialize(this._serviceContext);
17866
+ this._serviceContext.registerService("duckdb", this._duckdb);
17845
17867
  const serviceSession = {
17846
17868
  delegationHeader: session.delegationHeader,
17847
17869
  delegationCid: session.delegationCid,
@@ -17881,6 +17903,12 @@ var DelegatedAccess = class {
17881
17903
  get sql() {
17882
17904
  return this._sql;
17883
17905
  }
17906
+ /**
17907
+ * DuckDB operations on the delegated space.
17908
+ */
17909
+ get duckdb() {
17910
+ return this._duckdb;
17911
+ }
17884
17912
  };
17885
17913
 
17886
17914
  // src/keys/WasmKeyProvider.ts
@@ -18053,6 +18081,9 @@ var _TinyCloudNode = class _TinyCloudNode {
18053
18081
  this.tc = new import_sdk_core4.TinyCloud(this.auth);
18054
18082
  }
18055
18083
  }
18084
+ get nodeFeatures() {
18085
+ return this.auth?.nodeFeatures ?? [];
18086
+ }
18056
18087
  /**
18057
18088
  * Get the primary identity DID for this user.
18058
18089
  * - If wallet connected and signed in: returns PKH DID (did:pkh:eip155:{chainId}:{address})
@@ -18118,6 +18149,7 @@ var _TinyCloudNode = class _TinyCloudNode {
18118
18149
  this._chainId = await this.signer.getChainId();
18119
18150
  this._kv = void 0;
18120
18151
  this._sql = void 0;
18152
+ this._duckdb = void 0;
18121
18153
  this._serviceContext = void 0;
18122
18154
  await this.tc.signIn();
18123
18155
  this.initializeServices();
@@ -18134,6 +18166,7 @@ var _TinyCloudNode = class _TinyCloudNode {
18134
18166
  async restoreSession(sessionData) {
18135
18167
  this._kv = void 0;
18136
18168
  this._sql = void 0;
18169
+ this._duckdb = void 0;
18137
18170
  this._serviceContext = void 0;
18138
18171
  if (sessionData.address) {
18139
18172
  this._address = sessionData.address;
@@ -18152,6 +18185,9 @@ var _TinyCloudNode = class _TinyCloudNode {
18152
18185
  this._sql = new import_sdk_core4.SQLService({});
18153
18186
  this._sql.initialize(this._serviceContext);
18154
18187
  this._serviceContext.registerService("sql", this._sql);
18188
+ this._duckdb = new import_sdk_core4.DuckDbService({});
18189
+ this._duckdb.initialize(this._serviceContext);
18190
+ this._serviceContext.registerService("duckdb", this._duckdb);
18155
18191
  const serviceSession = {
18156
18192
  delegationHeader: sessionData.delegationHeader,
18157
18193
  delegationCid: sessionData.delegationCid,
@@ -18227,9 +18263,17 @@ var _TinyCloudNode = class _TinyCloudNode {
18227
18263
  this._kv = new import_sdk_core4.KVService({});
18228
18264
  this._kv.initialize(this._serviceContext);
18229
18265
  this._serviceContext.registerService("kv", this._kv);
18230
- this._sql = new import_sdk_core4.SQLService({});
18231
- this._sql.initialize(this._serviceContext);
18232
- this._serviceContext.registerService("sql", this._sql);
18266
+ const features = this.nodeFeatures;
18267
+ if (features.length === 0 || features.includes("sql")) {
18268
+ this._sql = new import_sdk_core4.SQLService({});
18269
+ this._sql.initialize(this._serviceContext);
18270
+ this._serviceContext.registerService("sql", this._sql);
18271
+ }
18272
+ if (features.length === 0 || features.includes("duckdb")) {
18273
+ this._duckdb = new import_sdk_core4.DuckDbService({});
18274
+ this._duckdb.initialize(this._serviceContext);
18275
+ this._serviceContext.registerService("duckdb", this._duckdb);
18276
+ }
18233
18277
  const serviceSession = {
18234
18278
  delegationHeader: session.delegationHeader,
18235
18279
  delegationCid: session.delegationCid,
@@ -18309,7 +18353,14 @@ var _TinyCloudNode = class _TinyCloudNode {
18309
18353
  "tinycloud.sql/read",
18310
18354
  "tinycloud.sql/write",
18311
18355
  "tinycloud.sql/admin",
18312
- "tinycloud.sql/*"
18356
+ "tinycloud.sql/*",
18357
+ "tinycloud.duckdb/read",
18358
+ "tinycloud.duckdb/write",
18359
+ "tinycloud.duckdb/admin",
18360
+ "tinycloud.duckdb/describe",
18361
+ "tinycloud.duckdb/export",
18362
+ "tinycloud.duckdb/import",
18363
+ "tinycloud.duckdb/*"
18313
18364
  ],
18314
18365
  expiry: this.getSessionExpiry(),
18315
18366
  isRevoked: false,
@@ -18332,7 +18383,14 @@ var _TinyCloudNode = class _TinyCloudNode {
18332
18383
  "tinycloud.sql/read",
18333
18384
  "tinycloud.sql/write",
18334
18385
  "tinycloud.sql/admin",
18335
- "tinycloud.sql/*"
18386
+ "tinycloud.sql/*",
18387
+ "tinycloud.duckdb/read",
18388
+ "tinycloud.duckdb/write",
18389
+ "tinycloud.duckdb/admin",
18390
+ "tinycloud.duckdb/describe",
18391
+ "tinycloud.duckdb/export",
18392
+ "tinycloud.duckdb/import",
18393
+ "tinycloud.duckdb/*"
18336
18394
  ],
18337
18395
  expiry: this.getSessionExpiry(),
18338
18396
  isRevoked: false,
@@ -18498,10 +18556,27 @@ var _TinyCloudNode = class _TinyCloudNode {
18498
18556
  */
18499
18557
  get sql() {
18500
18558
  if (!this._sql) {
18559
+ const features = this.nodeFeatures;
18560
+ if (features.length > 0 && !features.includes("sql")) {
18561
+ throw new import_sdk_core4.UnsupportedFeatureError("sql", this.config.host, features);
18562
+ }
18501
18563
  throw new Error("Not signed in. Call signIn() first.");
18502
18564
  }
18503
18565
  return this._sql;
18504
18566
  }
18567
+ /**
18568
+ * DuckDB database operations on this user's space.
18569
+ */
18570
+ get duckdb() {
18571
+ if (!this._duckdb) {
18572
+ const features = this.nodeFeatures;
18573
+ if (features.length > 0 && !features.includes("duckdb")) {
18574
+ throw new import_sdk_core4.UnsupportedFeatureError("duckdb", this.config.host, features);
18575
+ }
18576
+ throw new Error("Not signed in. Call signIn() first.");
18577
+ }
18578
+ return this._duckdb;
18579
+ }
18505
18580
  /**
18506
18581
  * Data Vault operations - client-side encrypted KV storage.
18507
18582
  * Call `vault.unlock(signer)` after signIn() to derive encryption keys.
@@ -18859,12 +18934,16 @@ var _TinyCloudNode = class _TinyCloudNode {
18859
18934
  const abilities = {};
18860
18935
  const kvActions = params.actions.filter((a) => a.startsWith("tinycloud.kv/"));
18861
18936
  const sqlActions = params.actions.filter((a) => a.startsWith("tinycloud.sql/"));
18937
+ const duckdbActions = params.actions.filter((a) => a.startsWith("tinycloud.duckdb/"));
18862
18938
  if (kvActions.length > 0) {
18863
18939
  abilities.kv = { [params.path]: kvActions };
18864
18940
  }
18865
18941
  if (sqlActions.length > 0) {
18866
18942
  abilities.sql = { [params.path]: sqlActions };
18867
18943
  }
18944
+ if (duckdbActions.length > 0) {
18945
+ abilities.duckdb = { [params.path]: duckdbActions };
18946
+ }
18868
18947
  const now = /* @__PURE__ */ new Date();
18869
18948
  const expiryMs = params.expiryMs ?? 60 * 60 * 1e3;
18870
18949
  const expirationTime = new Date(now.getTime() + expiryMs);
@@ -18953,12 +19032,16 @@ var _TinyCloudNode = class _TinyCloudNode {
18953
19032
  const abilities = {};
18954
19033
  const kvActions = delegation.actions.filter((a) => a.startsWith("tinycloud.kv/"));
18955
19034
  const sqlActions = delegation.actions.filter((a) => a.startsWith("tinycloud.sql/"));
19035
+ const duckdbActions = delegation.actions.filter((a) => a.startsWith("tinycloud.duckdb/"));
18956
19036
  if (kvActions.length > 0) {
18957
19037
  abilities.kv = { [delegation.path]: kvActions };
18958
19038
  }
18959
19039
  if (sqlActions.length > 0) {
18960
19040
  abilities.sql = { [delegation.path]: sqlActions };
18961
19041
  }
19042
+ if (duckdbActions.length > 0) {
19043
+ abilities.duckdb = { [delegation.path]: duckdbActions };
19044
+ }
18962
19045
  const now = /* @__PURE__ */ new Date();
18963
19046
  const maxExpiry = new Date(now.getTime() + 60 * 60 * 1e3);
18964
19047
  const expirationTime = delegation.expiry < maxExpiry ? delegation.expiry : maxExpiry;
@@ -19040,12 +19123,16 @@ var _TinyCloudNode = class _TinyCloudNode {
19040
19123
  const abilities = {};
19041
19124
  const kvActions = params.actions.filter((a) => a.startsWith("tinycloud.kv/"));
19042
19125
  const sqlActions = params.actions.filter((a) => a.startsWith("tinycloud.sql/"));
19126
+ const duckdbActions = params.actions.filter((a) => a.startsWith("tinycloud.duckdb/"));
19043
19127
  if (kvActions.length > 0) {
19044
19128
  abilities.kv = { [params.path]: kvActions };
19045
19129
  }
19046
19130
  if (sqlActions.length > 0) {
19047
19131
  abilities.sql = { [params.path]: sqlActions };
19048
19132
  }
19133
+ if (duckdbActions.length > 0) {
19134
+ abilities.duckdb = { [params.path]: duckdbActions };
19135
+ }
19049
19136
  const targetHost = parentDelegation.host ?? this.config.host;
19050
19137
  const prepared = (0, import_node_sdk_wasm4.prepareSession)({
19051
19138
  abilities,
@@ -19114,6 +19201,7 @@ var import_sdk_core10 = require("@tinycloud/sdk-core");
19114
19201
  var import_sdk_core11 = require("@tinycloud/sdk-core");
19115
19202
  var import_sdk_core12 = require("@tinycloud/sdk-core");
19116
19203
  var import_sdk_core13 = require("@tinycloud/sdk-core");
19204
+ var import_sdk_core14 = require("@tinycloud/sdk-core");
19117
19205
  // Annotate the CommonJS export names for ESM import in node:
19118
19206
  0 && (module.exports = {
19119
19207
  CapabilityKeyRegistry,
@@ -19123,6 +19211,9 @@ var import_sdk_core13 = require("@tinycloud/sdk-core");
19123
19211
  DelegatedAccess,
19124
19212
  DelegationErrorCodes,
19125
19213
  DelegationManager,
19214
+ DuckDbAction,
19215
+ DuckDbDatabaseHandle,
19216
+ DuckDbService,
19126
19217
  FileSessionStorage,
19127
19218
  KVService,
19128
19219
  MemorySessionStorage,
@@ -19139,6 +19230,7 @@ var import_sdk_core13 = require("@tinycloud/sdk-core");
19139
19230
  SpaceService,
19140
19231
  TinyCloud,
19141
19232
  TinyCloudNode,
19233
+ UnsupportedFeatureError,
19142
19234
  VaultAction,
19143
19235
  VaultHeaders,
19144
19236
  VersionCheckError,