@nominalso/vibe-bridge 0.6.0 → 0.7.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.
@@ -96,7 +96,7 @@ function isOriginAllowed(origin, allowlist, { allowPatterns }) {
96
96
  }
97
97
 
98
98
  // package.json
99
- var version = "0.6.0";
99
+ var version = "0.7.0";
100
100
 
101
101
  // src/version.ts
102
102
  var BRIDGE_VERSION = version;
@@ -402,4 +402,4 @@ export {
402
402
  BridgeDataMethods,
403
403
  BRIDGE_VERSION
404
404
  };
405
- //# sourceMappingURL=chunk-AH2BCQVB.js.map
405
+ //# sourceMappingURL=chunk-QAMP6I2C.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../protocol-types/dist/index.js","../package.json","../src/version.ts","../src/data-methods.ts"],"sourcesContent":["// src/subroute.ts\nfunction normalizeSubroute(subroute) {\n const normalized = subroute.startsWith(\"/\") ? subroute : `/${subroute}`;\n const path = normalized.split(/[?#]/)[0];\n let decoded = path;\n let prev;\n do {\n prev = decoded;\n decoded = decoded.replace(/%25/gi, \"%\").replace(/%2e/gi, \".\").replace(/%2f/gi, \"/\");\n } while (decoded !== prev);\n if (decoded.split(\"/\").some((segment) => segment === \"..\")) return null;\n return normalized;\n}\n\n// src/protocol.ts\nvar PROTOCOL_ID = \"nominal-vibe-bridge\";\nvar PROTOCOL_VERSION = 2;\nvar BRIDGE_KINDS = [\"request\", \"response\", \"push\", \"command\", \"progress\"];\nvar CORRELATED_KINDS = [\"request\", \"response\", \"progress\"];\nvar BRIDGE_KINDS_SET = new Set(BRIDGE_KINDS);\nvar CORRELATED_KINDS_SET = new Set(CORRELATED_KINDS);\nfunction isBridgeMessage(data) {\n if (typeof data !== \"object\" || data === null) return false;\n const d = data;\n if (d.__protocol !== PROTOCOL_ID) return false;\n if (d.__version !== PROTOCOL_VERSION) return false;\n if (typeof d.kind !== \"string\" || !BRIDGE_KINDS_SET.has(d.kind)) return false;\n if (typeof d.type !== \"string\") return false;\n if (CORRELATED_KINDS_SET.has(d.kind) && typeof d.requestId !== \"string\") return false;\n return true;\n}\n\n// src/errors.ts\nvar BRIDGE_ERROR_BRAND = /* @__PURE__ */ Symbol.for(\"@nominalso/vibe-bridge:BridgeError\");\nvar HTTP_BRIDGE_ERROR_BRAND = /* @__PURE__ */ Symbol.for(\"@nominalso/vibe-bridge:HttpBridgeError\");\nvar BridgeError = class extends Error {\n constructor(code, message) {\n super(message);\n this.code = code;\n this.name = \"BridgeError\";\n }\n /**\n * Cross-realm-safe type guard. Prefer this over `instanceof BridgeError` when\n * an error may have been thrown by a differently-built copy of the SDK (e.g.\n * server bundle vs client bundle) — it matches on a process-global brand\n * rather than class identity.\n */\n static isBridgeError(err) {\n return typeof err === \"object\" && err !== null && err[BRIDGE_ERROR_BRAND] === true;\n }\n};\nObject.defineProperty(BridgeError.prototype, BRIDGE_ERROR_BRAND, {\n value: true,\n enumerable: false\n});\nvar HttpBridgeError = class extends BridgeError {\n constructor(status, message) {\n super(\"REQUEST_FAILED\", message);\n this.status = status;\n this.name = \"HttpBridgeError\";\n }\n /**\n * Cross-realm-safe type guard (see {@link BridgeError.isBridgeError}). Returns\n * `true` only for `HttpBridgeError` instances, not plain `BridgeError`s.\n */\n static isHttpBridgeError(err) {\n return typeof err === \"object\" && err !== null && err[HTTP_BRIDGE_ERROR_BRAND] === true;\n }\n};\nObject.defineProperty(HttpBridgeError.prototype, HTTP_BRIDGE_ERROR_BRAND, {\n value: true,\n enumerable: false\n});\n\n// src/origins.ts\nfunction isOriginPattern(entry) {\n return entry.includes(\"*\");\n}\nvar patternCache = /* @__PURE__ */ new Map();\nfunction patternToRegExp(pattern) {\n const cached = patternCache.get(pattern);\n if (cached) return cached;\n const escaped = pattern.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const body = escaped.replace(/\\\\\\*/g, \"[^./:@?#\\\\s]+\");\n const compiled = new RegExp(`^${body}$`);\n patternCache.set(pattern, compiled);\n return compiled;\n}\nfunction matchesOrigin(origin, entry) {\n if (!isOriginPattern(entry)) return origin === entry;\n return patternToRegExp(entry).test(origin);\n}\nfunction isOriginAllowed(origin, allowlist, { allowPatterns }) {\n for (const entry of allowlist) {\n if (isOriginPattern(entry)) {\n if (allowPatterns && matchesOrigin(origin, entry)) return true;\n } else if (origin === entry) {\n return true;\n }\n }\n return false;\n}\nexport {\n BridgeError,\n HttpBridgeError,\n PROTOCOL_ID,\n PROTOCOL_VERSION,\n isBridgeMessage,\n isOriginAllowed,\n isOriginPattern,\n matchesOrigin,\n normalizeSubroute\n};\n","{\n \"name\": \"@nominalso/vibe-bridge\",\n \"version\": \"0.6.0\",\n \"description\": \"Iframe-side SDK for building Nominal Vibe Apps — connects an embedded app to its Nominal host over a typed postMessage bridge (context, data fetch, file upload, subroute deep-linking). Safe to import from SSR, React Server Components, and edge/Worker runtimes.\",\n \"license\": \"UNLICENSED\",\n \"homepage\": \"https://github.com/nominalso/vibe-apps-sdk#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/nominalso/vibe-apps-sdk/issues\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"github:nominalso/vibe-apps-sdk\",\n \"directory\": \"packages/bridge\"\n },\n \"type\": \"module\",\n \"sideEffects\": false,\n \"types\": \"./dist/index.d.ts\",\n \"main\": \"./dist/index.browser.cjs\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"react-server\": \"./dist/index.server.js\",\n \"workerd\": \"./dist/index.server.js\",\n \"worker\": \"./dist/index.server.js\",\n \"edge-light\": \"./dist/index.server.js\",\n \"deno\": \"./dist/index.server.js\",\n \"browser\": {\n \"import\": \"./dist/index.browser.js\",\n \"require\": \"./dist/index.browser.cjs\"\n },\n \"default\": {\n \"import\": \"./dist/index.browser.js\",\n \"require\": \"./dist/index.browser.cjs\"\n }\n },\n \"./server\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.server.js\",\n \"require\": \"./dist/index.server.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"files\": [\n \"dist\",\n \"docs\",\n \"AGENTS.md\",\n \"llms.txt\"\n ],\n \"publishConfig\": {\n \"registry\": \"https://registry.npmjs.org/\",\n \"access\": \"public\"\n },\n \"scripts\": {\n \"clean\": \"rm -rf dist node_modules\",\n \"build\": \"rm -rf dist && tsup\",\n \"lint\": \"eslint src\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"optionalDependencies\": {\n \"posthog-js\": \"^1.393.5\"\n },\n \"devDependencies\": {\n \"@nominalso/vibe-api-types\": \"workspace:*\",\n \"@nominalso/vibe-protocol-types\": \"workspace:*\"\n }\n}\n","import { version } from '../package.json'\n\n/**\n * Published version of this package (`@nominalso/vibe-bridge`), sent to the host\n * in the `CONNECT` handshake. Import-safe from any environment.\n */\nexport const BRIDGE_VERSION: string = version\n","import type { RequestRegistry } from '@nominalso/vibe-protocol-types'\n\nexport interface UploadOptions {\n /** Domain entity the file attaches to, e.g. `'JOURNAL_ENTRY'`. */\n entityType: string\n /** Id of the entity the file attaches to, when applicable. */\n entityId?: string | number\n /** Called with incremental progress (`0`–`100`) while the upload streams. */\n onProgress?: (p: RequestRegistry['UPLOAD_FILE']['progress']) => void\n}\n\n/**\n * The typed Nominal data methods (~46) plus {@link BridgeDataMethods.upload},\n * factored onto a base class so {@link VibeAppBridge} stays focused on\n * connection/transport. Each method is a thin typed wrapper over `request()`;\n * `VibeAppBridge` provides the concrete `request` implementation.\n */\nexport abstract class BridgeDataMethods {\n /**\n * Low-level typed request for **any** operation in {@link RequestRegistry} —\n * implemented by {@link VibeAppBridge}. The named methods below wrap this.\n */\n abstract request<K extends keyof RequestRegistry>(\n type: K,\n payload: RequestRegistry[K]['payload'],\n onProgress?: (payload: unknown) => void,\n ): Promise<RequestRegistry[K]['data']>\n\n // ---------------------------------------------------------------------------\n // Operations — Accounting: chart of accounts\n //\n // Each method is a typed wrapper over `request('<OP>', payload)`. The payload\n // and return types come straight from the Nominal API (`RequestRegistry`).\n // For any operation without a named method, call `request('<OP>', payload)`.\n // ---------------------------------------------------------------------------\n\n /**\n * Fetch the flat chart of accounts for a subsidiary.\n *\n * @example\n * ```ts\n * const ctx = await bridge.connect()\n * const accounts = await bridge.getChartOfAccounts({\n * path: { subsidiary_id: ctx.subsidiaryId },\n * })\n * ```\n */\n getChartOfAccounts(\n payload: RequestRegistry['GET_CHART_OF_ACCOUNTS']['payload'],\n ): Promise<RequestRegistry['GET_CHART_OF_ACCOUNTS']['data']> {\n return this.request('GET_CHART_OF_ACCOUNTS', payload)\n }\n\n /** Fetch the chart of accounts as a hierarchical tree for a subsidiary. */\n getCoaTree(\n payload: RequestRegistry['GET_COA_TREE']['payload'],\n ): Promise<RequestRegistry['GET_COA_TREE']['data']> {\n return this.request('GET_COA_TREE', payload)\n }\n\n /** Fetch a simplified flat chart of accounts for a subsidiary. */\n getCoaFlatSimple(\n payload: RequestRegistry['GET_COA_FLAT_SIMPLE']['payload'],\n ): Promise<RequestRegistry['GET_COA_FLAT_SIMPLE']['data']> {\n return this.request('GET_COA_FLAT_SIMPLE', payload)\n }\n\n /** Fetch the flat chart of accounts grouped by account group. */\n getCoaGrouped(\n payload: RequestRegistry['GET_COA_GROUPED']['payload'],\n ): Promise<RequestRegistry['GET_COA_GROUPED']['data']> {\n return this.request('GET_COA_GROUPED', payload)\n }\n\n /** Fetch a single chart-of-accounts account by id within a subsidiary. */\n getCoaAccount(\n payload: RequestRegistry['GET_COA_ACCOUNT']['payload'],\n ): Promise<RequestRegistry['GET_COA_ACCOUNT']['data']> {\n return this.request('GET_COA_ACCOUNT', payload)\n }\n\n /** List the currencies available to a subsidiary's chart of accounts. */\n getSubsidiaryAvailableCurrencies(\n payload: RequestRegistry['GET_SUBSIDIARY_AVAILABLE_CURRENCIES']['payload'],\n ): Promise<RequestRegistry['GET_SUBSIDIARY_AVAILABLE_CURRENCIES']['data']> {\n return this.request('GET_SUBSIDIARY_AVAILABLE_CURRENCIES', payload)\n }\n\n /** Fetch accounts at the tenant level. */\n getAccounts(\n payload: RequestRegistry['GET_ACCOUNTS']['payload'],\n ): Promise<RequestRegistry['GET_ACCOUNTS']['data']> {\n return this.request('GET_ACCOUNTS', payload)\n }\n\n /** Fetch a single account by id. */\n getAccount(\n payload: RequestRegistry['GET_ACCOUNT']['payload'],\n ): Promise<RequestRegistry['GET_ACCOUNT']['data']> {\n return this.request('GET_ACCOUNT', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Accounting: exchange rates\n // ---------------------------------------------------------------------------\n\n /** Fetch currency conversion rates for a currency. */\n getConversionRates(\n payload: RequestRegistry['GET_CONVERSION_RATES']['payload'],\n ): Promise<RequestRegistry['GET_CONVERSION_RATES']['data']> {\n return this.request('GET_CONVERSION_RATES', payload)\n }\n\n /** Fetch the effective consolidation exchange rate. */\n getEffectiveExchangeRate(\n payload: RequestRegistry['GET_EFFECTIVE_EXCHANGE_RATE']['payload'],\n ): Promise<RequestRegistry['GET_EFFECTIVE_EXCHANGE_RATE']['data']> {\n return this.request('GET_EFFECTIVE_EXCHANGE_RATE', payload)\n }\n\n /** Fetch the exchange-rate period covering a given input date. */\n getExchangeRateByDate(\n payload: RequestRegistry['GET_EXCHANGE_RATE_BY_DATE']['payload'],\n ): Promise<RequestRegistry['GET_EXCHANGE_RATE_BY_DATE']['data']> {\n return this.request('GET_EXCHANGE_RATE_BY_DATE', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Accounting: dimensions\n // ---------------------------------------------------------------------------\n\n /** List accounting dimensions. */\n getDimensions(\n payload: RequestRegistry['GET_DIMENSIONS']['payload'],\n ): Promise<RequestRegistry['GET_DIMENSIONS']['data']> {\n return this.request('GET_DIMENSIONS', payload)\n }\n\n /** List values for accounting dimensions. */\n getDimensionValues(\n payload: RequestRegistry['GET_DIMENSION_VALUES']['payload'],\n ): Promise<RequestRegistry['GET_DIMENSION_VALUES']['data']> {\n return this.request('GET_DIMENSION_VALUES', payload)\n }\n\n /** List dimension values in hierarchical form. */\n getDimensionValuesHierarchical(\n payload: RequestRegistry['GET_DIMENSION_VALUES_HIERARCHICAL']['payload'],\n ): Promise<RequestRegistry['GET_DIMENSION_VALUES_HIERARCHICAL']['data']> {\n return this.request('GET_DIMENSION_VALUES_HIERARCHICAL', payload)\n }\n\n /** List account assignments for a dimension/account pair. */\n getDimensionAccountAssignments(\n payload: RequestRegistry['GET_DIMENSION_ACCOUNT_ASSIGNMENTS']['payload'],\n ): Promise<RequestRegistry['GET_DIMENSION_ACCOUNT_ASSIGNMENTS']['data']> {\n return this.request('GET_DIMENSION_ACCOUNT_ASSIGNMENTS', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Accounting: journal entries\n // ---------------------------------------------------------------------------\n\n /**\n * Fetch journal entries for a subsidiary, optionally filtered by date range.\n *\n * @example\n * ```ts\n * const entries = await bridge.getJournalEntries({\n * path: { subsidiary_id: ctx.subsidiaryId },\n * query: { from_date: '2026-01-01', to_date: '2026-03-31' },\n * })\n * ```\n */\n getJournalEntries(\n payload: RequestRegistry['GET_JOURNAL_ENTRIES']['payload'],\n ): Promise<RequestRegistry['GET_JOURNAL_ENTRIES']['data']> {\n return this.request('GET_JOURNAL_ENTRIES', payload)\n }\n\n /** Fetch journal entry lines for a subsidiary. */\n getJournalLines(\n payload: RequestRegistry['GET_JOURNAL_LINES']['payload'],\n ): Promise<RequestRegistry['GET_JOURNAL_LINES']['data']> {\n return this.request('GET_JOURNAL_LINES', payload)\n }\n\n /** Fetch a single journal entry by id within a subsidiary. */\n getJournalEntry(\n payload: RequestRegistry['GET_JOURNAL_ENTRY']['payload'],\n ): Promise<RequestRegistry['GET_JOURNAL_ENTRY']['data']> {\n return this.request('GET_JOURNAL_ENTRY', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Activity: period instances\n // ---------------------------------------------------------------------------\n\n /** List accounting period instances. */\n getPeriods(\n payload: RequestRegistry['GET_PERIODS']['payload'],\n ): Promise<RequestRegistry['GET_PERIODS']['data']> {\n return this.request('GET_PERIODS', payload)\n }\n\n /** Fetch a single period instance by id. */\n getPeriodInstance(\n payload: RequestRegistry['GET_PERIOD_INSTANCE']['payload'],\n ): Promise<RequestRegistry['GET_PERIOD_INSTANCE']['data']> {\n return this.request('GET_PERIOD_INSTANCE', payload)\n }\n\n /** Fetch a period instance by its display slug (e.g. `\"mar-2026\"`). */\n getPeriodInstanceBySlug(\n payload: RequestRegistry['GET_PERIOD_INSTANCE_BY_SLUG']['payload'],\n ): Promise<RequestRegistry['GET_PERIOD_INSTANCE_BY_SLUG']['data']> {\n return this.request('GET_PERIOD_INSTANCE_BY_SLUG', payload)\n }\n\n /** Fetch the close-progress breakdown for a period (by slug). */\n getPeriodProgressBreakdown(\n payload: RequestRegistry['GET_PERIOD_PROGRESS_BREAKDOWN']['payload'],\n ): Promise<RequestRegistry['GET_PERIOD_PROGRESS_BREAKDOWN']['data']> {\n return this.request('GET_PERIOD_PROGRESS_BREAKDOWN', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Activity: activity definitions\n // ---------------------------------------------------------------------------\n\n /** List activity definitions. */\n getActivityDefinitions(\n payload: RequestRegistry['GET_ACTIVITY_DEFINITIONS']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_DEFINITIONS']['data']> {\n return this.request('GET_ACTIVITY_DEFINITIONS', payload)\n }\n\n /** Fetch a single activity definition by id. */\n getActivityDefinition(\n payload: RequestRegistry['GET_ACTIVITY_DEFINITION']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_DEFINITION']['data']> {\n return this.request('GET_ACTIVITY_DEFINITION', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Activity: activity instances\n // ---------------------------------------------------------------------------\n\n /** List activity instances. */\n getActivityInstances(\n payload: RequestRegistry['GET_ACTIVITY_INSTANCES']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_INSTANCES']['data']> {\n return this.request('GET_ACTIVITY_INSTANCES', payload)\n }\n\n /** Fetch a single activity instance by id. */\n getActivityInstance(\n payload: RequestRegistry['GET_ACTIVITY_INSTANCE']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_INSTANCE']['data']> {\n return this.request('GET_ACTIVITY_INSTANCE', payload)\n }\n\n /** Fetch an activity instance for a given period + activity definition. */\n getActivityInstanceByPeriod(\n payload: RequestRegistry['GET_ACTIVITY_INSTANCE_BY_PERIOD']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_INSTANCE_BY_PERIOD']['data']> {\n return this.request('GET_ACTIVITY_INSTANCE_BY_PERIOD', payload)\n }\n\n /** List task instances for an activity instance. */\n getActivityInstanceTasks(\n payload: RequestRegistry['GET_ACTIVITY_INSTANCE_TASKS']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_INSTANCE_TASKS']['data']> {\n return this.request('GET_ACTIVITY_INSTANCE_TASKS', payload)\n }\n\n /** List task instances for an activity in a given period. */\n getActivityPeriodTasks(\n payload: RequestRegistry['GET_ACTIVITY_PERIOD_TASKS']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_PERIOD_TASKS']['data']> {\n return this.request('GET_ACTIVITY_PERIOD_TASKS', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Activity: task definitions\n // ---------------------------------------------------------------------------\n\n /** List task definitions. */\n getTaskDefinitions(\n payload: RequestRegistry['GET_TASK_DEFINITIONS']['payload'],\n ): Promise<RequestRegistry['GET_TASK_DEFINITIONS']['data']> {\n return this.request('GET_TASK_DEFINITIONS', payload)\n }\n\n /** Fetch a single task definition by id. */\n getTaskDefinition(\n payload: RequestRegistry['GET_TASK_DEFINITION']['payload'],\n ): Promise<RequestRegistry['GET_TASK_DEFINITION']['data']> {\n return this.request('GET_TASK_DEFINITION', payload)\n }\n\n /** Create a task definition. */\n createTaskDefinition(\n payload: RequestRegistry['CREATE_TASK_DEFINITION']['payload'],\n ): Promise<RequestRegistry['CREATE_TASK_DEFINITION']['data']> {\n return this.request('CREATE_TASK_DEFINITION', payload)\n }\n\n /** Update a task definition by id. */\n updateTaskDefinition(\n payload: RequestRegistry['UPDATE_TASK_DEFINITION']['payload'],\n ): Promise<RequestRegistry['UPDATE_TASK_DEFINITION']['data']> {\n return this.request('UPDATE_TASK_DEFINITION', payload)\n }\n\n /** Query task definitions by filter. */\n getTaskDefinitionsByFilter(\n payload: RequestRegistry['GET_TASK_DEFINITIONS_BY_FILTER']['payload'],\n ): Promise<RequestRegistry['GET_TASK_DEFINITIONS_BY_FILTER']['data']> {\n return this.request('GET_TASK_DEFINITIONS_BY_FILTER', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Activity: task instances\n // ---------------------------------------------------------------------------\n\n /** List task instances. */\n getTaskInstances(\n payload: RequestRegistry['GET_TASK_INSTANCES']['payload'],\n ): Promise<RequestRegistry['GET_TASK_INSTANCES']['data']> {\n return this.request('GET_TASK_INSTANCES', payload)\n }\n\n /** Fetch a single task instance by id. */\n getTaskInstance(\n payload: RequestRegistry['GET_TASK_INSTANCE']['payload'],\n ): Promise<RequestRegistry['GET_TASK_INSTANCE']['data']> {\n return this.request('GET_TASK_INSTANCE', payload)\n }\n\n /**\n * Submit a Close-Management task output. This is the **only write path** back\n * into Nominal — Vibe Apps never write Nominal data directly.\n *\n * @example\n * ```ts\n * // `body` carries the task-specific output shape.\n * await bridge.postTaskOutput({\n * path: { task_instance_id: 'task-1' },\n * body: {},\n * })\n * ```\n */\n postTaskOutput(\n payload: RequestRegistry['POST_TASK_OUTPUT']['payload'],\n ): Promise<RequestRegistry['POST_TASK_OUTPUT']['data']> {\n return this.request('POST_TASK_OUTPUT', payload)\n }\n\n /** Query task instances by filter. */\n getTaskInstancesByFilter(\n payload: RequestRegistry['GET_TASK_INSTANCES_BY_FILTER']['payload'],\n ): Promise<RequestRegistry['GET_TASK_INSTANCES_BY_FILTER']['data']> {\n return this.request('GET_TASK_INSTANCES_BY_FILTER', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Audit trail\n // ---------------------------------------------------------------------------\n\n /** List audit-trail events. */\n getAuditEvents(\n payload: RequestRegistry['GET_AUDIT_EVENTS']['payload'],\n ): Promise<RequestRegistry['GET_AUDIT_EVENTS']['data']> {\n return this.request('GET_AUDIT_EVENTS', payload)\n }\n\n /** List audit-trail events for a specific entity. */\n getEntityAuditEvents(\n payload: RequestRegistry['GET_ENTITY_AUDIT_EVENTS']['payload'],\n ): Promise<RequestRegistry['GET_ENTITY_AUDIT_EVENTS']['data']> {\n return this.request('GET_ENTITY_AUDIT_EVENTS', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Period manager: fiscal calendars\n // ---------------------------------------------------------------------------\n\n /** List fiscal calendars for a subsidiary. */\n getFiscalCalendars(\n payload: RequestRegistry['GET_FISCAL_CALENDARS']['payload'],\n ): Promise<RequestRegistry['GET_FISCAL_CALENDARS']['data']> {\n return this.request('GET_FISCAL_CALENDARS', payload)\n }\n\n /** Fetch a single fiscal calendar by id. */\n getFiscalCalendar(\n payload: RequestRegistry['GET_FISCAL_CALENDAR']['payload'],\n ): Promise<RequestRegistry['GET_FISCAL_CALENDAR']['data']> {\n return this.request('GET_FISCAL_CALENDAR', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Tenancy\n // ---------------------------------------------------------------------------\n\n /** List subsidiaries for the tenant. */\n getSubsidiaries(\n payload: RequestRegistry['GET_SUBSIDIARIES']['payload'],\n ): Promise<RequestRegistry['GET_SUBSIDIARIES']['data']> {\n return this.request('GET_SUBSIDIARIES', payload)\n }\n\n /** Fetch a single subsidiary by id. */\n getSubsidiary(\n payload: RequestRegistry['GET_SUBSIDIARY']['payload'],\n ): Promise<RequestRegistry['GET_SUBSIDIARY']['data']> {\n return this.request('GET_SUBSIDIARY', payload)\n }\n\n /** List parent currencies for a subsidiary. */\n getSubsidiaryParentCurrencies(\n payload: RequestRegistry['GET_SUBSIDIARY_PARENT_CURRENCIES']['payload'],\n ): Promise<RequestRegistry['GET_SUBSIDIARY_PARENT_CURRENCIES']['data']> {\n return this.request('GET_SUBSIDIARY_PARENT_CURRENCIES', payload)\n }\n\n /** List users for the tenant. */\n getTenantUsers(\n payload: RequestRegistry['GET_TENANT_USERS']['payload'],\n ): Promise<RequestRegistry['GET_TENANT_USERS']['data']> {\n return this.request('GET_TENANT_USERS', payload)\n }\n\n /**\n * Uploads a file through the host. Converts the `File` to an `ArrayBuffer`\n * before sending — sandboxed iframes cannot pass `File` handles across\n * windows. Resolves once Nominal has stored the file.\n *\n * @example\n * ```ts\n * const input = document.querySelector<HTMLInputElement>('#file')!\n * const file = input.files![0]\n * const result = await bridge.upload(file, {\n * entityType: 'JOURNAL_ENTRY',\n * entityId: '123',\n * onProgress: (p) => console.log(`${p.progress}%`),\n * })\n * // result.attachmentId, result.name\n * ```\n */\n async upload(\n file: File,\n options: UploadOptions,\n ): Promise<RequestRegistry['UPLOAD_FILE']['data']> {\n const buffer = await file.arrayBuffer()\n const payload: RequestRegistry['UPLOAD_FILE']['payload'] = {\n buffer,\n fileName: file.name,\n fileType: file.type,\n entityType: options.entityType,\n entityId: options.entityId,\n }\n const onProgress = options.onProgress\n ? (p: unknown): void => options.onProgress!(p as RequestRegistry['UPLOAD_FILE']['progress'])\n : undefined\n return this.request('UPLOAD_FILE', payload, onProgress)\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../protocol-types/dist/index.js","../package.json","../src/version.ts","../src/data-methods.ts"],"sourcesContent":["// src/subroute.ts\nfunction normalizeSubroute(subroute) {\n const normalized = subroute.startsWith(\"/\") ? subroute : `/${subroute}`;\n const path = normalized.split(/[?#]/)[0];\n let decoded = path;\n let prev;\n do {\n prev = decoded;\n decoded = decoded.replace(/%25/gi, \"%\").replace(/%2e/gi, \".\").replace(/%2f/gi, \"/\");\n } while (decoded !== prev);\n if (decoded.split(\"/\").some((segment) => segment === \"..\")) return null;\n return normalized;\n}\n\n// src/protocol.ts\nvar PROTOCOL_ID = \"nominal-vibe-bridge\";\nvar PROTOCOL_VERSION = 2;\nvar BRIDGE_KINDS = [\"request\", \"response\", \"push\", \"command\", \"progress\"];\nvar CORRELATED_KINDS = [\"request\", \"response\", \"progress\"];\nvar BRIDGE_KINDS_SET = new Set(BRIDGE_KINDS);\nvar CORRELATED_KINDS_SET = new Set(CORRELATED_KINDS);\nfunction isBridgeMessage(data) {\n if (typeof data !== \"object\" || data === null) return false;\n const d = data;\n if (d.__protocol !== PROTOCOL_ID) return false;\n if (d.__version !== PROTOCOL_VERSION) return false;\n if (typeof d.kind !== \"string\" || !BRIDGE_KINDS_SET.has(d.kind)) return false;\n if (typeof d.type !== \"string\") return false;\n if (CORRELATED_KINDS_SET.has(d.kind) && typeof d.requestId !== \"string\") return false;\n return true;\n}\n\n// src/errors.ts\nvar BRIDGE_ERROR_BRAND = /* @__PURE__ */ Symbol.for(\"@nominalso/vibe-bridge:BridgeError\");\nvar HTTP_BRIDGE_ERROR_BRAND = /* @__PURE__ */ Symbol.for(\"@nominalso/vibe-bridge:HttpBridgeError\");\nvar BridgeError = class extends Error {\n constructor(code, message) {\n super(message);\n this.code = code;\n this.name = \"BridgeError\";\n }\n /**\n * Cross-realm-safe type guard. Prefer this over `instanceof BridgeError` when\n * an error may have been thrown by a differently-built copy of the SDK (e.g.\n * server bundle vs client bundle) — it matches on a process-global brand\n * rather than class identity.\n */\n static isBridgeError(err) {\n return typeof err === \"object\" && err !== null && err[BRIDGE_ERROR_BRAND] === true;\n }\n};\nObject.defineProperty(BridgeError.prototype, BRIDGE_ERROR_BRAND, {\n value: true,\n enumerable: false\n});\nvar HttpBridgeError = class extends BridgeError {\n constructor(status, message) {\n super(\"REQUEST_FAILED\", message);\n this.status = status;\n this.name = \"HttpBridgeError\";\n }\n /**\n * Cross-realm-safe type guard (see {@link BridgeError.isBridgeError}). Returns\n * `true` only for `HttpBridgeError` instances, not plain `BridgeError`s.\n */\n static isHttpBridgeError(err) {\n return typeof err === \"object\" && err !== null && err[HTTP_BRIDGE_ERROR_BRAND] === true;\n }\n};\nObject.defineProperty(HttpBridgeError.prototype, HTTP_BRIDGE_ERROR_BRAND, {\n value: true,\n enumerable: false\n});\n\n// src/origins.ts\nfunction isOriginPattern(entry) {\n return entry.includes(\"*\");\n}\nvar patternCache = /* @__PURE__ */ new Map();\nfunction patternToRegExp(pattern) {\n const cached = patternCache.get(pattern);\n if (cached) return cached;\n const escaped = pattern.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const body = escaped.replace(/\\\\\\*/g, \"[^./:@?#\\\\s]+\");\n const compiled = new RegExp(`^${body}$`);\n patternCache.set(pattern, compiled);\n return compiled;\n}\nfunction matchesOrigin(origin, entry) {\n if (!isOriginPattern(entry)) return origin === entry;\n return patternToRegExp(entry).test(origin);\n}\nfunction isOriginAllowed(origin, allowlist, { allowPatterns }) {\n for (const entry of allowlist) {\n if (isOriginPattern(entry)) {\n if (allowPatterns && matchesOrigin(origin, entry)) return true;\n } else if (origin === entry) {\n return true;\n }\n }\n return false;\n}\nexport {\n BridgeError,\n HttpBridgeError,\n PROTOCOL_ID,\n PROTOCOL_VERSION,\n isBridgeMessage,\n isOriginAllowed,\n isOriginPattern,\n matchesOrigin,\n normalizeSubroute\n};\n","{\n \"name\": \"@nominalso/vibe-bridge\",\n \"version\": \"0.7.0\",\n \"description\": \"Iframe-side SDK for building Nominal Vibe Apps — connects an embedded app to its Nominal host over a typed postMessage bridge (context, data fetch, file upload, subroute deep-linking). Safe to import from SSR, React Server Components, and edge/Worker runtimes.\",\n \"license\": \"UNLICENSED\",\n \"homepage\": \"https://github.com/nominalso/vibe-apps-sdk#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/nominalso/vibe-apps-sdk/issues\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"github:nominalso/vibe-apps-sdk\",\n \"directory\": \"packages/bridge\"\n },\n \"type\": \"module\",\n \"sideEffects\": false,\n \"types\": \"./dist/index.d.ts\",\n \"main\": \"./dist/index.browser.cjs\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"react-server\": \"./dist/index.server.js\",\n \"workerd\": \"./dist/index.server.js\",\n \"worker\": \"./dist/index.server.js\",\n \"edge-light\": \"./dist/index.server.js\",\n \"deno\": \"./dist/index.server.js\",\n \"browser\": {\n \"import\": \"./dist/index.browser.js\",\n \"require\": \"./dist/index.browser.cjs\"\n },\n \"default\": {\n \"import\": \"./dist/index.browser.js\",\n \"require\": \"./dist/index.browser.cjs\"\n }\n },\n \"./server\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.server.js\",\n \"require\": \"./dist/index.server.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"files\": [\n \"dist\",\n \"docs\",\n \"AGENTS.md\",\n \"llms.txt\"\n ],\n \"publishConfig\": {\n \"registry\": \"https://registry.npmjs.org/\",\n \"access\": \"public\"\n },\n \"scripts\": {\n \"clean\": \"rm -rf dist node_modules\",\n \"build\": \"rm -rf dist && tsup\",\n \"lint\": \"eslint src\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"optionalDependencies\": {\n \"posthog-js\": \"^1.393.5\"\n },\n \"devDependencies\": {\n \"@nominalso/vibe-api-types\": \"workspace:*\",\n \"@nominalso/vibe-protocol-types\": \"workspace:*\"\n }\n}\n","import { version } from '../package.json'\n\n/**\n * Published version of this package (`@nominalso/vibe-bridge`), sent to the host\n * in the `CONNECT` handshake. Import-safe from any environment.\n */\nexport const BRIDGE_VERSION: string = version\n","import type { RequestRegistry } from '@nominalso/vibe-protocol-types'\n\nexport interface UploadOptions {\n /** Domain entity the file attaches to, e.g. `'JOURNAL_ENTRY'`. */\n entityType: string\n /** Id of the entity the file attaches to, when applicable. */\n entityId?: string | number\n /** Called with incremental progress (`0`–`100`) while the upload streams. */\n onProgress?: (p: RequestRegistry['UPLOAD_FILE']['progress']) => void\n}\n\n/**\n * The typed Nominal data methods (~46) plus {@link BridgeDataMethods.upload},\n * factored onto a base class so {@link VibeAppBridge} stays focused on\n * connection/transport. Each method is a thin typed wrapper over `request()`;\n * `VibeAppBridge` provides the concrete `request` implementation.\n */\nexport abstract class BridgeDataMethods {\n /**\n * Low-level typed request for **any** operation in {@link RequestRegistry} —\n * implemented by {@link VibeAppBridge}. The named methods below wrap this.\n */\n abstract request<K extends keyof RequestRegistry>(\n type: K,\n payload: RequestRegistry[K]['payload'],\n onProgress?: (payload: unknown) => void,\n ): Promise<RequestRegistry[K]['data']>\n\n // ---------------------------------------------------------------------------\n // Operations — Accounting: chart of accounts\n //\n // Each method is a typed wrapper over `request('<OP>', payload)`. The payload\n // and return types come straight from the Nominal API (`RequestRegistry`).\n // For any operation without a named method, call `request('<OP>', payload)`.\n // ---------------------------------------------------------------------------\n\n /**\n * Fetch the flat chart of accounts for a subsidiary.\n *\n * @example\n * ```ts\n * const ctx = await bridge.connect()\n * const accounts = await bridge.getChartOfAccounts({\n * path: { subsidiary_id: ctx.subsidiaryId },\n * })\n * ```\n */\n getChartOfAccounts(\n payload: RequestRegistry['GET_CHART_OF_ACCOUNTS']['payload'],\n ): Promise<RequestRegistry['GET_CHART_OF_ACCOUNTS']['data']> {\n return this.request('GET_CHART_OF_ACCOUNTS', payload)\n }\n\n /** Fetch the chart of accounts as a hierarchical tree for a subsidiary. */\n getCoaTree(\n payload: RequestRegistry['GET_COA_TREE']['payload'],\n ): Promise<RequestRegistry['GET_COA_TREE']['data']> {\n return this.request('GET_COA_TREE', payload)\n }\n\n /** Fetch a simplified flat chart of accounts for a subsidiary. */\n getCoaFlatSimple(\n payload: RequestRegistry['GET_COA_FLAT_SIMPLE']['payload'],\n ): Promise<RequestRegistry['GET_COA_FLAT_SIMPLE']['data']> {\n return this.request('GET_COA_FLAT_SIMPLE', payload)\n }\n\n /** Fetch the flat chart of accounts grouped by account group. */\n getCoaGrouped(\n payload: RequestRegistry['GET_COA_GROUPED']['payload'],\n ): Promise<RequestRegistry['GET_COA_GROUPED']['data']> {\n return this.request('GET_COA_GROUPED', payload)\n }\n\n /** Fetch a single chart-of-accounts account by id within a subsidiary. */\n getCoaAccount(\n payload: RequestRegistry['GET_COA_ACCOUNT']['payload'],\n ): Promise<RequestRegistry['GET_COA_ACCOUNT']['data']> {\n return this.request('GET_COA_ACCOUNT', payload)\n }\n\n /** List the currencies available to a subsidiary's chart of accounts. */\n getSubsidiaryAvailableCurrencies(\n payload: RequestRegistry['GET_SUBSIDIARY_AVAILABLE_CURRENCIES']['payload'],\n ): Promise<RequestRegistry['GET_SUBSIDIARY_AVAILABLE_CURRENCIES']['data']> {\n return this.request('GET_SUBSIDIARY_AVAILABLE_CURRENCIES', payload)\n }\n\n /** Fetch accounts at the tenant level. */\n getAccounts(\n payload: RequestRegistry['GET_ACCOUNTS']['payload'],\n ): Promise<RequestRegistry['GET_ACCOUNTS']['data']> {\n return this.request('GET_ACCOUNTS', payload)\n }\n\n /** Fetch a single account by id. */\n getAccount(\n payload: RequestRegistry['GET_ACCOUNT']['payload'],\n ): Promise<RequestRegistry['GET_ACCOUNT']['data']> {\n return this.request('GET_ACCOUNT', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Accounting: exchange rates\n // ---------------------------------------------------------------------------\n\n /** Fetch currency conversion rates for a currency. */\n getConversionRates(\n payload: RequestRegistry['GET_CONVERSION_RATES']['payload'],\n ): Promise<RequestRegistry['GET_CONVERSION_RATES']['data']> {\n return this.request('GET_CONVERSION_RATES', payload)\n }\n\n /** Fetch the effective consolidation exchange rate. */\n getEffectiveExchangeRate(\n payload: RequestRegistry['GET_EFFECTIVE_EXCHANGE_RATE']['payload'],\n ): Promise<RequestRegistry['GET_EFFECTIVE_EXCHANGE_RATE']['data']> {\n return this.request('GET_EFFECTIVE_EXCHANGE_RATE', payload)\n }\n\n /** Fetch the exchange-rate period covering a given input date. */\n getExchangeRateByDate(\n payload: RequestRegistry['GET_EXCHANGE_RATE_BY_DATE']['payload'],\n ): Promise<RequestRegistry['GET_EXCHANGE_RATE_BY_DATE']['data']> {\n return this.request('GET_EXCHANGE_RATE_BY_DATE', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Accounting: dimensions\n // ---------------------------------------------------------------------------\n\n /** List accounting dimensions. */\n getDimensions(\n payload: RequestRegistry['GET_DIMENSIONS']['payload'],\n ): Promise<RequestRegistry['GET_DIMENSIONS']['data']> {\n return this.request('GET_DIMENSIONS', payload)\n }\n\n /** List values for accounting dimensions. */\n getDimensionValues(\n payload: RequestRegistry['GET_DIMENSION_VALUES']['payload'],\n ): Promise<RequestRegistry['GET_DIMENSION_VALUES']['data']> {\n return this.request('GET_DIMENSION_VALUES', payload)\n }\n\n /** List dimension values in hierarchical form. */\n getDimensionValuesHierarchical(\n payload: RequestRegistry['GET_DIMENSION_VALUES_HIERARCHICAL']['payload'],\n ): Promise<RequestRegistry['GET_DIMENSION_VALUES_HIERARCHICAL']['data']> {\n return this.request('GET_DIMENSION_VALUES_HIERARCHICAL', payload)\n }\n\n /** List account assignments for a dimension/account pair. */\n getDimensionAccountAssignments(\n payload: RequestRegistry['GET_DIMENSION_ACCOUNT_ASSIGNMENTS']['payload'],\n ): Promise<RequestRegistry['GET_DIMENSION_ACCOUNT_ASSIGNMENTS']['data']> {\n return this.request('GET_DIMENSION_ACCOUNT_ASSIGNMENTS', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Accounting: journal entries\n // ---------------------------------------------------------------------------\n\n /**\n * Fetch journal entries for a subsidiary, optionally filtered by date range.\n *\n * @example\n * ```ts\n * const entries = await bridge.getJournalEntries({\n * path: { subsidiary_id: ctx.subsidiaryId },\n * query: { from_date: '2026-01-01', to_date: '2026-03-31' },\n * })\n * ```\n */\n getJournalEntries(\n payload: RequestRegistry['GET_JOURNAL_ENTRIES']['payload'],\n ): Promise<RequestRegistry['GET_JOURNAL_ENTRIES']['data']> {\n return this.request('GET_JOURNAL_ENTRIES', payload)\n }\n\n /** Fetch journal entry lines for a subsidiary. */\n getJournalLines(\n payload: RequestRegistry['GET_JOURNAL_LINES']['payload'],\n ): Promise<RequestRegistry['GET_JOURNAL_LINES']['data']> {\n return this.request('GET_JOURNAL_LINES', payload)\n }\n\n /** Fetch a single journal entry by id within a subsidiary. */\n getJournalEntry(\n payload: RequestRegistry['GET_JOURNAL_ENTRY']['payload'],\n ): Promise<RequestRegistry['GET_JOURNAL_ENTRY']['data']> {\n return this.request('GET_JOURNAL_ENTRY', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Activity: period instances\n // ---------------------------------------------------------------------------\n\n /** List accounting period instances. */\n getPeriods(\n payload: RequestRegistry['GET_PERIODS']['payload'],\n ): Promise<RequestRegistry['GET_PERIODS']['data']> {\n return this.request('GET_PERIODS', payload)\n }\n\n /** Fetch a single period instance by id. */\n getPeriodInstance(\n payload: RequestRegistry['GET_PERIOD_INSTANCE']['payload'],\n ): Promise<RequestRegistry['GET_PERIOD_INSTANCE']['data']> {\n return this.request('GET_PERIOD_INSTANCE', payload)\n }\n\n /** Fetch a period instance by its display slug (e.g. `\"mar-2026\"`). */\n getPeriodInstanceBySlug(\n payload: RequestRegistry['GET_PERIOD_INSTANCE_BY_SLUG']['payload'],\n ): Promise<RequestRegistry['GET_PERIOD_INSTANCE_BY_SLUG']['data']> {\n return this.request('GET_PERIOD_INSTANCE_BY_SLUG', payload)\n }\n\n /** Fetch the close-progress breakdown for a period (by slug). */\n getPeriodProgressBreakdown(\n payload: RequestRegistry['GET_PERIOD_PROGRESS_BREAKDOWN']['payload'],\n ): Promise<RequestRegistry['GET_PERIOD_PROGRESS_BREAKDOWN']['data']> {\n return this.request('GET_PERIOD_PROGRESS_BREAKDOWN', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Activity: activity definitions\n // ---------------------------------------------------------------------------\n\n /** List activity definitions. */\n getActivityDefinitions(\n payload: RequestRegistry['GET_ACTIVITY_DEFINITIONS']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_DEFINITIONS']['data']> {\n return this.request('GET_ACTIVITY_DEFINITIONS', payload)\n }\n\n /** Fetch a single activity definition by id. */\n getActivityDefinition(\n payload: RequestRegistry['GET_ACTIVITY_DEFINITION']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_DEFINITION']['data']> {\n return this.request('GET_ACTIVITY_DEFINITION', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Activity: activity instances\n // ---------------------------------------------------------------------------\n\n /** List activity instances. */\n getActivityInstances(\n payload: RequestRegistry['GET_ACTIVITY_INSTANCES']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_INSTANCES']['data']> {\n return this.request('GET_ACTIVITY_INSTANCES', payload)\n }\n\n /** Fetch a single activity instance by id. */\n getActivityInstance(\n payload: RequestRegistry['GET_ACTIVITY_INSTANCE']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_INSTANCE']['data']> {\n return this.request('GET_ACTIVITY_INSTANCE', payload)\n }\n\n /** Fetch an activity instance for a given period + activity definition. */\n getActivityInstanceByPeriod(\n payload: RequestRegistry['GET_ACTIVITY_INSTANCE_BY_PERIOD']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_INSTANCE_BY_PERIOD']['data']> {\n return this.request('GET_ACTIVITY_INSTANCE_BY_PERIOD', payload)\n }\n\n /** List task instances for an activity instance. */\n getActivityInstanceTasks(\n payload: RequestRegistry['GET_ACTIVITY_INSTANCE_TASKS']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_INSTANCE_TASKS']['data']> {\n return this.request('GET_ACTIVITY_INSTANCE_TASKS', payload)\n }\n\n /** List task instances for an activity in a given period. */\n getActivityPeriodTasks(\n payload: RequestRegistry['GET_ACTIVITY_PERIOD_TASKS']['payload'],\n ): Promise<RequestRegistry['GET_ACTIVITY_PERIOD_TASKS']['data']> {\n return this.request('GET_ACTIVITY_PERIOD_TASKS', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Activity: task definitions\n // ---------------------------------------------------------------------------\n\n /** List task definitions. */\n getTaskDefinitions(\n payload: RequestRegistry['GET_TASK_DEFINITIONS']['payload'],\n ): Promise<RequestRegistry['GET_TASK_DEFINITIONS']['data']> {\n return this.request('GET_TASK_DEFINITIONS', payload)\n }\n\n /** Fetch a single task definition by id. */\n getTaskDefinition(\n payload: RequestRegistry['GET_TASK_DEFINITION']['payload'],\n ): Promise<RequestRegistry['GET_TASK_DEFINITION']['data']> {\n return this.request('GET_TASK_DEFINITION', payload)\n }\n\n /** Create a task definition. */\n createTaskDefinition(\n payload: RequestRegistry['CREATE_TASK_DEFINITION']['payload'],\n ): Promise<RequestRegistry['CREATE_TASK_DEFINITION']['data']> {\n return this.request('CREATE_TASK_DEFINITION', payload)\n }\n\n /** Update a task definition by id. */\n updateTaskDefinition(\n payload: RequestRegistry['UPDATE_TASK_DEFINITION']['payload'],\n ): Promise<RequestRegistry['UPDATE_TASK_DEFINITION']['data']> {\n return this.request('UPDATE_TASK_DEFINITION', payload)\n }\n\n /** Query task definitions by filter. */\n getTaskDefinitionsByFilter(\n payload: RequestRegistry['GET_TASK_DEFINITIONS_BY_FILTER']['payload'],\n ): Promise<RequestRegistry['GET_TASK_DEFINITIONS_BY_FILTER']['data']> {\n return this.request('GET_TASK_DEFINITIONS_BY_FILTER', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Activity: task instances\n // ---------------------------------------------------------------------------\n\n /** List task instances. */\n getTaskInstances(\n payload: RequestRegistry['GET_TASK_INSTANCES']['payload'],\n ): Promise<RequestRegistry['GET_TASK_INSTANCES']['data']> {\n return this.request('GET_TASK_INSTANCES', payload)\n }\n\n /** Fetch a single task instance by id. */\n getTaskInstance(\n payload: RequestRegistry['GET_TASK_INSTANCE']['payload'],\n ): Promise<RequestRegistry['GET_TASK_INSTANCE']['data']> {\n return this.request('GET_TASK_INSTANCE', payload)\n }\n\n /**\n * Submit a Close-Management task output. This is the **only write path** back\n * into Nominal — Vibe Apps never write Nominal data directly.\n *\n * @example\n * ```ts\n * // `body` carries the task-specific output shape.\n * await bridge.postTaskOutput({\n * path: { task_instance_id: 'task-1' },\n * body: {},\n * })\n * ```\n */\n postTaskOutput(\n payload: RequestRegistry['POST_TASK_OUTPUT']['payload'],\n ): Promise<RequestRegistry['POST_TASK_OUTPUT']['data']> {\n return this.request('POST_TASK_OUTPUT', payload)\n }\n\n /** Query task instances by filter. */\n getTaskInstancesByFilter(\n payload: RequestRegistry['GET_TASK_INSTANCES_BY_FILTER']['payload'],\n ): Promise<RequestRegistry['GET_TASK_INSTANCES_BY_FILTER']['data']> {\n return this.request('GET_TASK_INSTANCES_BY_FILTER', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Audit trail\n // ---------------------------------------------------------------------------\n\n /** List audit-trail events. */\n getAuditEvents(\n payload: RequestRegistry['GET_AUDIT_EVENTS']['payload'],\n ): Promise<RequestRegistry['GET_AUDIT_EVENTS']['data']> {\n return this.request('GET_AUDIT_EVENTS', payload)\n }\n\n /** List audit-trail events for a specific entity. */\n getEntityAuditEvents(\n payload: RequestRegistry['GET_ENTITY_AUDIT_EVENTS']['payload'],\n ): Promise<RequestRegistry['GET_ENTITY_AUDIT_EVENTS']['data']> {\n return this.request('GET_ENTITY_AUDIT_EVENTS', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Period manager: fiscal calendars\n // ---------------------------------------------------------------------------\n\n /** List fiscal calendars for a subsidiary. */\n getFiscalCalendars(\n payload: RequestRegistry['GET_FISCAL_CALENDARS']['payload'],\n ): Promise<RequestRegistry['GET_FISCAL_CALENDARS']['data']> {\n return this.request('GET_FISCAL_CALENDARS', payload)\n }\n\n /** Fetch a single fiscal calendar by id. */\n getFiscalCalendar(\n payload: RequestRegistry['GET_FISCAL_CALENDAR']['payload'],\n ): Promise<RequestRegistry['GET_FISCAL_CALENDAR']['data']> {\n return this.request('GET_FISCAL_CALENDAR', payload)\n }\n\n // ---------------------------------------------------------------------------\n // Operations — Tenancy\n // ---------------------------------------------------------------------------\n\n /** List subsidiaries for the tenant. */\n getSubsidiaries(\n payload: RequestRegistry['GET_SUBSIDIARIES']['payload'],\n ): Promise<RequestRegistry['GET_SUBSIDIARIES']['data']> {\n return this.request('GET_SUBSIDIARIES', payload)\n }\n\n /** Fetch a single subsidiary by id. */\n getSubsidiary(\n payload: RequestRegistry['GET_SUBSIDIARY']['payload'],\n ): Promise<RequestRegistry['GET_SUBSIDIARY']['data']> {\n return this.request('GET_SUBSIDIARY', payload)\n }\n\n /** List parent currencies for a subsidiary. */\n getSubsidiaryParentCurrencies(\n payload: RequestRegistry['GET_SUBSIDIARY_PARENT_CURRENCIES']['payload'],\n ): Promise<RequestRegistry['GET_SUBSIDIARY_PARENT_CURRENCIES']['data']> {\n return this.request('GET_SUBSIDIARY_PARENT_CURRENCIES', payload)\n }\n\n /** List users for the tenant. */\n getTenantUsers(\n payload: RequestRegistry['GET_TENANT_USERS']['payload'],\n ): Promise<RequestRegistry['GET_TENANT_USERS']['data']> {\n return this.request('GET_TENANT_USERS', payload)\n }\n\n /**\n * Uploads a file through the host. Converts the `File` to an `ArrayBuffer`\n * before sending — sandboxed iframes cannot pass `File` handles across\n * windows. Resolves once Nominal has stored the file.\n *\n * @example\n * ```ts\n * const input = document.querySelector<HTMLInputElement>('#file')!\n * const file = input.files![0]\n * const result = await bridge.upload(file, {\n * entityType: 'JOURNAL_ENTRY',\n * entityId: '123',\n * onProgress: (p) => console.log(`${p.progress}%`),\n * })\n * // result.attachmentId, result.name\n * ```\n */\n async upload(\n file: File,\n options: UploadOptions,\n ): Promise<RequestRegistry['UPLOAD_FILE']['data']> {\n const buffer = await file.arrayBuffer()\n const payload: RequestRegistry['UPLOAD_FILE']['payload'] = {\n buffer,\n fileName: file.name,\n fileType: file.type,\n entityType: options.entityType,\n entityId: options.entityId,\n }\n const onProgress = options.onProgress\n ? (p: unknown): void => options.onProgress!(p as RequestRegistry['UPLOAD_FILE']['progress'])\n : undefined\n return this.request('UPLOAD_FILE', payload, onProgress)\n }\n}\n"],"mappings":"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","names":[]}
@@ -136,7 +136,7 @@ function isOriginAllowed(origin, allowlist, { allowPatterns }) {
136
136
  }
137
137
 
138
138
  // package.json
139
- var version = "0.6.0";
139
+ var version = "0.7.0";
140
140
 
141
141
  // src/version.ts
142
142
  var BRIDGE_VERSION = version;