Skip to content

URI generics default to Uri; ConfigBuilder accepts string | Uri where possible #81

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: origin-dev
Choose a base branch
from
Open
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
37 changes: 16 additions & 21 deletions packages/client/src/PolywrapClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,41 +75,36 @@ export class PolywrapClient extends PolywrapCoreClient {
}

@Tracer.traceMethod("PolywrapClient: getEnvByUri")
public getEnvByUri<TUri extends Uri | string = string>(
uri: TUri
): WrapperEnv | undefined {
public getEnvByUri(uri: Uri | string): WrapperEnv | undefined {
return super.getEnvByUri(Uri.from(uri));
}

@Tracer.traceMethod("PolywrapClient: getManifest")
public async getManifest<TUri extends Uri | string = string>(
uri: TUri
public async getManifest(
uri: Uri | string
): Promise<Result<WrapManifest, WrapError>> {
return super.getManifest(Uri.from(uri));
}

@Tracer.traceMethod("PolywrapClient: getFile")
public async getFile<TUri extends Uri | string = string>(
uri: TUri,
public async getFile(
uri: Uri | string,
options: GetFileOptions
): Promise<Result<string | Uint8Array, WrapError>> {
return super.getFile(Uri.from(uri), options);
}

@Tracer.traceMethod("PolywrapClient: getImplementations")
public async getImplementations<TUri extends Uri | string = string>(
uri: TUri,
public async getImplementations(
uri: Uri | string,
options?: GetImplementationsOptions
): Promise<Result<Uri[], WrapError>> {
return super.getImplementations(Uri.from(uri), options);
}

@Tracer.traceMethod("PolywrapClient: invokeWrapper")
public async invokeWrapper<
TData = unknown,
TUri extends Uri | string = string
>(
options: InvokerOptions<TUri> & { wrapper: Wrapper }
public async invokeWrapper<TData = unknown>(
options: InvokerOptions & { wrapper: Wrapper }
): Promise<InvokeResult<TData>> {
return super.invokeWrapper({
...options,
Expand All @@ -118,8 +113,8 @@ export class PolywrapClient extends PolywrapCoreClient {
}

@Tracer.traceMethod("PolywrapClient: invoke")
public async invoke<TData = unknown, TUri extends Uri | string = string>(
options: InvokerOptions<TUri>
public async invoke<TData = unknown>(
options: InvokerOptions
): Promise<InvokeResult<TData>> {
return super.invoke({
...options,
Expand All @@ -128,8 +123,8 @@ export class PolywrapClient extends PolywrapCoreClient {
}

@Tracer.traceMethod("PolywrapClient: tryResolveUri")
public async tryResolveUri<TUri extends Uri | string = string>(
options: TryResolveUriOptions<TUri>
public async tryResolveUri(
options: TryResolveUriOptions
): Promise<Result<UriPackageOrWrapper, unknown>> {
return super.tryResolveUri({
...options,
Expand All @@ -156,8 +151,8 @@ export class PolywrapClient extends PolywrapCoreClient {
* @returns A Promise with a Result containing a boolean or Error
*/
@Tracer.traceMethod("PolywrapClient: validateConfig")
public async validate<TUri extends Uri | string> /* $ */(
uri: TUri,
public async validate /* $ */(
uri: Uri | string,
options: ValidateOptions
): Promise<Result<true, Error>> {
const wrapper = await this.loadWrapper(Uri.from(uri));
Expand All @@ -170,7 +165,7 @@ export class PolywrapClient extends PolywrapCoreClient {
abi.importedModuleTypes || [];

const importUri = (importedModuleType: ImportedModuleDefinition) => {
return this.tryResolveUri({ uri: importedModuleType.uri });
return this.tryResolveUri({ uri: Uri.from(importedModuleType.uri) });
};
const resolvedModules = await Promise.all(importedModules.map(importUri));
const modulesNotFound = resolvedModules.filter(({ ok }) => !ok) as {
Expand Down
4 changes: 2 additions & 2 deletions packages/client/src/__tests__/core/embedded-package.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ import fs from "fs";
import path from "path";
import { GetPathToTestWrappers } from "@polywrap/test-cases";
import { InMemoryFileReader, WasmPackage } from "@polywrap/wasm-js";
import { IWrapPackage } from "@polywrap/core-js";
import {IWrapPackage, Uri} from "@polywrap/core-js";
import { Result, ResultErr, ResultOk } from "@polywrap/result";
import { PolywrapClient } from "../../PolywrapClient";
import { PolywrapClientConfigBuilder } from "@polywrap/client-config-builder-js";

jest.setTimeout(200000);

const wrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/as`;
const wrapperUri = `fs/${wrapperPath}`;
const wrapperUri = Uri.from(`fs/${wrapperPath}`);

describe("Embedded package", () => {
it("can invoke an embedded package", async () => {
Expand Down
4 changes: 2 additions & 2 deletions packages/client/src/__tests__/core/embedded-wrapper.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ import fs from "fs";
import path from "path";
import { GetPathToTestWrappers } from "@polywrap/test-cases";
import { WasmWrapper, InMemoryFileReader } from "@polywrap/wasm-js";
import { Wrapper } from "@polywrap/core-js";
import {Uri, Wrapper} from "@polywrap/core-js";
import { Result, ResultErr, ResultOk } from "@polywrap/result";
import { PolywrapClient } from "../../PolywrapClient";
import { PolywrapClientConfigBuilder } from "@polywrap/client-config-builder-js";

jest.setTimeout(200000);

const wrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/as`;
const simpleWrapperUri = `fs/${wrapperPath}`;
const simpleWrapperUri = Uri.from(`fs/${wrapperPath}`);

describe("Embedded wrapper", () => {
it("can invoke an embedded wrapper", async () => {
Expand Down
22 changes: 11 additions & 11 deletions packages/client/src/__tests__/core/error-structure.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ describe("Error structure", () => {
test("Subinvoke a wrapper that is not found", async () => {
const client = new PolywrapClient();
const result = await client.invoke<number>({
uri: asConsumerWrapperUri.uri,
uri: asConsumerWrapperUri,
method: "throwError",
args: {
a: "Hey",
Expand Down Expand Up @@ -99,7 +99,7 @@ describe("Error structure", () => {
test("Invoke a wrapper with malformed arguments", async () => {
const client = new PolywrapClient();
const result = await client.invoke<string>({
uri: asSubinvokeWrapperUri.uri,
uri: asSubinvokeWrapperUri,
method: "add",
args: {
a: "1",
Expand Down Expand Up @@ -130,7 +130,7 @@ describe("Error structure", () => {
test("Invoke a wrapper method that doesn't exist", async () => {
const client = new PolywrapClient();
const result = await client.invoke<string>({
uri: asSubinvokeWrapperUri.uri,
uri: asSubinvokeWrapperUri,
method: "notExistingMethod",
args: {
arg: "test",
Expand Down Expand Up @@ -165,13 +165,13 @@ describe("Error structure", () => {
const config = new PolywrapClientConfigBuilder()
.addDefaults()
.setRedirects({
"authority/imported-invoke": asInvokeWrapperUri.uri,
"authority/imported-subinvoke": asSubinvokeWrapperUri.uri,
"authority/imported-invoke": asInvokeWrapperUri,
"authority/imported-subinvoke": asSubinvokeWrapperUri,
})
.build();
const client = new PolywrapClient(config);
const result = await client.invoke<boolean>({
uri: asConsumerWrapperUri.uri,
uri: asConsumerWrapperUri,
method: "throwError",
args: {
a: "Hey",
Expand Down Expand Up @@ -275,7 +275,7 @@ describe("Error structure", () => {
test("Invoke a wrapper with malformed arguments", async () => {
const client = new PolywrapClient();
const result = await client.invoke<string>({
uri: rsSubinvokeWrapperUri.uri,
uri: rsSubinvokeWrapperUri,
method: "add",
args: {
a: "1",
Expand Down Expand Up @@ -306,7 +306,7 @@ describe("Error structure", () => {
test("Invoke a wrapper method that doesn't exist", async () => {
const client = new PolywrapClient();
const result = await client.invoke<string>({
uri: rsSubinvokeWrapperUri.uri,
uri: rsSubinvokeWrapperUri,
method: "notExistingMethod",
args: {
arg: "test",
Expand Down Expand Up @@ -341,14 +341,14 @@ describe("Error structure", () => {
const config = new PolywrapClientConfigBuilder()
.addDefaults()
.setRedirects({
"authority/imported-invoke": rsInvokeWrapperUri.uri,
"authority/imported-subinvoke": rsSubinvokeWrapperUri.uri,
"authority/imported-invoke": rsInvokeWrapperUri,
"authority/imported-subinvoke": rsSubinvokeWrapperUri,
})
.build();

const client = new PolywrapClient(config);
const result = await client.invoke<number>({
uri: rsConsumerWrapperUri.uri,
uri: rsConsumerWrapperUri,
method: "throwError",
args: {
a: "Hey",
Expand Down
7 changes: 4 additions & 3 deletions packages/client/src/__tests__/core/type-test-cases.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import BigNumber from "bignumber.js";
import { PolywrapClientConfigBuilder } from "@polywrap/client-config-builder-js";
import { GetPathToTestWrappers } from "@polywrap/test-cases";
import { ResultOk } from "@polywrap/result";
import {Uri} from "@polywrap/core-js";

export const typeTestCases = (implementation: string) => {
describe("types test cases", () => {
Expand All @@ -18,7 +19,7 @@ export const typeTestCases = (implementation: string) => {
.build();
const client = new PolywrapClient(config);

const uri = `fs/${GetPathToTestWrappers()}/asyncify/implementations/${implementation}`;
const uri = Uri.from(`fs/${GetPathToTestWrappers()}/asyncify/implementations/${implementation}`);
const subsequentInvokesResult = await client.invoke({
uri: uri,
method: "subsequentInvokes",
Expand Down Expand Up @@ -343,7 +344,7 @@ export const typeTestCases = (implementation: string) => {
});

test(`json-type ${implementation}`, async () => {
const uri = `fs/${GetPathToTestWrappers()}/json-type/implementations/${implementation}`;
const uri = Uri.from(`fs/${GetPathToTestWrappers()}/json-type/implementations/${implementation}`);
const client = new PolywrapClient();
type Json = string;
const value = JSON.stringify({ foo: "bar", bar: "bar" });
Expand Down Expand Up @@ -675,7 +676,7 @@ export const typeTestCases = (implementation: string) => {
});

test(`map-type ${implementation}`, async () => {
const uri = `fs/${GetPathToTestWrappers()}/map-type/implementations/${implementation}`;
const uri = Uri.from(`fs/${GetPathToTestWrappers()}/map-type/implementations/${implementation}`);
const client = new PolywrapClient();
const mapClass = new Map<string, number>()
.set("Hello", 1)
Expand Down
6 changes: 3 additions & 3 deletions packages/client/src/__tests__/core/wasm-wrapper.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ describe("wasm-wrapper", () => {
test("can invoke with string URI", async () => {
const client = new PolywrapClient();
const result = await client.invoke<number>({
uri: wrapperUri.uri,
uri: wrapperUri,
method: "add",
args: {
a: 1,
Expand All @@ -40,7 +40,7 @@ describe("wasm-wrapper", () => {

test("can invoke with typed URI", async () => {
const client = new PolywrapClient();
const result = await client.invoke<number, Uri>({
const result = await client.invoke<number>({
uri: wrapperUri,
method: "add",
args: {
Expand All @@ -55,7 +55,7 @@ describe("wasm-wrapper", () => {
test("invoke with decode defaulted to true works as expected", async () => {
const client = new PolywrapClient();
const result = await client.invoke<number>({
uri: wrapperUri.uri,
uri: wrapperUri,
method: "add",
args: {
a: 1,
Expand Down
4 changes: 2 additions & 2 deletions packages/client/src/types/InvokerOptions.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { IUriResolutionContext, Uri } from "@polywrap/core-js";

export interface InvokerOptions<TUri extends Uri | string = string> {
export interface InvokerOptions {
/** The Wrapper's URI */
uri: TUri;
uri: Uri | string;

/** Method to be executed. */
method: string;
Expand Down
2 changes: 1 addition & 1 deletion packages/client/src/types/TryResolveUriOptions.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { IUriResolutionContext, Uri } from "@polywrap/core-js";

export interface TryResolveUriOptions<TUri extends Uri | string = string> {
export interface TryResolveUriOptions<TUri extends Uri | string = Uri> {
/** The Wrapper's URI */
uri: TUri;
resolutionContext?: IUriResolutionContext;
Expand Down
Loading