obsidian-integration-testing 1.3.2 → 2.0.1

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.
Files changed (58) hide show
  1. package/README.md +54 -11
  2. package/dist/lib/cjs/context-provider.cjs +37 -0
  3. package/dist/lib/cjs/context-provider.d.cts +28 -0
  4. package/dist/lib/cjs/global-setup-core.cjs +127 -0
  5. package/dist/lib/cjs/global-setup-core.d.cts +48 -0
  6. package/dist/lib/cjs/index.cjs +4 -2
  7. package/dist/lib/cjs/index.d.cts +2 -1
  8. package/dist/lib/cjs/jest/global-setup.cjs +63 -0
  9. package/dist/lib/cjs/jest/global-setup.d.cts +61 -0
  10. package/dist/lib/cjs/log.cjs +32 -0
  11. package/dist/lib/cjs/log.d.cts +11 -0
  12. package/dist/lib/cjs/obsidian-cli.cjs +3 -3
  13. package/dist/lib/cjs/obsidian-cli.d.cts +1 -1
  14. package/dist/lib/cjs/temp-vault.cjs +7 -7
  15. package/dist/lib/cjs/temp-vault.d.cts +3 -3
  16. package/dist/lib/cjs/transport-appium.cjs +12 -11
  17. package/dist/lib/cjs/transport-desktop-cdp.cjs +35 -10
  18. package/dist/lib/cjs/transport-desktop-cdp.d.cts +12 -0
  19. package/dist/lib/cjs/transport-desktop-cli.cjs +34 -10
  20. package/dist/lib/cjs/transport-desktop-cli.d.cts +11 -0
  21. package/dist/lib/cjs/transport-factory.cjs +15 -14
  22. package/dist/lib/cjs/vault-registry.cjs +4 -4
  23. package/dist/lib/cjs/vault-registry.d.cts +8 -2
  24. package/dist/lib/cjs/vitest/global-setup.cjs +52 -0
  25. package/dist/lib/{esm/integration-global-setup.d.mts → cjs/vitest/global-setup.d.cts} +5 -2
  26. package/dist/lib/{esm/vitest.d.mts → cjs/vitest/typings.d.cts} +1 -1
  27. package/dist/lib/esm/context-provider.d.mts +28 -0
  28. package/dist/lib/esm/context-provider.mjs +12 -0
  29. package/dist/lib/esm/global-setup-core.d.mts +48 -0
  30. package/dist/lib/esm/global-setup-core.mjs +108 -0
  31. package/dist/lib/esm/index.d.mts +2 -1
  32. package/dist/lib/esm/index.mjs +3 -2
  33. package/dist/lib/esm/jest/global-setup.d.mts +61 -0
  34. package/dist/lib/esm/jest/global-setup.mjs +39 -0
  35. package/dist/lib/esm/log.d.mts +11 -0
  36. package/dist/lib/esm/log.mjs +8 -0
  37. package/dist/lib/esm/obsidian-cli.d.mts +1 -1
  38. package/dist/lib/esm/obsidian-cli.mjs +3 -3
  39. package/dist/lib/esm/temp-vault.d.mts +3 -3
  40. package/dist/lib/esm/temp-vault.mjs +7 -7
  41. package/dist/lib/esm/transport-appium.mjs +12 -11
  42. package/dist/lib/esm/transport-desktop-cdp.d.mts +12 -0
  43. package/dist/lib/esm/transport-desktop-cdp.mjs +39 -11
  44. package/dist/lib/esm/transport-desktop-cli.d.mts +11 -0
  45. package/dist/lib/esm/transport-desktop-cli.mjs +35 -10
  46. package/dist/lib/esm/transport-factory.mjs +15 -14
  47. package/dist/lib/esm/vault-registry.d.mts +8 -2
  48. package/dist/lib/esm/vault-registry.mjs +4 -4
  49. package/dist/lib/{cjs/integration-global-setup.d.cts → esm/vitest/global-setup.d.mts} +5 -2
  50. package/dist/lib/esm/vitest/global-setup.mjs +29 -0
  51. package/dist/lib/{cjs/vitest.d.cts → esm/vitest/typings.d.mts} +1 -1
  52. package/dist/obsidian-integration-testing-2.0.1.tgz +0 -0
  53. package/package.json +25 -11
  54. package/dist/lib/cjs/integration-global-setup.cjs +0 -132
  55. package/dist/lib/esm/integration-global-setup.mjs +0 -112
  56. package/dist/obsidian-integration-testing-1.3.2.tgz +0 -0
  57. /package/dist/lib/cjs/{vitest.cjs → vitest/typings.cjs} +0 -0
  58. /package/dist/lib/esm/{vitest.mjs → vitest/typings.mjs} +0 -0
@@ -35,6 +35,7 @@ module.exports = __toCommonJS(transport_factory_exports);
35
35
  var import_node_child_process = require("node:child_process");
36
36
  var import_node_http = __toESM(require("node:http"), 1);
37
37
  var import_webdriverio = require("webdriverio");
38
+ var import_log = require("./log.cjs");
38
39
  var import_transport_appium = require("./transport-appium.cjs");
39
40
  var import_transport_desktop_cdp = require("./transport-desktop-cdp.cjs");
40
41
  var import_transport_desktop_cli = require("./transport-desktop-cli.cjs");
@@ -44,25 +45,25 @@ const APPIUM_CONNECTION_RETRY_COUNT = 1;
44
45
  const APPIUM_CONNECTION_RETRY_TIMEOUT_IN_MILLISECONDS = 1e4;
45
46
  const APPIUM_PREFLIGHT_TIMEOUT_IN_MILLISECONDS = 5e3;
46
47
  const APPIUM_START_POLL_INTERVAL_IN_MILLISECONDS = 500;
47
- const APPIUM_START_TIMEOUT_IN_MILLISECONDS = 3e4;
48
+ const APPIUM_START_TIMEOUT_IN_MILLISECONDS = 6e4;
48
49
  const CDP_DEFAULT_PORT = 8315;
49
50
  const COMMAND_TIMEOUT_IN_MILLISECONDS = 300;
50
51
  const SERVER_LAUNCH_TIMEOUT_IN_MILLISECONDS = 3e4;
51
52
  let cachedTransport;
52
53
  async function createTransportFromOptions(options) {
53
54
  if (!options || options.type === "obsidian-cli") {
54
- console.warn("[transport-factory] Creating DesktopCliTransport (no options or type=obsidian-cli)");
55
+ (0, import_log.log)("[transport-factory] Creating DesktopCliTransport (no options or type=obsidian-cli)");
55
56
  return new import_transport_desktop_cli.DesktopCliTransport();
56
57
  }
57
58
  if (options.type === "obsidian-cdp") {
58
- console.warn(`[transport-factory] Creating DesktopCdpTransport (host=${options.host ?? "localhost"}, port=${String(options.port ?? CDP_DEFAULT_PORT)})`);
59
+ (0, import_log.log)(`[transport-factory] Creating DesktopCdpTransport (host=${options.host ?? "localhost"}, port=${String(options.port ?? CDP_DEFAULT_PORT)})`);
59
60
  return new import_transport_desktop_cdp.DesktopCdpTransport({
60
61
  ...options.host !== void 0 && { cdpHost: options.host },
61
62
  ...options.port !== void 0 && { cdpPort: options.port },
62
63
  ...options.commandTimeoutInMilliseconds !== void 0 && { commandTimeoutInMilliseconds: options.commandTimeoutInMilliseconds }
63
64
  });
64
65
  }
65
- console.warn(`[transport-factory] Creating AppiumTransport (url=${options.appiumUrl}, device=${options.deviceId})`);
66
+ (0, import_log.log)(`[transport-factory] Creating AppiumTransport (url=${options.appiumUrl}, device=${options.deviceId})`);
66
67
  return createAppiumTransport(options);
67
68
  }
