Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@
},
"peerDependencies": {
"@assembly-js/app-bridge": "^1.1.1",
"@assembly-js/node-sdk": "^3.19.1",
"pino": ">=9",
"pino-pretty": ">=10",
"react": ">=18",
Expand Down
42 changes: 29 additions & 13 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions src/client/base-resource.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { AssemblyAPI } from "@assembly-js/node-sdk";
import pRetry from "p-retry";
import type { AssemblySDK } from "src/sdk-init";
import type { z } from "zod";

import type { RetryOptions } from "./options";
Expand All @@ -17,7 +17,7 @@ const isRetryableError = (error: unknown): boolean => {
* Wraps an SDK instance with a Proxy that retries every method call
* on 429/5xx errors using p-retry.
*/
const withRetry = (sdk: AssemblyAPI, retry: RetryOptions): AssemblyAPI =>
const withRetry = (sdk: AssemblySDK, retry: RetryOptions): AssemblySDK =>
new Proxy(sdk, {
get(target, prop, receiver) {
const value = Reflect.get(target, prop, receiver);
Expand All @@ -36,10 +36,10 @@ const withRetry = (sdk: AssemblyAPI, retry: RetryOptions): AssemblyAPI =>
});

export abstract class BaseResource {
protected readonly sdk: AssemblyAPI;
protected readonly sdk: AssemblySDK;
protected readonly validateResponses: boolean;

constructor(sdk: AssemblyAPI, validateResponses: boolean, retry: RetryOptions | false) {
constructor(sdk: AssemblySDK, validateResponses: boolean, retry: RetryOptions | false) {
this.sdk = retry === false ? sdk : withRetry(sdk, retry);
this.validateResponses = validateResponses;
}
Expand Down
29 changes: 15 additions & 14 deletions src/client/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { assemblyApi } from "@assembly-js/node-sdk";
import { AssemblyNoTokenError } from "src/errors/no-token";
import { initSdk } from "src/sdk-init";
import type { TokenPayload } from "src/schemas/shared/token";
import { AssemblyToken } from "src/token/assembly-token";
import type { ClientTokenPayload, InternalUserTokenPayload } from "src/token/assembly-token";
Expand Down Expand Up @@ -99,34 +99,35 @@
readonly workspace: WorkspaceResource;

constructor(options: AssemblyKitOptions) {
if (!options.token && !options.workspaceId) {
const isMarketplace: boolean = options.isMarketplaceApp ?? false;

if (isMarketplace && !options.token) {
throw new AssemblyNoTokenError({
message: "Either `token` or `workspaceId` must be provided.",
message: "Marketplace apps require a `token`. Provide an encrypted token from Assembly.",
});
}
if (!isMarketplace && !options.token && !options.workspaceId) {
throw new AssemblyNoTokenError({
message: "`workspaceId` is required when `token` is not provided.",
});
}

this.currentToken = options.token;

if (options.token) {
// Token mode: decrypt token to get payload + let the underlying SDK build the compound key.
this.token = new AssemblyToken({ token: options.token, apiKey: options.apiKey });
this.payload = this.token.payload;
} else {
// Workspace-only mode: no token to decrypt.
this.token = undefined;
this.payload = undefined;
}

// When no token is provided, set ASSEMBLY_ENV=local so the underlying SDK
// accepts the raw apiKey, then pass the compound key (workspaceId/apiKey)
// as the apiKey directly.
let sdkApiKey: string = options.apiKey;
if (!options.token) {
process.env.ASSEMBLY_ENV = "local";
sdkApiKey = `${options.workspaceId}/${options.apiKey}`;
}
// Build compound key ourselves — no ASSEMBLY_ENV hack, no upstream init.js.
const compoundKey: string = this.token
? this.token.buildCompoundKey({ apiKey: options.apiKey })

Check failure on line 127 in src/client/index.ts

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

tests/client.test.ts > createAssemblyKit > accepts both token and workspaceId (token takes precedence)

TypeError: this.token.buildCompoundKey is not a function ❯ new AssemblyKit src/client/index.ts:127:20 ❯ Module.createAssemblyKit src/client/index.ts:49:10 ❯ tests/client.test.ts:52:17 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:302:14 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:1893:28 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2316:24 ❯ runWithCancel node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2313:12 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2295:24

Check failure on line 127 in src/client/index.ts

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

tests/client.test.ts > createAssemblyKit > accepts token instead of workspaceId

TypeError: this.token.buildCompoundKey is not a function ❯ new AssemblyKit src/client/index.ts:127:20 ❯ Module.createAssemblyKit src/client/index.ts:49:10 ❯ tests/client.test.ts:46:17 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:302:14 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:1893:28 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2316:24 ❯ runWithCancel node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2313:12 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2295:24

Check failure on line 127 in src/client/index.ts

View workflow job for this annotation

GitHub Actions / Test on macos-latest

tests/client.test.ts > createAssemblyKit > accepts both token and workspaceId (token takes precedence)

TypeError: this.token.buildCompoundKey is not a function ❯ new AssemblyKit src/client/index.ts:127:20 ❯ Module.createAssemblyKit src/client/index.ts:49:10 ❯ tests/client.test.ts:52:17 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:302:14 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:1893:28 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2316:24 ❯ runWithCancel node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2313:12 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2295:24

Check failure on line 127 in src/client/index.ts

View workflow job for this annotation

GitHub Actions / Test on macos-latest

tests/client.test.ts > createAssemblyKit > accepts token instead of workspaceId

TypeError: this.token.buildCompoundKey is not a function ❯ new AssemblyKit src/client/index.ts:127:20 ❯ Module.createAssemblyKit src/client/index.ts:49:10 ❯ tests/client.test.ts:46:17 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:302:14 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:1893:28 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2316:24 ❯ runWithCancel node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2313:12 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2295:24

Check failure on line 127 in src/client/index.ts

View workflow job for this annotation

GitHub Actions / Test on windows-latest

tests/client.test.ts > createAssemblyKit > accepts both token and workspaceId (token takes precedence)

TypeError: this.token.buildCompoundKey is not a function ❯ new AssemblyKit src/client/index.ts:127:20 ❯ Module.createAssemblyKit src/client/index.ts:49:10 ❯ tests/client.test.ts:52:17 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:302:14 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:1893:28 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2316:24 ❯ runWithCancel node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2313:12 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2295:24

Check failure on line 127 in src/client/index.ts

View workflow job for this annotation

GitHub Actions / Test on windows-latest

tests/client.test.ts > createAssemblyKit > accepts token instead of workspaceId

TypeError: this.token.buildCompoundKey is not a function ❯ new AssemblyKit src/client/index.ts:127:20 ❯ Module.createAssemblyKit src/client/index.ts:49:10 ❯ tests/client.test.ts:46:17 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:302:14 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:1893:28 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2316:24 ❯ runWithCancel node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2313:12 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:2295:24
: `${options.workspaceId}/${options.apiKey}`;

const sdk = assemblyApi({ apiKey: sdkApiKey, token: options.token });
const sdk = initSdk({ compoundKey });
const validate = options.validateResponses ?? true;
const retry = options.retry === false ? false : { ...DEFAULT_RETRY, ...options.retry };

Expand Down
16 changes: 11 additions & 5 deletions src/client/options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,23 @@ export const DEFAULT_RETRY: RetryOptions = {
/**
* Options for `createAssemblyKit()`.
*
* At least one of `token` or `workspaceId` must be provided at runtime.
* If both are provided, `token` takes precedence (workspaceId is ignored).
* If only `workspaceId` is provided, the compound key is built as `workspaceId/apiKey`.
* - `isMarketplaceApp: true` → `token` is required (marketplace apps receive it from the platform).
* - `isMarketplaceApp: false` (default) → `workspaceId` is required; `token` is optional.
* - When both `token` and `workspaceId` are provided, `token` takes precedence.
*/
export interface AssemblyKitOptions {
/** Assembly API key. */
apiKey: string;
/** Encrypted token from Assembly. Takes precedence over `workspaceId` when provided. */
/** Encrypted token from Assembly. Required when `isMarketplaceApp` is `true`. */
token?: string;
/** Workspace ID. Required when `token` is not provided. Ignored when `token` is present. */
/** Workspace ID. Required when `isMarketplaceApp` is `false` and `token` is not provided. */
workspaceId?: string;
/**
* When `true`, `token` is required at construction time (marketplace apps).
* When `false` (default), `workspaceId` is required instead.
* @default false
*/
isMarketplaceApp?: boolean;
/** Retry configuration, or `false` to disable retry entirely. */
retry?: RetryOptions | false;
/** When true, all responses are validated through Zod schemas. Default: true. */
Expand Down
51 changes: 51 additions & 0 deletions src/sdk-init.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/**
* Custom SDK initializer that wraps `@assembly-js/node-sdk`.
*
* Calls `assemblyApi()` once with a dummy key (under ASSEMBLY_ENV=local) to
* obtain the `DefaultService` reference + `sendWebhook`. Then wraps it in a
* Proxy that sets `OpenAPI.HEADERS` to this instance's compound key before
* every method call — making multiple `createAssemblyKit()` instances safe
* in the same process.
*
* With `unbundle: false` in vite.config.ts, the SDK is inlined into
* assembly-kit's dist. Consumers never need to install `@assembly-js/node-sdk`.
*/

import { type AssemblyAPI, OpenAPI, assemblyApi } from "@assembly-js/node-sdk";

const SDK_VERSION: string = "3.19.1";

/** The underlying SDK type returned by `assemblyApi()`. */
export type AssemblySDK = AssemblyAPI;

// Obtain the DefaultService reference once. We pass a placeholder key and
// set ASSEMBLY_ENV=local so init.js skips token decryption. The headers it
// sets are immediately overwritten per-instance via the Proxy.
const _prevEnv: string | undefined = process.env.ASSEMBLY_ENV;
process.env.ASSEMBLY_ENV = "local";
const _baseSdk: AssemblyAPI = assemblyApi({ apiKey: "__placeholder__" });
process.env.ASSEMBLY_ENV = _prevEnv;

/**
* Create a per-instance SDK wrapper that sets `OpenAPI.HEADERS` to this
* instance's compound key before every method call.
*
* JS is single-threaded, so the header is always correct when the fetch fires.
*/
export function initSdk({ compoundKey }: { compoundKey: string }): AssemblySDK {
const headers: Record<string, string> = {
"X-API-Key": compoundKey,
"X-Assembly-SDK-Version": SDK_VERSION,
};

return new Proxy(_baseSdk, {
get(target, prop, receiver) {
const value = Reflect.get(target, prop, receiver);
if (typeof value !== "function") return value;
return (...args: unknown[]) => {
OpenAPI.HEADERS = headers;

Check failure on line 46 in src/sdk-init.ts

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

tests/client.test.ts > retry behavior > retries on 500 and eventually succeeds

Error: [vitest] No "OpenAPI" export is defined on the "@assembly-js/node-sdk" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@assembly-js/node-sdk"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ VitestMocker.createError node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/startVitestModuleRunner.C3FXk5Gv.js:62:19 ❯ Object.get node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/startVitestModuleRunner.C3FXk5Gv.js:310:20 ❯ Proxy.<anonymous> src/sdk-init.ts:46:9 ❯ factor src/client/base-resource.ts:28:28 ❯ pRetry node_modules/.pnpm/p-retry@8.0.0/node_modules/p-retry/index.js:241:25 ❯ Proxy.<anonymous> src/client/base-resource.ts:28:9 ❯ WorkspaceResource.retrieve src/lib/modules/workspace/resource.ts:9:32 ❯ tests/client.test.ts:120:40 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:302:14 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:1893:28

Check failure on line 46 in src/sdk-init.ts

View workflow job for this annotation

GitHub Actions / Test on ubuntu-latest

tests/client.test.ts > retry behavior > retries on 429 and eventually succeeds

Error: [vitest] No "OpenAPI" export is defined on the "@assembly-js/node-sdk" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@assembly-js/node-sdk"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ VitestMocker.createError node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/startVitestModuleRunner.C3FXk5Gv.js:62:19 ❯ Object.get node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/startVitestModuleRunner.C3FXk5Gv.js:310:20 ❯ Proxy.<anonymous> src/sdk-init.ts:46:9 ❯ factor src/client/base-resource.ts:28:28 ❯ pRetry node_modules/.pnpm/p-retry@8.0.0/node_modules/p-retry/index.js:241:25 ❯ Proxy.<anonymous> src/client/base-resource.ts:28:9 ❯ WorkspaceResource.retrieve src/lib/modules/workspace/resource.ts:9:32 ❯ tests/client.test.ts:98:40 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:302:14 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:1893:28

Check failure on line 46 in src/sdk-init.ts

View workflow job for this annotation

GitHub Actions / Test on macos-latest

tests/client.test.ts > retry behavior > retries on 500 and eventually succeeds

Error: [vitest] No "OpenAPI" export is defined on the "@assembly-js/node-sdk" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@assembly-js/node-sdk"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ VitestMocker.createError node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/startVitestModuleRunner.C3FXk5Gv.js:62:19 ❯ Object.get node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/startVitestModuleRunner.C3FXk5Gv.js:310:20 ❯ Proxy.<anonymous> src/sdk-init.ts:46:9 ❯ factor src/client/base-resource.ts:28:28 ❯ pRetry node_modules/.pnpm/p-retry@8.0.0/node_modules/p-retry/index.js:241:25 ❯ Proxy.<anonymous> src/client/base-resource.ts:28:9 ❯ WorkspaceResource.retrieve src/lib/modules/workspace/resource.ts:9:32 ❯ tests/client.test.ts:120:40 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:302:14 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:1893:28

Check failure on line 46 in src/sdk-init.ts

View workflow job for this annotation

GitHub Actions / Test on macos-latest

tests/client.test.ts > retry behavior > retries on 429 and eventually succeeds

Error: [vitest] No "OpenAPI" export is defined on the "@assembly-js/node-sdk" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@assembly-js/node-sdk"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ VitestMocker.createError node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/startVitestModuleRunner.C3FXk5Gv.js:62:19 ❯ Object.get node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/startVitestModuleRunner.C3FXk5Gv.js:310:20 ❯ Proxy.<anonymous> src/sdk-init.ts:46:9 ❯ factor src/client/base-resource.ts:28:28 ❯ pRetry node_modules/.pnpm/p-retry@8.0.0/node_modules/p-retry/index.js:241:25 ❯ Proxy.<anonymous> src/client/base-resource.ts:28:9 ❯ WorkspaceResource.retrieve src/lib/modules/workspace/resource.ts:9:32 ❯ tests/client.test.ts:98:40 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:302:14 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-test@0.1.14_@types+node@25.5.0_jiti@2.6.1_typescript@6.0.2_vite_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:1893:28

Check failure on line 46 in src/sdk-init.ts

View workflow job for this annotation

GitHub Actions / Test on windows-latest

tests/client.test.ts > retry behavior > retries on 500 and eventually succeeds

Error: [vitest] No "OpenAPI" export is defined on the "@assembly-js/node-sdk" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@assembly-js/node-sdk"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ VitestMocker.createError node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/startVitestModuleRunner.C3FXk5Gv.js:62:19 ❯ Object.get node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/startVitestModuleRunner.C3FXk5Gv.js:310:20 ❯ Proxy.<anonymous> src/sdk-init.ts:46:9 ❯ factor src/client/base-resource.ts:28:28 ❯ pRetry node_modules/.pnpm/p-retry@8.0.0/node_modules/p-retry/index.js:241:25 ❯ Proxy.<anonymous> src/client/base-resource.ts:28:9 ❯ WorkspaceResource.retrieve src/lib/modules/workspace/resource.ts:9:32 ❯ tests/client.test.ts:120:40 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:302:14 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:1893:28

Check failure on line 46 in src/sdk-init.ts

View workflow job for this annotation

GitHub Actions / Test on windows-latest

tests/client.test.ts > retry behavior > retries on 429 and eventually succeeds

Error: [vitest] No "OpenAPI" export is defined on the "@assembly-js/node-sdk" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@assembly-js/node-sdk"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ VitestMocker.createError node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/startVitestModuleRunner.C3FXk5Gv.js:62:19 ❯ Object.get node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/startVitestModuleRunner.C3FXk5Gv.js:310:20 ❯ Proxy.<anonymous> src/sdk-init.ts:46:9 ❯ factor src/client/base-resource.ts:28:28 ❯ pRetry node_modules/.pnpm/p-retry@8.0.0/node_modules/p-retry/index.js:241:25 ❯ Proxy.<anonymous> src/client/base-resource.ts:28:9 ❯ WorkspaceResource.retrieve src/lib/modules/workspace/resource.ts:9:32 ❯ tests/client.test.ts:98:40 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:302:14 ❯ node_modules/.pnpm/@voidzero-dev+vite-plus-tes_68ac56e3e86f9e7ddad40de2d297ce55/node_modules/@voidzero-dev/vite-plus-test/dist/@vitest/runner/chunk-artifact.js:1893:28
return (value as (...a: unknown[]) => unknown).apply(target, args);
};
},
});
}
2 changes: 1 addition & 1 deletion vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export default defineConfig({
"src/schemas/index.ts",
"src/token/index.ts",
],
unbundle: true,
unbundle: false,
exports: true,
sourcemap: true,
dts: {
Expand Down
Loading