68
69
  async function getOrCreateTransport(options) {
@@ -104,21 +105,21 @@ async function createAppiumTransport(options) {
104
105
  throw new Error(`Invalid port in appiumUrl: ${url.port}`);
105
106
  }
106
107
  const appId = options.appId ?? APP_PACKAGE;
107
- console.warn(`[transport-factory] Checking Appium server at ${options.appiumUrl}...`);
108
+ (0, import_log.log)(`[transport-factory] Checking Appium server at ${options.appiumUrl}...`);
108
109
  let appiumProcess;
109
110
  try {
110
111
  await checkAppiumReachable(url);
111
- console.warn("[transport-factory] Appium server is reachable.");
112
+ (0, import_log.log)("[transport-factory] Appium server is reachable.");
112
113
  } catch (error) {
113
114
  if (options.shouldAutoStartAppium === false) {
114
115
  throw error;
115
116
  }
116
- console.warn(`[transport-factory] Appium not reachable, auto-starting on port ${String(port)}...`);
117
+ (0, import_log.log)(`[transport-factory] Appium not reachable, auto-starting on port ${String(port)}...`);
117
118
  appiumProcess = startAppiumServer(port);
118
119
  await waitForAppiumReady(url);
119
- console.warn("[transport-factory] Auto-started Appium server is ready.");
120
+ (0, import_log.log)("[transport-factory] Auto-started Appium server is ready.");
120
121
  }
121
- console.warn(`[transport-factory] Connecting to Appium (device=${options.deviceId}, app=${appId})...`);
122
+ (0, import_log.log)(`[transport-factory] Connecting to Appium (device=${options.deviceId}, app=${appId})...`);
122
123
  const browser = await (0, import_webdriverio.remote)({
123
124
  capabilities: {
124
125
  "appium:appActivity": APP_ACTIVITY,
@@ -141,7 +142,7 @@ async function createAppiumTransport(options) {
141
142
  path: url.pathname,
142
143
  port
143
144
  });
144
- console.warn("[transport-factory] Appium session established.");
145
+ (0, import_log.log)("[transport-factory] Appium session established.");
145
146
  const transport = new import_transport_appium.AppiumTransport({
146
147
  appId,
147
148
  browser,
@@ -153,16 +154,16 @@ async function createAppiumTransport(options) {
153
154
  transport.dispose = async () => {
154
155
  await originalDispose();
155
156
  appiumProcess.kill();
156
- console.warn("[transport-factory] Auto-started Appium server stopped.");
157
+ (0, import_log.log)("[transport-factory] Auto-started Appium server stopped.");
157
158
  };
158
159
  }
159
160
  return transport;
160
161
  }
161
162
  function startAppiumServer(port) {
162
- const child = (0, import_node_child_process.spawn)("npx", ["appium", "--port", String(port)], {
163
+ const child = (0, import_node_child_process.spawn)(`npx appium --log-timestamp --port ${String(port)}`, {
163
164
  detached: true,
164
165
  shell: true,
165
- stdio: "ignore"
166
+ stdio: "inherit"
166
167
  });
167
168
  child.unref();
168
169
  return child;
@@ -188,4 +189,4 @@ async function waitForAppiumReady(url) {
188
189
  createTransportFromOptions,
189
190
  getOrCreateTransport
190
191
  });
191
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RyYW5zcG9ydC1mYWN0b3J5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRmFjdG9yeSBmb3IgY3JlYXRpbmcgdHJhbnNwb3J0IGluc3RhbmNlcyBmcm9tIHtAbGluayBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnN9LlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIGZhY3RvcnkgY292ZXJlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcblxuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IGh0dHAgZnJvbSAnbm9kZTpodHRwJztcbmltcG9ydCB7IHJlbW90ZSB9IGZyb20gJ3dlYmRyaXZlcmlvJztcblxuaW1wb3J0IHR5cGUge1xuICBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zLFxuICBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5janMnO1xuaW1wb3J0IHR5cGUgeyBPYnNpZGlhblRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LmNqcyc7XG5cbmltcG9ydCB7IEFwcGl1bVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWFwcGl1bS5janMnO1xuaW1wb3J0IHsgRGVza3RvcENkcFRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2RwLmNqcyc7XG5pbXBvcnQgeyBEZXNrdG9wQ2xpVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQtZGVza3RvcC1jbGkuY2pzJztcblxuY29uc3QgQVBQX1BBQ0tBR0UgPSAnbWQub2JzaWRpYW4nO1xuY29uc3QgQVBQX0FDVElWSVRZID0gYCR7QVBQX1BBQ0tBR0V9Lk1haW5BY3Rpdml0eWA7XG5jb25zdCBBUFBJVU1fQ09OTkVDVElPTl9SRVRSWV9DT1VOVCA9IDE7XG5jb25zdCBBUFBJVU1fQ09OTkVDVElPTl9SRVRSWV9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDEwMDAwO1xuY29uc3QgQVBQSVVNX1BSRUZMSUdIVF9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDUwMDA7XG5jb25zdCBBUFBJVU1fU1RBUlRfUE9MTF9JTlRFUlZBTF9JTl9NSUxMSVNFQ09ORFMgPSA1MDA7XG5jb25zdCBBUFBJVU1fU1RBUlRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAzMDAwMDtcbmNvbnN0IENEUF9ERUZBVUxUX1BPUlQgPSA4MzE1O1xuY29uc3QgQ09NTUFORF9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDMwMDtcbmNvbnN0IFNFUlZFUl9MQVVOQ0hfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAzMDAwMDtcblxubGV0IGNhY2hlZFRyYW5zcG9ydDogT2JzaWRpYW5UcmFuc3BvcnQgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB0cmFuc3BvcnQgaW5zdGFuY2UgZnJvbSB0aGUgZ2l2ZW4gb3B0aW9ucy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRyYW5zcG9ydCBjb25maWd1cmF0aW9uLiBEZWZhdWx0cyB0byBDTEkgdHJhbnNwb3J0LlxuICogQHJldHVybnMgQSBuZXcgdHJhbnNwb3J0IGluc3RhbmNlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVHJhbnNwb3J0RnJvbU9wdGlvbnMob3B0aW9ucz86IE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyk6IFByb21pc2U8T2JzaWRpYW5UcmFuc3BvcnQ+IHtcbiAgaWYgKCFvcHRpb25zIHx8IG9wdGlvbnMudHlwZSA9PT0gJ29ic2lkaWFuLWNsaScpIHtcbiAgICBjb25zb2xlLndhcm4oJ1t0cmFuc3BvcnQtZmFjdG9yeV0gQ3JlYXRpbmcgRGVza3RvcENsaVRyYW5zcG9ydCAobm8gb3B0aW9ucyBvciB0eXBlPW9ic2lkaWFuLWNsaSknKTtcbiAgICByZXR1cm4gbmV3IERlc2t0b3BDbGlUcmFuc3BvcnQoKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnR5cGUgPT09ICdvYnNpZGlhbi1jZHAnKSB7XG4gICAgY29uc29sZS53YXJuKGBbdHJhbnNwb3J0LWZhY3RvcnldIENyZWF0aW5nIERlc2t0b3BDZHBUcmFuc3BvcnQgKGhvc3Q9JHtvcHRpb25zLmhvc3QgPz8gJ2xvY2FsaG9zdCd9LCBwb3J0PSR7U3RyaW5nKG9wdGlvbnMucG9ydCA/PyBDRFBfREVGQVVMVF9QT1JUKX0pYCk7XG4gICAgcmV0dXJuIG5ldyBEZXNrdG9wQ2RwVHJhbnNwb3J0KHtcbiAgICAgIC4uLihvcHRpb25zLmhvc3QgIT09IHVuZGVmaW5lZCAmJiB7IGNkcEhvc3Q6IG9wdGlvbnMuaG9zdCB9KSxcbiAgICAgIC4uLihvcHRpb25zLnBvcnQgIT09IHVuZGVmaW5lZCAmJiB7IGNkcFBvcnQ6IG9wdGlvbnMucG9ydCB9KSxcbiAgICAgIC4uLihvcHRpb25zLmNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHMgIT09IHVuZGVmaW5lZCAmJiB7IGNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHM6IG9wdGlvbnMuY29tbWFuZFRpbWVvdXRJbk1pbGxpc2Vjb25kcyB9KVxuICAgIH0pO1xuICB9XG5cbiAgY29uc29sZS53YXJuKGBbdHJhbnNwb3J0LWZhY3RvcnldIENyZWF0aW5nIEFwcGl1bVRyYW5zcG9ydCAodXJsPSR7b3B0aW9ucy5hcHBpdW1Vcmx9LCBkZXZpY2U9JHtvcHRpb25zLmRldmljZUlkfSlgKTtcbiAgcmV0dXJuIGNyZWF0ZUFwcGl1bVRyYW5zcG9ydChvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgY2FjaGVkIHRyYW5zcG9ydCBpbnN0YW5jZSwgY3JlYXRpbmcgb25lIGZyb20gdGhlIGdpdmVuIG9wdGlvbnNcbiAqIGlmIG5vdCBhbHJlYWR5IGNhY2hlZC5cbiAqXG4gKiBUaGUgdHJhbnNwb3J0IGlzIGNhY2hlZCBwZXIgd29ya2VyIHByb2Nlc3Mgc28gV2ViU29ja2V0L0FwcGl1bSBzZXNzaW9uc1xuICogYXJlIHJldXNlZCBhY3Jvc3MgY2FsbHMgd2l0aGluIHRoZSBzYW1lIHRlc3Qgd29ya2VyLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24uIERlZmF1bHRzIHRvIENMSSB0cmFuc3BvcnQuXG4gKiBAcmV0dXJucyBUaGUgY2FjaGVkIG9yIG5ld2x5IGNyZWF0ZWQgdHJhbnNwb3J0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0T3JDcmVhdGVUcmFuc3BvcnQob3B0aW9ucz86IE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyk6IFByb21pc2U8T2JzaWRpYW5UcmFuc3BvcnQ+IHtcbiAgaWYgKGNhY2hlZFRyYW5zcG9ydCkge1xuICAgIHJldHVybiBjYWNoZWRUcmFuc3BvcnQ7XG4gIH1cblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBjcmVhdGVUcmFuc3BvcnRGcm9tT3B0aW9ucyhvcHRpb25zKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXMgLS0gU2luZ2xlLXRocmVhZGVkIHdvcmtlcjsgbm8gY29uY3VycmVudCB3cml0ZXMuXG4gIGNhY2hlZFRyYW5zcG9ydCA9IHJlc3VsdDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBQZXJmb3JtcyBhIHF1aWNrIEhUVFAgY2hlY2sgYWdhaW5zdCB0aGUgQXBwaXVtIHNlcnZlcidzIHN0YXR1cyBlbmRwb2ludC5cbiAqXG4gKiBGYWlscyBmYXN0ICh3aXRoaW4ge0BsaW5rIEFQUElVTV9QUkVGTElHSFRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFN9KSB3aXRoXG4gKiBhIGNsZWFyIGVycm9yIG1lc3NhZ2UgaW5zdGVhZCBvZiBsZXR0aW5nIFdlYkRyaXZlcklPIHJldHJ5IHNpbGVudGx5IGZvciBtaW51dGVzLlxuICpcbiAqIEBwYXJhbSB1cmwgLSBUaGUgcGFyc2VkIEFwcGl1bSBVUkwuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQXBwaXVtUmVhY2hhYmxlKHVybDogVVJMKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc3RhdHVzVXJsID0gbmV3IFVSTCgnL3N0YXR1cycsIHVybCk7XG4gICAgY29uc3QgcmVxID0gaHR0cC5nZXQoc3RhdHVzVXJsLCB7IHRpbWVvdXQ6IEFQUElVTV9QUkVGTElHSFRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgfSwgKHJlcykgPT4ge1xuICAgICAgcmVzLnJlc3VtZSgpO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pO1xuICAgIHJlcS5vbigndGltZW91dCcsICgpID0+IHtcbiAgICAgIHJlcS5kZXN0cm95KCk7XG4gICAgICByZWplY3QoXG4gICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICBgQXBwaXVtIHNlcnZlciBhdCAke3VybC5vcmlnaW59IGRpZCBub3QgcmVzcG9uZCB3aXRoaW4gJHtTdHJpbmcoQVBQSVVNX1BSRUZMSUdIVF9USU1FT1VUX0lOX01JTExJU0VDT05EUyl9bXMuIElzIHRoZSBBcHBpdW0gc2VydmVyIHJ1bm5pbmc/YFxuICAgICAgICApXG4gICAgICApO1xuICAgIH0pO1xuICAgIHJlcS5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICByZWplY3QoXG4gICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IHJlYWNoIEFwcGl1bSBzZXJ2ZXIgYXQgJHt1cmwub3JpZ2lufTogJHtlcnIubWVzc2FnZX0uIElzIHRoZSBBcHBpdW0gc2VydmVyIHJ1bm5pbmc/YFxuICAgICAgICApXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIEFwcGl1bSB0cmFuc3BvcnQgYnkgZXN0YWJsaXNoaW5nIGEgV2ViRHJpdmVySU8gc2Vzc2lvbi5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuZHJvaWQgQXBwaXVtIHRyYW5zcG9ydCBvcHRpb25zLlxuICogQHJldHVybnMgQSBjb25maWd1cmVkIEFwcGl1bSB0cmFuc3BvcnQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUFwcGl1bVRyYW5zcG9ydChvcHRpb25zOiBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zKTogUHJvbWlzZTxBcHBpdW1UcmFuc3BvcnQ+IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChvcHRpb25zLmFwcGl1bVVybCk7XG5cbiAgY29uc3QgcG9ydCA9IE51bWJlcih1cmwucG9ydCk7XG4gIGlmIChpc05hTihwb3J0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwb3J0IGluIGFwcGl1bVVybDogJHt1cmwucG9ydH1gKTtcbiAgfVxuXG4gIGNvbnN0IGFwcElkID0gb3B0aW9ucy5hcHBJZCA/PyBBUFBfUEFDS0FHRTtcblxuICBjb25zb2xlLndhcm4oYFt0cmFuc3BvcnQtZmFjdG9yeV0gQ2hlY2tpbmcgQXBwaXVtIHNlcnZlciBhdCAke29wdGlvbnMuYXBwaXVtVXJsfS4uLmApO1xuICBsZXQgYXBwaXVtUHJvY2VzczogQ2hpbGRQcm9jZXNzIHwgdW5kZWZpbmVkO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgY2hlY2tBcHBpdW1SZWFjaGFibGUodXJsKTtcbiAgICBjb25zb2xlLndhcm4oJ1t0cmFuc3BvcnQtZmFjdG9yeV0gQXBwaXVtIHNlcnZlciBpcyByZWFjaGFibGUuJyk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgaWYgKG9wdGlvbnMuc2hvdWxkQXV0b1N0YXJ0QXBwaXVtID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgY29uc29sZS53YXJuKGBbdHJhbnNwb3J0LWZhY3RvcnldIEFwcGl1bSBub3QgcmVhY2hhYmxlLCBhdXRvLXN0YXJ0aW5nIG9uIHBvcnQgJHtTdHJpbmcocG9ydCl9Li4uYCk7XG4gICAgYXBwaXVtUHJvY2VzcyA9IHN0YXJ0QXBwaXVtU2VydmVyKHBvcnQpO1xuICAgIGF3YWl0IHdhaXRGb3JBcHBpdW1SZWFkeSh1cmwpO1xuICAgIGNvbnNvbGUud2FybignW3RyYW5zcG9ydC1mYWN0b3J5XSBBdXRvLXN0YXJ0ZWQgQXBwaXVtIHNlcnZlciBpcyByZWFkeS4nKTtcbiAgfVxuXG4gIGNvbnNvbGUud2FybihgW3RyYW5zcG9ydC1mYWN0b3J5XSBDb25uZWN0aW5nIHRvIEFwcGl1bSAoZGV2aWNlPSR7b3B0aW9ucy5kZXZpY2VJZH0sIGFwcD0ke2FwcElkfSkuLi5gKTtcbiAgY29uc3QgYnJvd3NlciA9IGF3YWl0IHJlbW90ZSh7XG4gICAgY2FwYWJpbGl0aWVzOiB7XG4gICAgICAnYXBwaXVtOmFwcEFjdGl2aXR5JzogQVBQX0FDVElWSVRZLFxuICAgICAgJ2FwcGl1bTphcHBQYWNrYWdlJzogYXBwSWQsXG4gICAgICAnYXBwaXVtOmF1dG9HcmFudFBlcm1pc3Npb25zJzogdHJ1ZSxcbiAgICAgICdhcHBpdW06YXV0b21hdGlvbk5hbWUnOiAnVWlBdXRvbWF0b3IyJyxcbiAgICAgICdhcHBpdW06bmV3Q29tbWFuZFRpbWVvdXQnOiBDT01NQU5EX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTLFxuICAgICAgJ2FwcGl1bTpub1Jlc2V0JzogdHJ1ZSxcbiAgICAgICdhcHBpdW06c2V0dGluZ3MnOiB7XG4gICAgICAgICdhcHBpdW06Y2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkJzogdHJ1ZVxuICAgICAgfSxcbiAgICAgICdhcHBpdW06c2tpcFNlcnZlckluc3RhbGxhdGlvbic6IHRydWUsXG4gICAgICAnYXBwaXVtOnVkaWQnOiBvcHRpb25zLmRldmljZUlkLFxuICAgICAgJ2FwcGl1bTp1aWF1dG9tYXRvcjJTZXJ2ZXJMYXVuY2hUaW1lb3V0JzogU0VSVkVSX0xBVU5DSF9USU1FT1VUX0lOX01JTExJU0VDT05EUyxcbiAgICAgICdwbGF0Zm9ybU5hbWUnOiAnQW5kcm9pZCdcbiAgICB9LFxuICAgIGNvbm5lY3Rpb25SZXRyeUNvdW50OiBBUFBJVU1fQ09OTkVDVElPTl9SRVRSWV9DT1VOVCxcbiAgICBjb25uZWN0aW9uUmV0cnlUaW1lb3V0OiBBUFBJVU1fQ09OTkVDVElPTl9SRVRSWV9USU1FT1VUX0lOX01JTExJU0VDT05EUyxcbiAgICBob3N0bmFtZTogdXJsLmhvc3RuYW1lLFxuICAgIHBhdGg6IHVybC5wYXRobmFtZSxcbiAgICBwb3J0XG4gIH0pO1xuXG4gIGNvbnNvbGUud2FybignW3RyYW5zcG9ydC1mYWN0b3J5XSBBcHBpdW0gc2Vzc2lvbiBlc3RhYmxpc2hlZC4nKTtcbiAgY29uc3QgdHJhbnNwb3J0ID0gbmV3IEFwcGl1bVRyYW5zcG9ydCh7XG4gICAgYXBwSWQsXG4gICAgYnJvd3NlcixcbiAgICBwbGF0Zm9ybTogJ2FuZHJvaWQnLFxuICAgIC4uLihvcHRpb25zLnZhdWx0QmFzZVBhdGggIT09IHVuZGVmaW5lZCAmJiB7IHZhdWx0QmFzZVBhdGg6IG9wdGlvbnMudmF1bHRCYXNlUGF0aCB9KVxuICB9KTtcblxuICBpZiAoYXBwaXVtUHJvY2Vzcykge1xuICAgIGNvbnN0IG9yaWdpbmFsRGlzcG9zZSA9IHRyYW5zcG9ydC5kaXNwb3NlLmJpbmQodHJhbnNwb3J0KTtcbiAgICB0cmFuc3BvcnQuZGlzcG9zZSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGF3YWl0IG9yaWdpbmFsRGlzcG9zZSgpO1xuICAgICAgYXBwaXVtUHJvY2Vzcy5raWxsKCk7XG4gICAgICBjb25zb2xlLndhcm4oJ1t0cmFuc3BvcnQtZmFjdG9yeV0gQXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgc3RvcHBlZC4nKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHRyYW5zcG9ydDtcbn1cblxuLyoqXG4gKiBTcGF3bnMgYW4gQXBwaXVtIHNlcnZlciBhcyBhIGRldGFjaGVkIGJhY2tncm91bmQgcHJvY2Vzcy5cbiAqXG4gKiBAcGFyYW0gcG9ydCAtIFRoZSBwb3J0IHRvIHN0YXJ0IEFwcGl1bSBvbi5cbiAqIEByZXR1cm5zIFRoZSBzcGF3bmVkIGNoaWxkIHByb2Nlc3MuXG4gKi9cbmZ1bmN0aW9uIHN0YXJ0QXBwaXVtU2VydmVyKHBvcnQ6IG51bWJlcik6IENoaWxkUHJvY2VzcyB7XG4gIGNvbnN0IGNoaWxkID0gc3Bhd24oJ25weCcsIFsnYXBwaXVtJywgJy0tcG9ydCcsIFN0cmluZyhwb3J0KV0sIHtcbiAgICBkZXRhY2hlZDogdHJ1ZSxcbiAgICBzaGVsbDogdHJ1ZSxcbiAgICBzdGRpbzogJ2lnbm9yZSdcbiAgfSk7XG5cbiAgY2hpbGQudW5yZWYoKTtcbiAgcmV0dXJuIGNoaWxkO1xufVxuXG4vKipcbiAqIFBvbGxzIHRoZSBBcHBpdW0gc2VydmVyIHVudGlsIGl0IHJlc3BvbmRzIHRvIGAvc3RhdHVzYC5cbiAqXG4gKiBAcGFyYW0gdXJsIC0gVGhlIEFwcGl1bSBzZXJ2ZXIgVVJMLlxuICovXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yQXBwaXVtUmVhZHkodXJsOiBVUkwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZGVhZGxpbmUgPSBEYXRlLm5vdygpICsgQVBQSVVNX1NUQVJUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xuXG4gIHdoaWxlIChEYXRlLm5vdygpIDwgZGVhZGxpbmUpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY2hlY2tBcHBpdW1SZWFjaGFibGUodXJsKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgQVBQSVVNX1NUQVJUX1BPTExfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgQXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgZGlkIG5vdCBiZWNvbWUgcmVhZHkgd2l0aGluICR7U3RyaW5nKEFQUElVTV9TVEFSVF9USU1FT1VUX0lOX01JTExJU0VDT05EUyl9bXNgXG4gICk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUEsZ0NBQXNCO0FBQ3RCLHVCQUFpQjtBQUNqQix5QkFBdUI7QUFRdkIsOEJBQWdDO0FBQ2hDLG1DQUFvQztBQUNwQyxtQ0FBb0M7QUFFcEMsTUFBTSxjQUFjO0FBQ3BCLE1BQU0sZUFBZSxHQUFHLFdBQVc7QUFDbkMsTUFBTSxnQ0FBZ0M7QUFDdEMsTUFBTSxrREFBa0Q7QUFDeEQsTUFBTSwyQ0FBMkM7QUFDakQsTUFBTSw2Q0FBNkM7QUFDbkQsTUFBTSx1Q0FBdUM7QUFDN0MsTUFBTSxtQkFBbUI7QUFDekIsTUFBTSxrQ0FBa0M7QUFDeEMsTUFBTSx3Q0FBd0M7QUFFOUMsSUFBSTtBQVFKLGVBQXNCLDJCQUEyQixTQUFnRTtBQUMvRyxNQUFJLENBQUMsV0FBVyxRQUFRLFNBQVMsZ0JBQWdCO0FBQy9DLFlBQVEsS0FBSyxvRkFBb0Y7QUFDakcsV0FBTyxJQUFJLGlEQUFvQjtBQUFBLEVBQ2pDO0FBRUEsTUFBSSxRQUFRLFNBQVMsZ0JBQWdCO0FBQ25DLFlBQVEsS0FBSywwREFBMEQsUUFBUSxRQUFRLFdBQVcsVUFBVSxPQUFPLFFBQVEsUUFBUSxnQkFBZ0IsQ0FBQyxHQUFHO0FBQ3ZKLFdBQU8sSUFBSSxpREFBb0I7QUFBQSxNQUM3QixHQUFJLFFBQVEsU0FBUyxVQUFhLEVBQUUsU0FBUyxRQUFRLEtBQUs7QUFBQSxNQUMxRCxHQUFJLFFBQVEsU0FBUyxVQUFhLEVBQUUsU0FBUyxRQUFRLEtBQUs7QUFBQSxNQUMxRCxHQUFJLFFBQVEsaUNBQWlDLFVBQWEsRUFBRSw4QkFBOEIsUUFBUSw2QkFBNkI7QUFBQSxJQUNqSSxDQUFDO0FBQUEsRUFDSDtBQUVB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
192
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RyYW5zcG9ydC1mYWN0b3J5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRmFjdG9yeSBmb3IgY3JlYXRpbmcgdHJhbnNwb3J0IGluc3RhbmNlcyBmcm9tIHtAbGluayBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnN9LlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIGZhY3RvcnkgY292ZXJlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcblxuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IGh0dHAgZnJvbSAnbm9kZTpodHRwJztcbmltcG9ydCB7IHJlbW90ZSB9IGZyb20gJ3dlYmRyaXZlcmlvJztcblxuaW1wb3J0IHR5cGUge1xuICBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zLFxuICBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5janMnO1xuaW1wb3J0IHR5cGUgeyBPYnNpZGlhblRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LmNqcyc7XG5cbmltcG9ydCB7IGxvZyB9IGZyb20gJy4vbG9nLmNqcyc7XG5pbXBvcnQgeyBBcHBpdW1UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1hcHBpdW0uY2pzJztcbmltcG9ydCB7IERlc2t0b3BDZHBUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1kZXNrdG9wLWNkcC5janMnO1xuaW1wb3J0IHsgRGVza3RvcENsaVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2xpLmNqcyc7XG5cbmNvbnN0IEFQUF9QQUNLQUdFID0gJ21kLm9ic2lkaWFuJztcbmNvbnN0IEFQUF9BQ1RJVklUWSA9IGAke0FQUF9QQUNLQUdFfS5NYWluQWN0aXZpdHlgO1xuY29uc3QgQVBQSVVNX0NPTk5FQ1RJT05fUkVUUllfQ09VTlQgPSAxO1xuY29uc3QgQVBQSVVNX0NPTk5FQ1RJT05fUkVUUllfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxMDAwMDtcbmNvbnN0IEFQUElVTV9QUkVGTElHSFRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSA1MDAwO1xuY29uc3QgQVBQSVVNX1NUQVJUX1BPTExfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTID0gNTAwO1xuY29uc3QgQVBQSVVNX1NUQVJUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTID0gNjAwMDA7XG5jb25zdCBDRFBfREVGQVVMVF9QT1JUID0gODMxNTtcbmNvbnN0IENPTU1BTkRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAzMDA7XG5jb25zdCBTRVJWRVJfTEFVTkNIX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTID0gMzAwMDA7XG5cbmxldCBjYWNoZWRUcmFuc3BvcnQ6IE9ic2lkaWFuVHJhbnNwb3J0IHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgdHJhbnNwb3J0IGluc3RhbmNlIGZyb20gdGhlIGdpdmVuIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUcmFuc3BvcnQgY29uZmlndXJhdGlvbi4gRGVmYXVsdHMgdG8gQ0xJIHRyYW5zcG9ydC5cbiAqIEByZXR1cm5zIEEgbmV3IHRyYW5zcG9ydCBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRyYW5zcG9ydEZyb21PcHRpb25zKG9wdGlvbnM/OiBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnMpOiBQcm9taXNlPE9ic2lkaWFuVHJhbnNwb3J0PiB7XG4gIGlmICghb3B0aW9ucyB8fCBvcHRpb25zLnR5cGUgPT09ICdvYnNpZGlhbi1jbGknKSB7XG4gICAgbG9nKCdbdHJhbnNwb3J0LWZhY3RvcnldIENyZWF0aW5nIERlc2t0b3BDbGlUcmFuc3BvcnQgKG5vIG9wdGlvbnMgb3IgdHlwZT1vYnNpZGlhbi1jbGkpJyk7XG4gICAgcmV0dXJuIG5ldyBEZXNrdG9wQ2xpVHJhbnNwb3J0KCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy50eXBlID09PSAnb2JzaWRpYW4tY2RwJykge1xuICAgIGxvZyhgW3RyYW5zcG9ydC1mYWN0b3J5XSBDcmVhdGluZyBEZXNrdG9wQ2RwVHJhbnNwb3J0IChob3N0PSR7b3B0aW9ucy5ob3N0ID8/ICdsb2NhbGhvc3QnfSwgcG9ydD0ke1N0cmluZyhvcHRpb25zLnBvcnQgPz8gQ0RQX0RFRkFVTFRfUE9SVCl9KWApO1xuICAgIHJldHVybiBuZXcgRGVza3RvcENkcFRyYW5zcG9ydCh7XG4gICAgICAuLi4ob3B0aW9ucy5ob3N0ICE9PSB1bmRlZmluZWQgJiYgeyBjZHBIb3N0OiBvcHRpb25zLmhvc3QgfSksXG4gICAgICAuLi4ob3B0aW9ucy5wb3J0ICE9PSB1bmRlZmluZWQgJiYgeyBjZHBQb3J0OiBvcHRpb25zLnBvcnQgfSksXG4gICAgICAuLi4ob3B0aW9ucy5jb21tYW5kVGltZW91dEluTWlsbGlzZWNvbmRzICE9PSB1bmRlZmluZWQgJiYgeyBjb21tYW5kVGltZW91dEluTWlsbGlzZWNvbmRzOiBvcHRpb25zLmNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHMgfSlcbiAgICB9KTtcbiAgfVxuXG4gIGxvZyhgW3RyYW5zcG9ydC1mYWN0b3J5XSBDcmVhdGluZyBBcHBpdW1UcmFuc3BvcnQgKHVybD0ke29wdGlvbnMuYXBwaXVtVXJsfSwgZGV2aWNlPSR7b3B0aW9ucy5kZXZpY2VJZH0pYCk7XG4gIHJldHVybiBjcmVhdGVBcHBpdW1UcmFuc3BvcnQob3B0aW9ucyk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGNhY2hlZCB0cmFuc3BvcnQgaW5zdGFuY2UsIGNyZWF0aW5nIG9uZSBmcm9tIHRoZSBnaXZlbiBvcHRpb25zXG4gKiBpZiBub3QgYWxyZWFkeSBjYWNoZWQuXG4gKlxuICogVGhlIHRyYW5zcG9ydCBpcyBjYWNoZWQgcGVyIHdvcmtlciBwcm9jZXNzIHNvIFdlYlNvY2tldC9BcHBpdW0gc2Vzc2lvbnNcbiAqIGFyZSByZXVzZWQgYWNyb3NzIGNhbGxzIHdpdGhpbiB0aGUgc2FtZSB0ZXN0IHdvcmtlci5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRyYW5zcG9ydCBjb25maWd1cmF0aW9uLiBEZWZhdWx0cyB0byBDTEkgdHJhbnNwb3J0LlxuICogQHJldHVybnMgVGhlIGNhY2hlZCBvciBuZXdseSBjcmVhdGVkIHRyYW5zcG9ydC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlVHJhbnNwb3J0KG9wdGlvbnM/OiBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnMpOiBQcm9taXNlPE9ic2lkaWFuVHJhbnNwb3J0PiB7XG4gIGlmIChjYWNoZWRUcmFuc3BvcnQpIHtcbiAgICByZXR1cm4gY2FjaGVkVHJhbnNwb3J0O1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3JlYXRlVHJhbnNwb3J0RnJvbU9wdGlvbnMob3B0aW9ucyk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF0b21pYy11cGRhdGVzIC0tIFNpbmdsZS10aHJlYWRlZCB3b3JrZXI7IG5vIGNvbmN1cnJlbnQgd3JpdGVzLlxuICBjYWNoZWRUcmFuc3BvcnQgPSByZXN1bHQ7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogUGVyZm9ybXMgYSBxdWljayBIVFRQIGNoZWNrIGFnYWluc3QgdGhlIEFwcGl1bSBzZXJ2ZXIncyBzdGF0dXMgZW5kcG9pbnQuXG4gKlxuICogRmFpbHMgZmFzdCAod2l0aGluIHtAbGluayBBUFBJVU1fUFJFRkxJR0hUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTfSkgd2l0aFxuICogYSBjbGVhciBlcnJvciBtZXNzYWdlIGluc3RlYWQgb2YgbGV0dGluZyBXZWJEcml2ZXJJTyByZXRyeSBzaWxlbnRseSBmb3IgbWludXRlcy5cbiAqXG4gKiBAcGFyYW0gdXJsIC0gVGhlIHBhcnNlZCBBcHBpdW0gVVJMLlxuICovXG5mdW5jdGlvbiBjaGVja0FwcGl1bVJlYWNoYWJsZSh1cmw6IFVSTCk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHN0YXR1c1VybCA9IG5ldyBVUkwoJy9zdGF0dXMnLCB1cmwpO1xuICAgIGNvbnN0IHJlcSA9IGh0dHAuZ2V0KHN0YXR1c1VybCwgeyB0aW1lb3V0OiBBUFBJVU1fUFJFRkxJR0hUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTIH0sIChyZXMpID0+IHtcbiAgICAgIHJlcy5yZXN1bWUoKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgICByZXEub24oJ3RpbWVvdXQnLCAoKSA9PiB7XG4gICAgICByZXEuZGVzdHJveSgpO1xuICAgICAgcmVqZWN0KFxuICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFwcGl1bSBzZXJ2ZXIgYXQgJHt1cmwub3JpZ2lufSBkaWQgbm90IHJlc3BvbmQgd2l0aGluICR7U3RyaW5nKEFQUElVTV9QUkVGTElHSFRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpfW1zLiBJcyB0aGUgQXBwaXVtIHNlcnZlciBydW5uaW5nP2BcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXEub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgcmVqZWN0KFxuICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgYENhbm5vdCByZWFjaCBBcHBpdW0gc2VydmVyIGF0ICR7dXJsLm9yaWdpbn06ICR7ZXJyLm1lc3NhZ2V9LiBJcyB0aGUgQXBwaXVtIHNlcnZlciBydW5uaW5nP2BcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBBcHBpdW0gdHJhbnNwb3J0IGJ5IGVzdGFibGlzaGluZyBhIFdlYkRyaXZlcklPIHNlc3Npb24uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBBbmRyb2lkIEFwcGl1bSB0cmFuc3BvcnQgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgY29uZmlndXJlZCBBcHBpdW0gdHJhbnNwb3J0LlxuICovXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVBcHBpdW1UcmFuc3BvcnQob3B0aW9uczogT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyk6IFByb21pc2U8QXBwaXVtVHJhbnNwb3J0PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwob3B0aW9ucy5hcHBpdW1VcmwpO1xuXG4gIGNvbnN0IHBvcnQgPSBOdW1iZXIodXJsLnBvcnQpO1xuICBpZiAoaXNOYU4ocG9ydCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcG9ydCBpbiBhcHBpdW1Vcmw6ICR7dXJsLnBvcnR9YCk7XG4gIH1cblxuICBjb25zdCBhcHBJZCA9IG9wdGlvbnMuYXBwSWQgPz8gQVBQX1BBQ0tBR0U7XG5cbiAgbG9nKGBbdHJhbnNwb3J0LWZhY3RvcnldIENoZWNraW5nIEFwcGl1bSBzZXJ2ZXIgYXQgJHtvcHRpb25zLmFwcGl1bVVybH0uLi5gKTtcbiAgbGV0IGFwcGl1bVByb2Nlc3M6IENoaWxkUHJvY2VzcyB8IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIGF3YWl0IGNoZWNrQXBwaXVtUmVhY2hhYmxlKHVybCk7XG4gICAgbG9nKCdbdHJhbnNwb3J0LWZhY3RvcnldIEFwcGl1bSBzZXJ2ZXIgaXMgcmVhY2hhYmxlLicpO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGlmIChvcHRpb25zLnNob3VsZEF1dG9TdGFydEFwcGl1bSA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGxvZyhgW3RyYW5zcG9ydC1mYWN0b3J5XSBBcHBpdW0gbm90IHJlYWNoYWJsZSwgYXV0by1zdGFydGluZyBvbiBwb3J0ICR7U3RyaW5nKHBvcnQpfS4uLmApO1xuICAgIGFwcGl1bVByb2Nlc3MgPSBzdGFydEFwcGl1bVNlcnZlcihwb3J0KTtcbiAgICBhd2FpdCB3YWl0Rm9yQXBwaXVtUmVhZHkodXJsKTtcbiAgICBsb2coJ1t0cmFuc3BvcnQtZmFjdG9yeV0gQXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgaXMgcmVhZHkuJyk7XG4gIH1cblxuICBsb2coYFt0cmFuc3BvcnQtZmFjdG9yeV0gQ29ubmVjdGluZyB0byBBcHBpdW0gKGRldmljZT0ke29wdGlvbnMuZGV2aWNlSWR9LCBhcHA9JHthcHBJZH0pLi4uYCk7XG4gIGNvbnN0IGJyb3dzZXIgPSBhd2FpdCByZW1vdGUoe1xuICAgIGNhcGFiaWxpdGllczoge1xuICAgICAgJ2FwcGl1bTphcHBBY3Rpdml0eSc6IEFQUF9BQ1RJVklUWSxcbiAgICAgICdhcHBpdW06YXBwUGFja2FnZSc6IGFwcElkLFxuICAgICAgJ2FwcGl1bTphdXRvR3JhbnRQZXJtaXNzaW9ucyc6IHRydWUsXG4gICAgICAnYXBwaXVtOmF1dG9tYXRpb25OYW1lJzogJ1VpQXV0b21hdG9yMicsXG4gICAgICAnYXBwaXVtOm5ld0NvbW1hbmRUaW1lb3V0JzogQ09NTUFORF9USU1FT1VUX0lOX01JTExJU0VDT05EUyxcbiAgICAgICdhcHBpdW06bm9SZXNldCc6IHRydWUsXG4gICAgICAnYXBwaXVtOnNldHRpbmdzJzoge1xuICAgICAgICAnYXBwaXVtOmNocm9tZWRyaXZlckF1dG9kb3dubG9hZCc6IHRydWVcbiAgICAgIH0sXG4gICAgICAnYXBwaXVtOnNraXBTZXJ2ZXJJbnN0YWxsYXRpb24nOiB0cnVlLFxuICAgICAgJ2FwcGl1bTp1ZGlkJzogb3B0aW9ucy5kZXZpY2VJZCxcbiAgICAgICdhcHBpdW06dWlhdXRvbWF0b3IyU2VydmVyTGF1bmNoVGltZW91dCc6IFNFUlZFUl9MQVVOQ0hfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgICAncGxhdGZvcm1OYW1lJzogJ0FuZHJvaWQnXG4gICAgfSxcbiAgICBjb25uZWN0aW9uUmV0cnlDb3VudDogQVBQSVVNX0NPTk5FQ1RJT05fUkVUUllfQ09VTlQsXG4gICAgY29ubmVjdGlvblJldHJ5VGltZW91dDogQVBQSVVNX0NPTk5FQ1RJT05fUkVUUllfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgaG9zdG5hbWU6IHVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiB1cmwucGF0aG5hbWUsXG4gICAgcG9ydFxuICB9KTtcblxuICBsb2coJ1t0cmFuc3BvcnQtZmFjdG9yeV0gQXBwaXVtIHNlc3Npb24gZXN0YWJsaXNoZWQuJyk7XG4gIGNvbnN0IHRyYW5zcG9ydCA9IG5ldyBBcHBpdW1UcmFuc3BvcnQoe1xuICAgIGFwcElkLFxuICAgIGJyb3dzZXIsXG4gICAgcGxhdGZvcm06ICdhbmRyb2lkJyxcbiAgICAuLi4ob3B0aW9ucy52YXVsdEJhc2VQYXRoICE9PSB1bmRlZmluZWQgJiYgeyB2YXVsdEJhc2VQYXRoOiBvcHRpb25zLnZhdWx0QmFzZVBhdGggfSlcbiAgfSk7XG5cbiAgaWYgKGFwcGl1bVByb2Nlc3MpIHtcbiAgICBjb25zdCBvcmlnaW5hbERpc3Bvc2UgPSB0cmFuc3BvcnQuZGlzcG9zZS5iaW5kKHRyYW5zcG9ydCk7XG4gICAgdHJhbnNwb3J0LmRpc3Bvc2UgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBhd2FpdCBvcmlnaW5hbERpc3Bvc2UoKTtcbiAgICAgIGFwcGl1bVByb2Nlc3Mua2lsbCgpO1xuICAgICAgbG9nKCdbdHJhbnNwb3J0LWZhY3RvcnldIEF1dG8tc3RhcnRlZCBBcHBpdW0gc2VydmVyIHN0b3BwZWQuJyk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB0cmFuc3BvcnQ7XG59XG5cbi8qKlxuICogU3Bhd25zIGFuIEFwcGl1bSBzZXJ2ZXIgYXMgYSBkZXRhY2hlZCBiYWNrZ3JvdW5kIHByb2Nlc3MuXG4gKlxuICogQHBhcmFtIHBvcnQgLSBUaGUgcG9ydCB0byBzdGFydCBBcHBpdW0gb24uXG4gKiBAcmV0dXJucyBUaGUgc3Bhd25lZCBjaGlsZCBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBzdGFydEFwcGl1bVNlcnZlcihwb3J0OiBudW1iZXIpOiBDaGlsZFByb2Nlc3Mge1xuICBjb25zdCBjaGlsZCA9IHNwYXduKGBucHggYXBwaXVtIC0tbG9nLXRpbWVzdGFtcCAtLXBvcnQgJHtTdHJpbmcocG9ydCl9YCwge1xuICAgIGRldGFjaGVkOiB0cnVlLFxuICAgIHNoZWxsOiB0cnVlLFxuICAgIHN0ZGlvOiAnaW5oZXJpdCdcbiAgfSk7XG5cbiAgY2hpbGQudW5yZWYoKTtcbiAgcmV0dXJuIGNoaWxkO1xufVxuXG4vKipcbiAqIFBvbGxzIHRoZSBBcHBpdW0gc2VydmVyIHVudGlsIGl0IHJlc3BvbmRzIHRvIGAvc3RhdHVzYC5cbiAqXG4gKiBAcGFyYW0gdXJsIC0gVGhlIEFwcGl1bSBzZXJ2ZXIgVVJMLlxuICovXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yQXBwaXVtUmVhZHkodXJsOiBVUkwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZGVhZGxpbmUgPSBEYXRlLm5vdygpICsgQVBQSVVNX1NUQVJUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xuXG4gIHdoaWxlIChEYXRlLm5vdygpIDwgZGVhZGxpbmUpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY2hlY2tBcHBpdW1SZWFjaGFibGUodXJsKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgQVBQSVVNX1NUQVJUX1BPTExfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgQXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgZGlkIG5vdCBiZWNvbWUgcmVhZHkgd2l0aGluICR7U3RyaW5nKEFQUElVTV9TVEFSVF9USU1FT1VUX0lOX01JTExJU0VDT05EUyl9bXNgXG4gICk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUEsZ0NBQXNCO0FBQ3RCLHVCQUFpQjtBQUNqQix5QkFBdUI7QUFRdkIsaUJBQW9CO0FBQ3BCLDhCQUFnQztBQUNoQyxtQ0FBb0M7QUFDcEMsbUNBQW9DO0FBRXBDLE1BQU0sY0FBYztBQUNwQixNQUFNLGVBQWUsR0FBRyxXQUFXO0FBQ25DLE1BQU0sZ0NBQWdDO0FBQ3RDLE1BQU0sa0RBQWtEO0FBQ3hELE1BQU0sMkNBQTJDO0FBQ2pELE1BQU0sNkNBQTZDO0FBQ25ELE1BQU0sdUNBQXVDO0FBQzdDLE1BQU0sbUJBQW1CO0FBQ3pCLE1BQU0sa0NBQWtDO0FBQ3hDLE1BQU0sd0NBQXdDO0FBRTlDLElBQUk7QUFRSixlQUFzQiwyQkFBMkIsU0FBZ0U7QUFDL0csTUFBSSxDQUFDLFdBQVcsUUFBUSxTQUFTLGdCQUFnQjtBQUMvQyx3QkFBSSxvRkFBb0Y7QUFDeEYsV0FBTyxJQUFJLGlEQUFvQjtBQUFBLEVBQ2pDO0FBRUEsTUFBSSxRQUFRLFNBQVMsZ0JBQWdCO0FBQ25DLHdCQUFJLDBEQUEwRCxRQUFRLFFBQVEsV0FBVyxVQUFVLE9BQU8sUUFBUSxRQUFRLGdCQUFnQixDQUFDLEdBQUc7QUFDOUksV0FBTyxJQUFJLGlEQUFvQjtBQUFBLE1BQzdCLEdBQUksUUFBUSxTQUFTLFVBQWEsRUFBRSxTQUFTLFFBQVEsS0FBSztBQUFBLE1BQzFELEdBQUksUUFBUSxTQUFTLFVBQWEsRUFBRSxTQUFTLFFBQVEsS0FBSztBQUFBLE1BQzFELEdBQUksUUFBUSxpQ0FBaUMsVUFBYSxFQUFFLDhCQUE4QixRQUFRLDZCQUE2QjtBQUFBLElBQ2pJLENBQUM7QUFBQSxFQUNIO0FBRUEsc0JBQUkscURBQXFELFFBQVEsU0FBUyxZQUFZLFFBQVEsUUFBUSxH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
@@ -22,14 +22,14 @@ __export(vault_registry_exports, {
22
22
  unregisterVault: () => unregisterVault
23
23
  });
24
24
  module.exports = __toCommonJS(vault_registry_exports);
25
- var import_vitest = require("vitest");
25
+ var import_context_provider = require("./context-provider.cjs");
26
26
  var import_transport_factory = require("./transport-factory.cjs");
27
27
  async function registerVault(vaultPath, transportOverride) {
28
- const transport = transportOverride ?? await (0, import_transport_factory.getOrCreateTransport)((0, import_vitest.inject)("obsidianTransport"));
28
+ const transport = transportOverride ?? await (0, import_transport_factory.getOrCreateTransport)((0, import_context_provider.getTransportOptions)());
29
29
  await transport.registerVault(vaultPath);
30
30
  }
31
31
  async function unregisterVault(vaultPath, transportOverride) {
32
- const transport = transportOverride ?? await (0, import_transport_factory.getOrCreateTransport)((0, import_vitest.inject)("obsidianTransport"));
32
+ const transport = transportOverride ?? await (0, import_transport_factory.getOrCreateTransport)((0, import_context_provider.getTransportOptions)());
33
33
  await transport.unregisterVault(vaultPath);
34
34
  }
35
35
  // Annotate the CommonJS export names for ESM import in node:
@@ -37,4 +37,4 @@ async function unregisterVault(vaultPath, transportOverride) {
37
37
  registerVault,
38
38
  unregisterVault
39
39
  });
40
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZhdWx0LXJlZ2lzdHJ5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBjb2RlIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG4vKipcbiAqIEBmaWxlXG4gKlxuICogTWFuYWdlcyB2YXVsdCByZWdpc3RyYXRpb24gaW4gdGhlIHJ1bm5pbmcgT2JzaWRpYW4gaW5zdGFuY2UuXG4gKiBEZWxlZ2F0ZXMgdG8gdGhlIHRyYW5zcG9ydCByZXNvbHZlZCBmcm9tIHZpdGVzdC1wcm92aWRlZCBvcHRpb25zLlxuICovXG5cbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ3ZpdGVzdCc7XG5cbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC5janMnO1xuXG5pbXBvcnQgeyBnZXRPckNyZWF0ZVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWZhY3RvcnkuY2pzJztcblxuLyoqXG4gKiBSZWdpc3RlcnMgYSB2YXVsdCBwYXRoIGluIHRoZSBydW5uaW5nIE9ic2lkaWFuIGluc3RhbmNlLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgYWN0aXZlIHRyYW5zcG9ydCdzIHtAbGluayBPYnNpZGlhblRyYW5zcG9ydC5yZWdpc3RlclZhdWx0fS5cbiAqXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlci5cbiAqIEBwYXJhbSB0cmFuc3BvcnRPdmVycmlkZSAtIEFuIGV4cGxpY2l0IHRyYW5zcG9ydCB0byB1c2UuIFdoZW4gb21pdHRlZCxcbiAqICAgZmFsbHMgYmFjayB0byBgaW5qZWN0KCdvYnNpZGlhblRyYW5zcG9ydCcpYCAocmVxdWlyZXMgdml0ZXN0IHdvcmtlciBjb250ZXh0KS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyVmF1bHQodmF1bHRQYXRoOiBzdHJpbmcsIHRyYW5zcG9ydE92ZXJyaWRlPzogT2JzaWRpYW5UcmFuc3BvcnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgdHJhbnNwb3J0ID0gdHJhbnNwb3J0T3ZlcnJpZGUgPz8gYXdhaXQgZ2V0T3JDcmVhdGVUcmFuc3BvcnQoaW5qZWN0KCdvYnNpZGlhblRyYW5zcG9ydCcpKTtcbiAgYXdhaXQgdHJhbnNwb3J0LnJlZ2lzdGVyVmF1bHQodmF1bHRQYXRoKTtcbn1cblxuLyoqXG4gKiBVbnJlZ2lzdGVycyBhIHZhdWx0IHBhdGggZnJvbSB0aGUgcnVubmluZyBPYnNpZGlhbiBpbnN0YW5jZS5cbiAqXG4gKiBEZWxlZ2F0ZXMgdG8gdGhlIGFjdGl2ZSB0cmFuc3BvcnQncyB7QGxpbmsgT2JzaWRpYW5UcmFuc3BvcnQudW5yZWdpc3RlclZhdWx0fS5cbiAqXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlci5cbiAqIEBwYXJhbSB0cmFuc3BvcnRPdmVycmlkZSAtIEFuIGV4cGxpY2l0IHRyYW5zcG9ydCB0byB1c2UuIFdoZW4gb21pdHRlZCxcbiAqICAgZmFsbHMgYmFjayB0byBgaW5qZWN0KCdvYnNpZGlhblRyYW5zcG9ydCcpYCAocmVxdWlyZXMgdml0ZXN0IHdvcmtlciBjb250ZXh0KS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVucmVnaXN0ZXJWYXVsdCh2YXVsdFBhdGg6IHN0cmluZywgdHJhbnNwb3J0T3ZlcnJpZGU/OiBPYnNpZGlhblRyYW5zcG9ydCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB0cmFuc3BvcnQgPSB0cmFuc3BvcnRPdmVycmlkZSA/PyBhd2FpdCBnZXRPckNyZWF0ZVRyYW5zcG9ydChpbmplY3QoJ29ic2lkaWFuVHJhbnNwb3J0JykpO1xuICBhd2FpdCB0cmFuc3BvcnQudW5yZWdpc3RlclZhdWx0KHZhdWx0UGF0aCk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTQSxvQkFBdUI7QUFJdkIsK0JBQXFDO0FBV3JDLGVBQXNCLGNBQWMsV0FBbUIsbUJBQXNEO0FBQzNHLFFBQU0sWUFBWSxxQkFBcUIsVUFBTSxtREFBcUIsc0JBQU8sbUJBQW1CLENBQUM7QUFDN0YsUUFBTSxVQUFVLGNBQWMsU0FBUztBQUN6QztBQVdBLGVBQXNCLGdCQUFnQixXQUFtQixtQkFBc0Q7QUFDN0csUUFBTSxZQUFZLHFCQUFxQixVQUFNLG1EQUFxQixzQkFBTyxtQkFBbUIsQ0FBQztBQUM3RixRQUFNLFVBQVUsZ0JBQWdCLFNBQVM7QUFDM0M7IiwKICAibmFtZXMiOiBbXQp9Cg==
40
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZhdWx0LXJlZ2lzdHJ5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBjb2RlIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG4vKipcbiAqIEBmaWxlXG4gKlxuICogTWFuYWdlcyB2YXVsdCByZWdpc3RyYXRpb24gaW4gdGhlIHJ1bm5pbmcgT2JzaWRpYW4gaW5zdGFuY2UuXG4gKiBEZWxlZ2F0ZXMgdG8gdGhlIHRyYW5zcG9ydCByZXNvbHZlZCBmcm9tIHRoZSBjb250ZXh0IHByb3ZpZGVyLlxuICovXG5cbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC5janMnO1xuXG5pbXBvcnQgeyBnZXRUcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLmNqcyc7XG5pbXBvcnQgeyBnZXRPckNyZWF0ZVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWZhY3RvcnkuY2pzJztcblxuLyoqXG4gKiBSZWdpc3RlcnMgYSB2YXVsdCBwYXRoIGluIHRoZSBydW5uaW5nIE9ic2lkaWFuIGluc3RhbmNlLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgYWN0aXZlIHRyYW5zcG9ydCdzIHtAbGluayBPYnNpZGlhblRyYW5zcG9ydC5yZWdpc3RlclZhdWx0fS5cbiAqXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlci5cbiAqIEBwYXJhbSB0cmFuc3BvcnRPdmVycmlkZSAtIEFuIGV4cGxpY2l0IHRyYW5zcG9ydCB0byB1c2UuIFdoZW4gb21pdHRlZCxcbiAqICAgZmFsbHMgYmFjayB0byB0aGUgdHJhbnNwb3J0IGNvbmZpZ3VyZWQgdmlhIHRoZSBjb250ZXh0IHByb3ZpZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJWYXVsdCh2YXVsdFBhdGg6IHN0cmluZywgdHJhbnNwb3J0T3ZlcnJpZGU/OiBPYnNpZGlhblRyYW5zcG9ydCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB0cmFuc3BvcnQgPSB0cmFuc3BvcnRPdmVycmlkZSA/PyBhd2FpdCBnZXRPckNyZWF0ZVRyYW5zcG9ydChnZXRUcmFuc3BvcnRPcHRpb25zKCkpO1xuICBhd2FpdCB0cmFuc3BvcnQucmVnaXN0ZXJWYXVsdCh2YXVsdFBhdGgpO1xufVxuXG4vKipcbiAqIFVucmVnaXN0ZXJzIGEgdmF1bHQgcGF0aCBmcm9tIHRoZSBydW5uaW5nIE9ic2lkaWFuIGluc3RhbmNlLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgYWN0aXZlIHRyYW5zcG9ydCdzIHtAbGluayBPYnNpZGlhblRyYW5zcG9ydC51bnJlZ2lzdGVyVmF1bHR9LlxuICpcbiAqIEBwYXJhbSB2YXVsdFBhdGggLSBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdmF1bHQgZm9sZGVyLlxuICogQHBhcmFtIHRyYW5zcG9ydE92ZXJyaWRlIC0gQW4gZXhwbGljaXQgdHJhbnNwb3J0IHRvIHVzZS4gV2hlbiBvbWl0dGVkLFxuICogICBmYWxscyBiYWNrIHRvIHRoZSB0cmFuc3BvcnQgY29uZmlndXJlZCB2aWEgdGhlIGNvbnRleHQgcHJvdmlkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1bnJlZ2lzdGVyVmF1bHQodmF1bHRQYXRoOiBzdHJpbmcsIHRyYW5zcG9ydE92ZXJyaWRlPzogT2JzaWRpYW5UcmFuc3BvcnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgdHJhbnNwb3J0ID0gdHJhbnNwb3J0T3ZlcnJpZGUgPz8gYXdhaXQgZ2V0T3JDcmVhdGVUcmFuc3BvcnQoZ2V0VHJhbnNwb3J0T3B0aW9ucygpKTtcbiAgYXdhaXQgdHJhbnNwb3J0LnVucmVnaXN0ZXJWYXVsdCh2YXVsdFBhdGgpO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0EsOEJBQW9DO0FBQ3BDLCtCQUFxQztBQVdyQyxlQUFzQixjQUFjLFdBQW1CLG1CQUFzRDtBQUMzRyxRQUFNLFlBQVkscUJBQXFCLFVBQU0sbURBQXFCLDZDQUFvQixDQUFDO0FBQ3ZGLFFBQU0sVUFBVSxjQUFjLFNBQVM7QUFDekM7QUFXQSxlQUFzQixnQkFBZ0IsV0FBbUIsbUJBQXNEO0FBQzdHLFFBQU0sWUFBWSxxQkFBcUIsVUFBTSxtREFBcUIsNkNBQW9CLENBQUM7QUFDdkYsUUFBTSxVQUFVLGdCQUFnQixTQUFTO0FBQzNDOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -1,3 +1,9 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * Manages vault registration in the running Obsidian instance.
5
+ * Delegates to the transport resolved from the context provider.
6
+ */
1
7
  import type { ObsidianTransport } from './transport.cjs';
2
8
  /**
3
9
  * Registers a vault path in the running Obsidian instance.
@@ -6,7 +12,7 @@ import type { ObsidianTransport } from './transport.cjs';
6
12
  *
7
13
  * @param vaultPath - The absolute path to the vault folder.
8
14
  * @param transportOverride - An explicit transport to use. When omitted,
9
- * falls back to `inject('obsidianTransport')` (requires vitest worker context).
15
+ * falls back to the transport configured via the context provider.
10
16
  */
11
17
  export declare function registerVault(vaultPath: string, transportOverride?: ObsidianTransport): Promise<void>;
12
18
  /**
@@ -16,6 +22,6 @@ export declare function registerVault(vaultPath: string, transportOverride?: Obs
16
22
  *
17
23
  * @param vaultPath - The absolute path to the vault folder.
18
24
  * @param transportOverride - An explicit transport to use. When omitted,
19
- * falls back to `inject('obsidianTransport')` (requires vitest worker context).
25
+ * falls back to the transport configured via the context provider.
20
26
  */
21
27
  export declare function unregisterVault(vaultPath: string, transportOverride?: ObsidianTransport): Promise<void>;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var global_setup_exports = {};
20
+ __export(global_setup_exports, {
21
+ getTempVault: () => getTempVault,
22
+ setup: () => setup,
23
+ teardown: () => teardown
24
+ });
25
+ module.exports = __toCommonJS(global_setup_exports);
26
+ var import_vitest = require("vitest");
27
+ var import_context_provider = require("../context-provider.cjs");
28
+ var import_global_setup_core = require("../global-setup-core.cjs");
29
+ var import_temp_vault = require("../temp-vault.cjs");
30
+ (0, import_context_provider.setTransportOptionsResolver)(() => (0, import_vitest.inject)("obsidianTransport"));
31
+ let setupResult;
32
+ function getTempVault() {
33
+ const tempVaultPath = (0, import_vitest.inject)("tempVaultPath");
34
+ return new import_temp_vault.TempVault(tempVaultPath);
35
+ }
36
+ async function setup(project) {
37
+ const environmentOptions = project.config.environmentOptions;
38
+ const transportOptions = environmentOptions?.["obsidianTransport"];
39
+ setupResult = await (0, import_global_setup_core.coreSetup)({ transportOptions });
40
+ project.provide("obsidianTransport", setupResult.transportOptions);
41
+ project.provide("tempVaultPath", setupResult.tempVault.path);
42
+ }
43
+ async function teardown() {
44
+ await (0, import_global_setup_core.coreTeardown)(setupResult);
45
+ }
46
+ // Annotate the CommonJS export names for ESM import in node:
47
+ 0 && (module.exports = {
48
+ getTempVault,
49
+ setup,
50
+ teardown
51
+ });
52
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBhZGFwdGVyLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgZnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgYW5kIGJyaWRnZXMgY29udGV4dFxuICogdG8gdGVzdCB3b3JrZXJzIHZpYSBWaXRlc3QncyBgcHJvamVjdC5wcm92aWRlYCAvIGBpbmplY3RgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRlc3RQcm9qZWN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgdHlwZSB7IE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyB9IGZyb20gJy4uL3RyYW5zcG9ydC1vcHRpb25zLmNqcyc7XG5cbmltcG9ydCB7IHNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlciB9IGZyb20gJy4uL2NvbnRleHQtcHJvdmlkZXIuY2pzJztcbmltcG9ydCB7XG4gIGNvcmVTZXR1cCxcbiAgY29yZVRlYXJkb3duXG59IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgeyBUZW1wVmF1bHQgfSBmcm9tICcuLi90ZW1wLXZhdWx0LmNqcyc7XG5cbnNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcigoKSA9PiBpbmplY3QoJ29ic2lkaWFuVHJhbnNwb3J0JykpO1xuXG5sZXQgc2V0dXBSZXN1bHQ6IENvcmVTZXR1cFJlc3VsdCB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB0ZW1wb3JhcnkgdmF1bHQgcHJvdmlkZWQgYnkgdGhlIGdsb2JhbCBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgdGVtcG9yYXJ5IHZhdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcFZhdWx0KCk6IFRlbXBWYXVsdCB7XG4gIGNvbnN0IHRlbXBWYXVsdFBhdGggPSBpbmplY3QoJ3RlbXBWYXVsdFBhdGgnKTtcbiAgcmV0dXJuIG5ldyBUZW1wVmF1bHQodGVtcFZhdWx0UGF0aCk7XG59XG5cbi8qKlxuICogVml0ZXN0IGdsb2JhbCBzZXR1cCBmdW5jdGlvbi5cbiAqXG4gKiBDb3BpZXMgdGhlIGJ1aWx0IHBsdWdpbiBpbnRvIGEgdGVtcG9yYXJ5IHZhdWx0LCBlbmFibGVzIGl0IHZpYSB0aGUgT2JzaWRpYW4gQ0xJLFxuICogYW5kIHByb3ZpZGVzIGB0ZW1wVmF1bHRQYXRoYCB0byB0ZXN0cy5cbiAqXG4gKiBAcGFyYW0gcHJvamVjdCAtIFRoZSBWaXRlc3QgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldHVwKHByb2plY3Q6IFRlc3RQcm9qZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGVudmlyb25tZW50T3B0aW9ucyA9IHByb2plY3QuY29uZmlnLmVudmlyb25tZW50T3B0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgY29uc3QgdHJhbnNwb3J0T3B0aW9ucyA9IGVudmlyb25tZW50T3B0aW9ucz8uWydvYnNpZGlhblRyYW5zcG9ydCddIGFzIE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyB8IHVuZGVmaW5lZDtcblxuICBzZXR1cFJlc3VsdCA9IGF3YWl0IGNvcmVTZXR1cCh7IHRyYW5zcG9ydE9wdGlvbnMgfSk7XG5cbiAgcHJvamVjdC5wcm92aWRlKCdvYnNpZGlhblRyYW5zcG9ydCcsIHNldHVwUmVzdWx0LnRyYW5zcG9ydE9wdGlvbnMpO1xuICBwcm9qZWN0LnByb3ZpZGUoJ3RlbXBWYXVsdFBhdGgnLCBzZXR1cFJlc3VsdC50ZW1wVmF1bHQucGF0aCk7XG59XG5cbi8qKlxuICogVml0ZXN0IGdsb2JhbCB0ZWFyZG93biBmdW5jdGlvbi5cbiAqXG4gKiBSZW1vdmVzIHRoZSB0ZW1wb3JhcnkgdmF1bHQgY3JlYXRlZCBkdXJpbmcgc2V0dXAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZWFyZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgY29yZVRlYXJkb3duKHNldHVwUmVzdWx0KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBYUEsb0JBQXVCO0FBS3ZCLDhCQUE0QztBQUM1QywrQkFHTztBQUNQLHdCQUEwQjtBQUFBLElBRTFCLHFEQUE0QixVQUFNLHNCQUFPLG1CQUFtQixDQUFDO0FBRTdELElBQUk7QUFPRyxTQUFTLGVBQTBCO0FBQ3hDLFFBQU0sb0JBQWdCLHNCQUFPLGVBQWU7QUFDNUMsU0FBTyxJQUFJLDRCQUFVLGFBQWE7QUFDcEM7QUFVQSxlQUFzQixNQUFNLFNBQXFDO0FBQy9ELFFBQU0scUJBQXFCLFFBQVEsT0FBTztBQUMxQyxRQUFNLG1CQUFtQixxQkFBcUIsbUJBQW1CO0FBRWpFLGdCQUFjLFVBQU0sb0NBQVUsRUFBRSxpQkFBaUIsQ0FBQztBQUVsRCxVQUFRLFFBQVEscUJBQXFCLFlBQVksZ0JBQWdCO0FBQ2pFLFVBQVEsUUFBUSxpQkFBaUIsWUFBWSxVQUFVLElBQUk7QUFDN0Q7QUFPQSxlQUFzQixXQUEwQjtBQUM5QyxZQUFNLHVDQUFhLFdBQVc7QUFDaEM7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,10 +1,13 @@
1
1
  /**
2
2
  * @file
3
3
  *
4
- * Contains the global setup and teardown functions for integration tests.
4
+ * Vitest global setup and teardown adapter.
5
+ *
6
+ * Delegates to the framework-agnostic core and bridges context
7
+ * to test workers via Vitest's `project.provide` / `inject`.
5
8
  */
6
9
  import type { TestProject } from 'vitest/node';
7
- import { TempVault } from './temp-vault.mjs';
10
+ import { TempVault } from '../temp-vault.cjs';
8
11
  /**
9
12
  * Returns the temporary vault provided by the global setup.
10
13
  *
@@ -7,7 +7,7 @@
7
7
  * Provides intellisense for `environmentOptions.obsidianTransport`
8
8
  * and `inject('obsidianTransport')` / `inject('tempVaultPath')`.
9
9
  */
10
- import type { ObsidianTransportOptions } from './transport-options.mjs';
10
+ import type { ObsidianTransportOptions } from '../transport-options.cjs';
11
11
  declare module 'vitest' {
12
12
  interface ProvidedContext {
13
13
  /**
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * Framework-neutral context provider for integration test state.
5
+ *
6
+ * Each framework adapter (vitest, jest) registers a resolver via
7
+ * {@link setTransportOptionsResolver} during module initialization.
8
+ * Core modules call {@link getTransportOptions} to retrieve the
9
+ * transport options without depending on any specific test framework.
10
+ */
11
+ import type { ObsidianTransportOptions } from './transport-options.mjs';
12
+ /**
13
+ * A function that resolves the current transport options.
14
+ */
15
+ export type TransportOptionsResolver = () => ObsidianTransportOptions | undefined;
16
+ /**
17
+ * Returns the transport options resolved by the registered framework adapter.
18
+ *
19
+ * @returns The transport options, or `undefined` if not configured (defaults to CLI transport).
20
+ */
21
+ export declare function getTransportOptions(): ObsidianTransportOptions | undefined;
22
+ /**
23
+ * Registers a resolver function for transport options. Called by framework
24
+ * adapters at module load time to bridge their native injection mechanisms.
25
+ *
26
+ * @param fn - The resolver function.
27
+ */
28
+ export declare function setTransportOptionsResolver(fn: TransportOptionsResolver): void;
@@ -0,0 +1,12 @@
1
+ let resolver;
2
+ function getTransportOptions() {
3
+ return resolver?.();
4
+ }
5
+ function setTransportOptionsResolver(fn) {
6
+ resolver = fn;
7
+ }
8
+ export {
9
+ getTransportOptions,
10
+ setTransportOptionsResolver
11
+ };
12
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbnRleHQtcHJvdmlkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBGcmFtZXdvcmstbmV1dHJhbCBjb250ZXh0IHByb3ZpZGVyIGZvciBpbnRlZ3JhdGlvbiB0ZXN0IHN0YXRlLlxuICpcbiAqIEVhY2ggZnJhbWV3b3JrIGFkYXB0ZXIgKHZpdGVzdCwgamVzdCkgcmVnaXN0ZXJzIGEgcmVzb2x2ZXIgdmlhXG4gKiB7QGxpbmsgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyfSBkdXJpbmcgbW9kdWxlIGluaXRpYWxpemF0aW9uLlxuICogQ29yZSBtb2R1bGVzIGNhbGwge0BsaW5rIGdldFRyYW5zcG9ydE9wdGlvbnN9IHRvIHJldHJpZXZlIHRoZVxuICogdHJhbnNwb3J0IG9wdGlvbnMgd2l0aG91dCBkZXBlbmRpbmcgb24gYW55IHNwZWNpZmljIHRlc3QgZnJhbWV3b3JrLlxuICovXG5cbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5tanMnO1xuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0aGUgY3VycmVudCB0cmFuc3BvcnQgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgVHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyID0gKCkgPT4gT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkO1xuXG5sZXQgcmVzb2x2ZXI6IFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlciB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB0cmFuc3BvcnQgb3B0aW9ucyByZXNvbHZlZCBieSB0aGUgcmVnaXN0ZXJlZCBmcmFtZXdvcmsgYWRhcHRlci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgdHJhbnNwb3J0IG9wdGlvbnMsIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBjb25maWd1cmVkIChkZWZhdWx0cyB0byBDTEkgdHJhbnNwb3J0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zcG9ydE9wdGlvbnMoKTogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHJlc29sdmVyPy4oKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSByZXNvbHZlciBmdW5jdGlvbiBmb3IgdHJhbnNwb3J0IG9wdGlvbnMuIENhbGxlZCBieSBmcmFtZXdvcmtcbiAqIGFkYXB0ZXJzIGF0IG1vZHVsZSBsb2FkIHRpbWUgdG8gYnJpZGdlIHRoZWlyIG5hdGl2ZSBpbmplY3Rpb24gbWVjaGFuaXNtcy5cbiAqXG4gKiBAcGFyYW0gZm4gLSBUaGUgcmVzb2x2ZXIgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoZm46IFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcik6IHZvaWQge1xuICByZXNvbHZlciA9IGZuO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBa0JBLElBQUk7QUFPRyxTQUFTLHNCQUE0RDtBQUMxRSxTQUFPLFdBQVc7QUFDcEI7QUFRTyxTQUFTLDRCQUE0QixJQUFvQztBQUM5RSxhQUFXO0FBQ2I7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * Framework-agnostic core logic for integration test global setup and teardown.
5
+ *
6
+ * Vitest and Jest adapters delegate to these functions.
7
+ */
8
+ import type { ObsidianTransportOptions } from './transport-options.mjs';
9
+ import type { ObsidianTransport } from './transport.mjs';
10
+ import { TempVault } from './temp-vault.mjs';
11
+ /**
12
+ * Parameters for {@link coreSetup}.
13
+ */
14
+ export interface CoreSetupParams {
15
+ /** Transport options. When omitted, defaults to the CLI transport. */
16
+ transportOptions?: ObsidianTransportOptions | undefined;
17
+ }
18
+ /**
19
+ * Result returned by {@link coreSetup}, used by framework adapters
20
+ * to pass context to test workers.
21
+ */
22
+ export interface CoreSetupResult {
23
+ /** The temporary vault created during setup. */
24
+ tempVault: TempVault;
25
+ /** The transport instance used during setup. */
26
+ transport: ObsidianTransport;
27
+ /** The transport options that were resolved. */
28
+ transportOptions: ObsidianTransportOptions | undefined;
29
+ }
30
+ /**
31
+ * Framework-agnostic global setup logic.
32
+ *
33
+ * Loads `.env` from the project root, creates a transport, copies the built
34
+ * plugin into a temporary vault, registers the vault with Obsidian, and
35
+ * enables the plugin.
36
+ *
37
+ * @param params - Setup parameters.
38
+ * @returns The setup result containing the temp vault, transport, and resolved options.
39
+ */
40
+ export declare function coreSetup(params?: CoreSetupParams): Promise<CoreSetupResult>;
41
+ /**
42
+ * Framework-agnostic global teardown logic.
43
+ *
44
+ * Disposes of the temporary vault and transport created during setup.
45
+ *
46
+ * @param result - The result from {@link coreSetup}. When `undefined`, does nothing.
47
+ */
48
+ export declare function coreTeardown(result?: CoreSetupResult): Promise<void>;
@@ -0,0 +1,108 @@
1
+ import { existsSync } from "node:fs";
2
+ import {
3
+ cp,
4
+ mkdir,
5
+ readFile,
6
+ stat,
7
+ writeFile
8
+ } from "node:fs/promises";
9
+ import { join } from "node:path";
10
+ import { loadEnvFile } from "node:process";
11
+ import { enablePluginWithErrorCapture } from "./enable-plugin.mjs";
12
+ import { log } from "./log.mjs";
13
+ import { evalInObsidian } from "./obsidian-cli.mjs";
14
+ import { TempVault } from "./temp-vault.mjs";
15
+ import { createTransportFromOptions } from "./transport-factory.mjs";
16
+ const DIST_DEV = "dist/dev";
17
+ const DIST_BUILD = "dist/build";
18
+ const MAIN_JS = "main.js";
19
+ const OBSIDIAN_CONFIG_DIR = ".obsidian";
20
+ const PLUGINS_DIR = "plugins";
21
+ const COMMUNITY_PLUGINS_JSON = "community-plugins.json";
22
+ async function coreSetup(params) {
23
+ const projectRoot = findProjectRoot();
24
+ const envFilePath = join(projectRoot, ".env");
25
+ if (existsSync(envFilePath)) {
26
+ loadEnvFile(envFilePath);
27
+ }
28
+ const transportOptions = params?.transportOptions;
29
+ log("[integration-setup] Creating transport...");
30
+ const transport = await createTransportFromOptions(transportOptions);
31
+ log(`[integration-setup] Transport created: ${transport.constructor.name}`);
32
+ log(`[integration-setup] Project root: ${projectRoot}`);
33
+ const distPath = await resolveDistPath(projectRoot);
34
+ const manifestJson = JSON.parse(await readFile(join(distPath, "manifest.json"), "utf-8"));
35
+ const pluginId = manifestJson.id;
36
+ if (transport.isMobile && manifestJson.isDesktopOnly) {
37
+ throw new Error(
38
+ `Plugin "${pluginId}" has isDesktopOnly: true in manifest.json. Mobile integration tests cannot run for desktop-only plugins.`
39
+ );
40
+ }
41
+ const mainJs = join(distPath, MAIN_JS);
42
+ const buildStat = await stat(mainJs);
43
+ log(`[integration-setup] Using ${distPath} (${buildStat.mtime.toISOString()}). If outdated, rebuild.`);
44
+ const tempVault = new TempVault();
45
+ log(`[integration-setup] Created temp vault: ${tempVault.path}`);
46
+ const pluginDir = join(tempVault.path, OBSIDIAN_CONFIG_DIR, PLUGINS_DIR, pluginId);
47
+ await mkdir(pluginDir, { recursive: true });
48
+ await cp(distPath, pluginDir, { recursive: true });
49
+ await writeFile(join(tempVault.path, OBSIDIAN_CONFIG_DIR, COMMUNITY_PLUGINS_JSON), JSON.stringify([pluginId]));
50
+ log("[integration-setup] Syncing vault to device...");
51
+ await tempVault.syncToDevice(transport);
52
+ log("[integration-setup] Registering vault...");
53
+ await tempVault.register(transport);
54
+ log("[integration-setup] Vault registered.");
55
+ log(`[integration-setup] Enabling plugin "${pluginId}"...`);
56
+ const { errorMessage } = await evalInObsidian({
57
+ args: { pluginId },
58
+ fn: enablePluginWithErrorCapture,
59
+ shouldSkipPreflightChecks: true,
60
+ transport,
61
+ vaultPath: tempVault.path
62
+ });
63
+ if (errorMessage) {
64
+ throw new Error(`Plugin "${pluginId}" failed to load: ${errorMessage}`);
65
+ }
66
+ log(`[integration-setup] Plugin "${pluginId}" enabled successfully.`);
67
+ return { tempVault, transport, transportOptions };
68
+ }
69
+ async function coreTeardown(result) {
70
+ await result?.tempVault.dispose(result.transport);
71
+ await result?.transport.dispose?.();
72
+ }
73
+ function findProjectRoot() {
74
+ let dir = process.cwd();
75
+ while (true) {
76
+ if (existsSync(join(dir, "package.json"))) {
77
+ return dir;
78
+ }
79
+ const parent = join(dir, "..");
80
+ if (parent === dir) {
81
+ throw new Error("Could not find project root (no package.json found).");
82
+ }
83
+ dir = parent;
84
+ }
85
+ }
86
+ async function resolveDistPath(projectRoot) {
87
+ const devPath = join(projectRoot, DIST_DEV);
88
+ const buildPath = join(projectRoot, DIST_BUILD);
89
+ const devMainJs = join(devPath, MAIN_JS);
90
+ const buildMainJs = join(buildPath, MAIN_JS);
91
+ const devStat = existsSync(devMainJs) ? await stat(devMainJs) : null;
92
+ const buildStat = existsSync(buildMainJs) ? await stat(buildMainJs) : null;
93
+ if (devStat && buildStat) {
94
+ return devStat.mtime > buildStat.mtime ? devPath : buildPath;
95
+ }
96
+ if (devStat) {
97
+ return devPath;
98
+ }
99
+ if (buildStat) {
100
+ return buildPath;
101
+ }
102
+ throw new Error("No build found. Run `npm run build` or `npm run dev` first.");
103
+ }
104
+ export {
105
+ coreSetup,
106
+ coreTeardown
107
+ };
108
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2dsb2JhbC1zZXR1cC1jb3JlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgbG9naWMgZm9yIGludGVncmF0aW9uIHRlc3QgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93bi5cbiAqXG4gKiBWaXRlc3QgYW5kIEplc3QgYWRhcHRlcnMgZGVsZWdhdGUgdG8gdGhlc2UgZnVuY3Rpb25zLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk1hbmlmZXN0IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBjcCxcbiAgbWtkaXIsXG4gIHJlYWRGaWxlLFxuICBzdGF0LFxuICB3cml0ZUZpbGVcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGxvYWRFbnZGaWxlIH0gZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuaW1wb3J0IHR5cGUgeyBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnMgfSBmcm9tICcuL3RyYW5zcG9ydC1vcHRpb25zLm1qcyc7XG5pbXBvcnQgdHlwZSB7IE9ic2lkaWFuVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQubWpzJztcblxuaW1wb3J0IHsgZW5hYmxlUGx1Z2luV2l0aEVycm9yQ2FwdHVyZSB9IGZyb20gJy4vZW5hYmxlLXBsdWdpbi5tanMnO1xuaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi9sb2cubWpzJztcbmltcG9ydCB7IGV2YWxJbk9ic2lkaWFuIH0gZnJvbSAnLi9vYnNpZGlhbi1jbGkubWpzJztcbmltcG9ydCB7IFRlbXBWYXVsdCB9IGZyb20gJy4vdGVtcC12YXVsdC5tanMnO1xuaW1wb3J0IHsgY3JlYXRlVHJhbnNwb3J0RnJvbU9wdGlvbnMgfSBmcm9tICcuL3RyYW5zcG9ydC1mYWN0b3J5Lm1qcyc7XG5cbmNvbnN0IERJU1RfREVWID0gJ2Rpc3QvZGV2JztcbmNvbnN0IERJU1RfQlVJTEQgPSAnZGlzdC9idWlsZCc7XG5jb25zdCBNQUlOX0pTID0gJ21haW4uanMnO1xuY29uc3QgT0JTSURJQU5fQ09ORklHX0RJUiA9ICcub2JzaWRpYW4nO1xuY29uc3QgUExVR0lOU19ESVIgPSAncGx1Z2lucyc7XG5jb25zdCBDT01NVU5JVFlfUExVR0lOU19KU09OID0gJ2NvbW11bml0eS1wbHVnaW5zLmpzb24nO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjb3JlU2V0dXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvcmVTZXR1cFBhcmFtcyB7XG4gIC8qKiBUcmFuc3BvcnQgb3B0aW9ucy4gV2hlbiBvbWl0dGVkLCBkZWZhdWx0cyB0byB0aGUgQ0xJIHRyYW5zcG9ydC4gKi9cbiAgdHJhbnNwb3J0T3B0aW9ucz86IE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXN1bHQgcmV0dXJuZWQgYnkge0BsaW5rIGNvcmVTZXR1cH0sIHVzZWQgYnkgZnJhbWV3b3JrIGFkYXB0ZXJzXG4gKiB0byBwYXNzIGNvbnRleHQgdG8gdGVzdCB3b3JrZXJzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvcmVTZXR1cFJlc3VsdCB7XG4gIC8qKiBUaGUgdGVtcG9yYXJ5IHZhdWx0IGNyZWF0ZWQgZHVyaW5nIHNldHVwLiAqL1xuICB0ZW1wVmF1bHQ6IFRlbXBWYXVsdDtcblxuICAvKiogVGhlIHRyYW5zcG9ydCBpbnN0YW5jZSB1c2VkIGR1cmluZyBzZXR1cC4gKi9cbiAgdHJhbnNwb3J0OiBPYnNpZGlhblRyYW5zcG9ydDtcblxuICAvKiogVGhlIHRyYW5zcG9ydCBvcHRpb25zIHRoYXQgd2VyZSByZXNvbHZlZC4gKi9cbiAgdHJhbnNwb3J0T3B0aW9uczogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEZyYW1ld29yay1hZ25vc3RpYyBnbG9iYWwgc2V0dXAgbG9naWMuXG4gKlxuICogTG9hZHMgYC5lbnZgIGZyb20gdGhlIHByb2plY3Qgcm9vdCwgY3JlYXRlcyBhIHRyYW5zcG9ydCwgY29waWVzIHRoZSBidWlsdFxuICogcGx1Z2luIGludG8gYSB0ZW1wb3JhcnkgdmF1bHQsIHJlZ2lzdGVycyB0aGUgdmF1bHQgd2l0aCBPYnNpZGlhbiwgYW5kXG4gKiBlbmFibGVzIHRoZSBwbHVnaW4uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFNldHVwIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgc2V0dXAgcmVzdWx0IGNvbnRhaW5pbmcgdGhlIHRlbXAgdmF1bHQsIHRyYW5zcG9ydCwgYW5kIHJlc29sdmVkIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3JlU2V0dXAocGFyYW1zPzogQ29yZVNldHVwUGFyYW1zKTogUHJvbWlzZTxDb3JlU2V0dXBSZXN1bHQ+IHtcbiAgY29uc3QgcHJvamVjdFJvb3QgPSBmaW5kUHJvamVjdFJvb3QoKTtcbiAgY29uc3QgZW52RmlsZVBhdGggPSBqb2luKHByb2plY3RSb290LCAnLmVudicpO1xuICBpZiAoZXhpc3RzU3luYyhlbnZGaWxlUGF0aCkpIHtcbiAgICBsb2FkRW52RmlsZShlbnZGaWxlUGF0aCk7XG4gIH1cblxuICBjb25zdCB0cmFuc3BvcnRPcHRpb25zID0gcGFyYW1zPy50cmFuc3BvcnRPcHRpb25zO1xuICBsb2coJ1tpbnRlZ3JhdGlvbi1zZXR1cF0gQ3JlYXRpbmcgdHJhbnNwb3J0Li4uJyk7XG4gIGNvbnN0IHRyYW5zcG9ydCA9IGF3YWl0IGNyZWF0ZVRyYW5zcG9ydEZyb21PcHRpb25zKHRyYW5zcG9ydE9wdGlvbnMpO1xuICBsb2coYFtpbnRlZ3JhdGlvbi1zZXR1cF0gVHJhbnNwb3J0IGNyZWF0ZWQ6ICR7dHJhbnNwb3J0LmNvbnN0cnVjdG9yLm5hbWV9YCk7XG5cbiAgbG9nKGBbaW50ZWdyYXRpb24tc2V0dXBdIFByb2plY3Qgcm9vdDogJHtwcm9qZWN0Um9vdH1gKTtcbiAgY29uc3QgZGlzdFBhdGggPSBhd2FpdCByZXNvbHZlRGlzdFBhdGgocHJvamVjdFJvb3QpO1xuICBjb25zdCBtYW5pZmVzdEpzb24gPSBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGpvaW4oZGlzdFBhdGgsICdtYW5pZmVzdC5qc29uJyksICd1dGYtOCcpKSBhcyBQbHVnaW5NYW5pZmVzdDtcbiAgY29uc3QgcGx1Z2luSWQgPSBtYW5pZmVzdEpzb24uaWQ7XG5cbiAgaWYgKHRyYW5zcG9ydC5pc01vYmlsZSAmJiBtYW5pZmVzdEpzb24uaXNEZXNrdG9wT25seSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBQbHVnaW4gXCIke3BsdWdpbklkfVwiIGhhcyBpc0Rlc2t0b3BPbmx5OiB0cnVlIGluIG1hbmlmZXN0Lmpzb24uIE1vYmlsZSBpbnRlZ3JhdGlvbiB0ZXN0cyBjYW5ub3QgcnVuIGZvciBkZXNrdG9wLW9ubHkgcGx1Z2lucy5gXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG1haW5KcyA9IGpvaW4oZGlzdFBhdGgsIE1BSU5fSlMpO1xuICBjb25zdCBidWlsZFN0YXQgPSBhd2FpdCBzdGF0KG1haW5Kcyk7XG5cbiAgbG9nKGBbaW50ZWdyYXRpb24tc2V0dXBdIFVzaW5nICR7ZGlzdFBhdGh9ICgke2J1aWxkU3RhdC5tdGltZS50b0lTT1N0cmluZygpfSkuIElmIG91dGRhdGVkLCByZWJ1aWxkLmApO1xuXG4gIGNvbnN0IHRlbXBWYXVsdCA9IG5ldyBUZW1wVmF1bHQoKTtcbiAgbG9nKGBbaW50ZWdyYXRpb24tc2V0dXBdIENyZWF0ZWQgdGVtcCB2YXVsdDogJHt0ZW1wVmF1bHQucGF0aH1gKTtcbiAgY29uc3QgcGx1Z2luRGlyID0gam9pbih0ZW1wVmF1bHQucGF0aCwgT0JTSURJQU5fQ09ORklHX0RJUiwgUExVR0lOU19ESVIsIHBsdWdpbklkKTtcbiAgYXdhaXQgbWtkaXIocGx1Z2luRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgYXdhaXQgY3AoZGlzdFBhdGgsIHBsdWdpbkRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGF3YWl0IHdyaXRlRmlsZShqb2luKHRlbXBWYXVsdC5wYXRoLCBPQlNJRElBTl9DT05GSUdfRElSLCBDT01NVU5JVFlfUExVR0lOU19KU09OKSwgSlNPTi5zdHJpbmdpZnkoW3BsdWdpbklkXSkpO1xuXG4gIGxvZygnW2ludGVncmF0aW9uLXNldHVwXSBTeW5jaW5nIHZhdWx0IHRvIGRldmljZS4uLicpO1xuICBhd2FpdCB0ZW1wVmF1bHQuc3luY1RvRGV2aWNlKHRyYW5zcG9ydCk7XG4gIGxvZygnW2ludGVncmF0aW9uLXNldHVwXSBSZWdpc3RlcmluZyB2YXVsdC4uLicpO1xuICBhd2FpdCB0ZW1wVmF1bHQucmVnaXN0ZXIodHJhbnNwb3J0KTtcbiAgbG9nKCdbaW50ZWdyYXRpb24tc2V0dXBdIFZhdWx0IHJlZ2lzdGVyZWQuJyk7XG5cbiAgLy8gRW5hYmxlIHRoZSBwbHVnaW4gYW5kIHZlcmlmeSBpdCBsb2FkZWQuIE9ic2lkaWFuJ3MgZW5hYmxlUGx1Z2luKCkgd3JhcHNcbiAgLy8gTG9hZFBsdWdpbigpIGluIGEgdHJ5LWNhdGNoIHRoYXQgc3dhbGxvd3MgZXJyb3JzIGFuZCByZXR1cm5zIGZhbHNlLlxuICAvLyBXZSBtb25rZXktcGF0Y2ggbG9hZFBsdWdpbigpIHRvIGNhcHR1cmUgdGhlIGVycm9yIGJlZm9yZSBpdCdzIHN3YWxsb3dlZC5cbiAgbG9nKGBbaW50ZWdyYXRpb24tc2V0dXBdIEVuYWJsaW5nIHBsdWdpbiBcIiR7cGx1Z2luSWR9XCIuLi5gKTtcbiAgY29uc3QgeyBlcnJvck1lc3NhZ2UgfSA9IGF3YWl0IGV2YWxJbk9ic2lkaWFuKHtcbiAgICBhcmdzOiB7IHBsdWdpbklkIH0sXG4gICAgZm46IGVuYWJsZVBsdWdpbldpdGhFcnJvckNhcHR1cmUsXG4gICAgc2hvdWxkU2tpcFByZWZsaWdodENoZWNrczogdHJ1ZSxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmF1bHRQYXRoOiB0ZW1wVmF1bHQucGF0aFxuICB9KTtcblxuICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBQbHVnaW4gXCIke3BsdWdpbklkfVwiIGZhaWxlZCB0byBsb2FkOiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgfVxuXG4gIGxvZyhgW2ludGVncmF0aW9uLXNldHVwXSBQbHVnaW4gXCIke3BsdWdpbklkfVwiIGVuYWJsZWQgc3VjY2Vzc2Z1bGx5LmApO1xuXG4gIHJldHVybiB7IHRlbXBWYXVsdCwgdHJhbnNwb3J0LCB0cmFuc3BvcnRPcHRpb25zIH07XG59XG5cbi8qKlxuICogRnJhbWV3b3JrLWFnbm9zdGljIGdsb2JhbCB0ZWFyZG93biBsb2dpYy5cbiAqXG4gKiBEaXNwb3NlcyBvZiB0aGUgdGVtcG9yYXJ5IHZhdWx0IGFuZCB0cmFuc3BvcnQgY3JlYXRlZCBkdXJpbmcgc2V0dXAuXG4gKlxuICogQHBhcmFtIHJlc3VsdCAtIFRoZSByZXN1bHQgZnJvbSB7QGxpbmsgY29yZVNldHVwfS4gV2hlbiBgdW5kZWZpbmVkYCwgZG9lcyBub3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29yZVRlYXJkb3duKHJlc3VsdD86IENvcmVTZXR1cFJlc3VsdCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCByZXN1bHQ/LnRlbXBWYXVsdC5kaXNwb3NlKHJlc3VsdC50cmFuc3BvcnQpO1xuICBhd2FpdCByZXN1bHQ/LnRyYW5zcG9ydC5kaXNwb3NlPy4oKTtcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgcHJvamVjdCByb290IGJ5IHdhbGtpbmcgdXAgZnJvbSBgcHJvY2Vzcy5jd2QoKWAgbG9va2luZyBmb3IgYHBhY2thZ2UuanNvbmAuXG4gKlxuICogQHJldHVybnMgVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHByb2plY3Qgcm9vdC5cbiAqL1xuZnVuY3Rpb24gZmluZFByb2plY3RSb290KCk6IHN0cmluZyB7XG4gIGxldCBkaXIgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uIC0tIExvb3AgdGVybWluYXRlcyBhdCBmaWxlc3lzdGVtIHJvb3QuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGV4aXN0c1N5bmMoam9pbihkaXIsICdwYWNrYWdlLmpzb24nKSkpIHtcbiAgICAgIHJldHVybiBkaXI7XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudCA9IGpvaW4oZGlyLCAnLi4nKTtcbiAgICBpZiAocGFyZW50ID09PSBkaXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgcHJvamVjdCByb290IChubyBwYWNrYWdlLmpzb24gZm91bmQpLicpO1xuICAgIH1cbiAgICBkaXIgPSBwYXJlbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZGlzdCBwYXRoIHRvIHVzZSBmb3IgaW50ZWdyYXRpb24gdGVzdHMuXG4gKlxuICogUGlja3Mgd2hpY2hldmVyIG9mIGBkaXN0L2RldmAgYW5kIGBkaXN0L2J1aWxkYCBoYXMgYSBuZXdlciBgbWFpbi5qc2AuXG4gKiBJZiBvbmx5IG9uZSBleGlzdHMsIHRoYXQgb25lIGlzIHVzZWQuIFRocm93cyBpZiBuZWl0aGVyIGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0gcHJvamVjdFJvb3QgLSBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcHJvamVjdCByb290LlxuICogQHJldHVybnMgVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGNob3NlbiBkaXN0IGZvbGRlci5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZURpc3RQYXRoKHByb2plY3RSb290OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBkZXZQYXRoID0gam9pbihwcm9qZWN0Um9vdCwgRElTVF9ERVYpO1xuICBjb25zdCBidWlsZFBhdGggPSBqb2luKHByb2plY3RSb290LCBESVNUX0JVSUxEKTtcbiAgY29uc3QgZGV2TWFpbkpzID0gam9pbihkZXZQYXRoLCBNQUlOX0pTKTtcbiAgY29uc3QgYnVpbGRNYWluSnMgPSBqb2luKGJ1aWxkUGF0aCwgTUFJTl9KUyk7XG4gIGNvbnN0IGRldlN0YXQgPSBleGlzdHNTeW5jKGRldk1haW5KcykgPyBhd2FpdCBzdGF0KGRldk1haW5KcykgOiBudWxsO1xuICBjb25zdCBidWlsZFN0YXQgPSBleGlzdHNTeW5jKGJ1aWxkTWFpbkpzKSA/IGF3YWl0IHN0YXQoYnVpbGRNYWluSnMpIDogbnVsbDtcblxuICBpZiAoZGV2U3RhdCAmJiBidWlsZFN0YXQpIHtcbiAgICByZXR1cm4gZGV2U3RhdC5tdGltZSA+IGJ1aWxkU3RhdC5tdGltZSA/IGRldlBhdGggOiBidWlsZFBhdGg7XG4gIH1cblxuICBpZiAoZGV2U3RhdCkge1xuICAgIHJldHVybiBkZXZQYXRoO1xuICB9XG5cbiAgaWYgKGJ1aWxkU3RhdCkge1xuICAgIHJldHVybiBidWlsZFBhdGg7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGJ1aWxkIGZvdW5kLiBSdW4gYG5wbSBydW4gYnVpbGRgIG9yIGBucG0gcnVuIGRldmAgZmlyc3QuJyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFZQSxTQUFTLGtCQUFrQjtBQUMzQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsWUFBWTtBQUNyQixTQUFTLG1CQUFtQjtBQUs1QixTQUFTLG9DQUFvQztBQUM3QyxTQUFTLFdBQVc7QUFDcEIsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUyxpQkFBaUI7QUFDMUIsU0FBUyxrQ0FBa0M7QUFFM0MsTUFBTSxXQUFXO0FB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
@@ -3,8 +3,9 @@
3
3
  *
4
4
  * Contains the entry point for the integration testing module.
5
5
  */
6
- import './vitest.mjs';
7
6
  export { ContextId } from './context-id.mjs';
7
+ export type { TransportOptionsResolver } from './context-provider.mjs';
8
+ export { setTransportOptionsResolver } from './context-provider.mjs';
8
9
  export type { EvalInObsidianParams } from './obsidian-cli.mjs';
9
10
  export { evalInObsidian } from './obsidian-cli.mjs';
10
11
  export { TempVault } from './temp-vault.mjs';
@@ -1,5 +1,5 @@
1
- import "./vitest.ts";
2
1
  import { ContextId } from "./context-id.mjs";
2
+ import { setTransportOptionsResolver } from "./context-provider.mjs";
3
3
  import { evalInObsidian } from "./obsidian-cli.mjs";
4
4
  import { TempVault } from "./temp-vault.mjs";
5
5
  import { AppiumTransport } from "./transport-appium.mjs";
@@ -19,6 +19,7 @@ export {
19
19
  createTransportFromOptions,
20
20
  evalInObsidian,
21
21
  registerVault,
22
+ setTransportOptionsResolver,
22
23
  unregisterVault
23
24
  };
24
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXVuYXNzaWduZWQtaW1wb3J0IC0tIFNpZGUtZWZmZWN0IGltcG9ydCB0byBpbmNsdWRlIHZpdGVzdCBtb2R1bGUgYXVnbWVudGF0aW9ucyBpbiB0aGUgZGVjbGFyYXRpb24gb3V0cHV0LlxuaW1wb3J0ICcuL3ZpdGVzdC50cyc7XG5cbmV4cG9ydCB7IENvbnRleHRJZCB9IGZyb20gJy4vY29udGV4dC1pZC5tanMnO1xuZXhwb3J0IHR5cGUgeyBFdmFsSW5PYnNpZGlhblBhcmFtcyB9IGZyb20gJy4vb2JzaWRpYW4tY2xpLm1qcyc7XG5leHBvcnQgeyBldmFsSW5PYnNpZGlhbiB9IGZyb20gJy4vb2JzaWRpYW4tY2xpLm1qcyc7XG5leHBvcnQgeyBUZW1wVmF1bHQgfSBmcm9tICcuL3RlbXAtdmF1bHQubWpzJztcbmV4cG9ydCB0eXBlIHsgQXBwaXVtVHJhbnNwb3J0Q29uZmlnIH0gZnJvbSAnLi90cmFuc3BvcnQtYXBwaXVtLm1qcyc7XG5leHBvcnQgeyBBcHBpdW1UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1hcHBpdW0ubWpzJztcbmV4cG9ydCB0eXBlIHsgRGVza3RvcENkcFRyYW5zcG9ydENvbmZpZyB9IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2RwLm1qcyc7XG5leHBvcnQgeyBEZXNrdG9wQ2RwVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQtZGVza3RvcC1jZHAubWpzJztcbmV4cG9ydCB7IERlc2t0b3BDbGlUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1kZXNrdG9wLWNsaS5tanMnO1xuZXhwb3J0IHsgY3JlYXRlVHJhbnNwb3J0RnJvbU9wdGlvbnMgfSBmcm9tICcuL3RyYW5zcG9ydC1mYWN0b3J5Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnMsXG4gIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucyxcbiAgT2JzaWRpYW5DbGlUcmFuc3BvcnRPcHRpb25zLFxuICBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBPYnNpZGlhblRyYW5zcG9ydCxcbiAgVHJhbnNwb3J0RXZhbE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQubWpzJztcbmV4cG9ydCB7XG4gIHJlZ2lzdGVyVmF1bHQsXG4gIHVucmVnaXN0ZXJWYXVsdFxufSBmcm9tICcuL3ZhdWx0LXJlZ2lzdHJ5Lm1qcyc7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFPQSxPQUFPO0FBRVAsU0FBUyxpQkFBaUI7QUFFMUIsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUyxpQkFBaUI7QUFFMUIsU0FBUyx1QkFBdUI7QUFFaEMsU0FBUywyQkFBMkI7QUFDcEMsU0FBUywyQkFBMkI7QUFDcEMsU0FBUyxrQ0FBa0M7QUFXM0M7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7IiwKICAibmFtZXMiOiBbXQp9Cg==
25
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuZXhwb3J0IHsgQ29udGV4dElkIH0gZnJvbSAnLi9jb250ZXh0LWlkLm1qcyc7XG5leHBvcnQgdHlwZSB7IFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlciB9IGZyb20gJy4vY29udGV4dC1wcm92aWRlci5tanMnO1xuZXhwb3J0IHsgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyIH0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLm1qcyc7XG5leHBvcnQgdHlwZSB7IEV2YWxJbk9ic2lkaWFuUGFyYW1zIH0gZnJvbSAnLi9vYnNpZGlhbi1jbGkubWpzJztcbmV4cG9ydCB7IGV2YWxJbk9ic2lkaWFuIH0gZnJvbSAnLi9vYnNpZGlhbi1jbGkubWpzJztcbmV4cG9ydCB7IFRlbXBWYXVsdCB9IGZyb20gJy4vdGVtcC12YXVsdC5tanMnO1xuZXhwb3J0IHR5cGUgeyBBcHBpdW1UcmFuc3BvcnRDb25maWcgfSBmcm9tICcuL3RyYW5zcG9ydC1hcHBpdW0ubWpzJztcbmV4cG9ydCB7IEFwcGl1bVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWFwcGl1bS5tanMnO1xuZXhwb3J0IHR5cGUgeyBEZXNrdG9wQ2RwVHJhbnNwb3J0Q29uZmlnIH0gZnJvbSAnLi90cmFuc3BvcnQtZGVza3RvcC1jZHAubWpzJztcbmV4cG9ydCB7IERlc2t0b3BDZHBUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1kZXNrdG9wLWNkcC5tanMnO1xuZXhwb3J0IHsgRGVza3RvcENsaVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2xpLm1qcyc7XG5leHBvcnQgeyBjcmVhdGVUcmFuc3BvcnRGcm9tT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LWZhY3RvcnkubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyxcbiAgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLFxuICBPYnNpZGlhbkNsaVRyYW5zcG9ydE9wdGlvbnMsXG4gIE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9uc1xufSBmcm9tICcuL3RyYW5zcG9ydC1vcHRpb25zLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIE9ic2lkaWFuVHJhbnNwb3J0LFxuICBUcmFuc3BvcnRFdmFsT3B0aW9uc1xufSBmcm9tICcuL3RyYW5zcG9ydC5tanMnO1xuZXhwb3J0IHtcbiAgcmVnaXN0ZXJWYXVsdCxcbiAgdW5yZWdpc3RlclZhdWx0XG59IGZyb20gJy4vdmF1bHQtcmVnaXN0cnkubWpzJztcbiJdLAogICJtYXBwaW5ncyI6ICJBQU1BLFNBQVMsaUJBQWlCO0FBRTFCLFNBQVMsbUNBQW1DO0FBRTVDLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsaUJBQWlCO0FBRTFCLFNBQVMsdUJBQXVCO0FBRWhDLFNBQVMsMkJBQTJCO0FBQ3BDLFNBQVMsMkJBQTJCO0FBQ3BDLFNBQVMsa0NBQWtDO0FBVzNDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLOyIsCiAgIm5hbWVzIjogW10KfQo=