Skip to content
Merged
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
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"private": true,
"type": "module",
"packageManager": "pnpm@12.6.0+sha512.3ef68f951cb111ac204b4a5a16f0b2ddf0da56a96e0413e81d855d9f0b55ef926714709028e1cd00c405c2c5fb7b9e8ec4dc46777c805d0373c2f2ff00fd20ec",
"packageManager": "pnpm@12.8.1+sha512.f64ba907507f5ceafe06c8d38e6052d0179444580ec1279ddd5bfc11cb48aa8a2644b66598e07e761da84872a9fc57d5f902b87fa49d024198d558612aabbe45",
"scripts": {
"prepare": "effect-language-service patch",
"build": "tspc -b tsconfig.packages.json && pnpm --recursive --parallel --filter \"./packages/**/*\" run build",
Expand Down
6 changes: 3 additions & 3 deletions packages/amp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,15 @@
"coverage": "vitest --coverage"
},
"peerDependencies": {
"@bufbuild/protobuf": "^2.15.0",
"@bufbuild/protobuf": "^2.16.0",
"@connectrpc/connect": "^2.2.0",
"@connectrpc/connect-node": "^2.2.0",
"effect": "catalog:"
},
"devDependencies": {
"@bufbuild/buf": "^1.73.0",
"@bufbuild/protobuf": "^2.15.0",
"@bufbuild/protoc-gen-es": "^2.15.0",
"@bufbuild/protobuf": "^2.16.0",
"@bufbuild/protoc-gen-es": "^2.16.0",
"@connectrpc/connect": "^2.2.0",
"@connectrpc/connect-node": "^2.2.0",
"effect": "catalog:"
Expand Down
10 changes: 5 additions & 5 deletions packages/amp/src/admin/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
* - Manifests (registration)
*/
import * as Schema from "effect/Schema"
import * as HttpApi from "effect/unstable/httpapi/HttpApi"
import * as HttpApiEndpoint from "effect/unstable/httpapi/HttpApiEndpoint"
import * as HttpApiError from "effect/unstable/httpapi/HttpApiError"
import * as HttpApiGroup from "effect/unstable/httpapi/HttpApiGroup"
import * as HttpApiSchema from "effect/unstable/httpapi/HttpApiSchema"
import * as HttpApi from "effect/http-api/HttpApi"
import * as HttpApiEndpoint from "effect/http-api/HttpApiEndpoint"
import * as HttpApiError from "effect/http-api/HttpApiError"
import * as HttpApiGroup from "effect/http-api/HttpApiGroup"
import * as HttpApiSchema from "effect/http-api/HttpApiSchema"
import * as Models from "../core/domain.ts"
import * as Domain from "./domain.ts"
import * as Error from "./error.ts"
Expand Down
12 changes: 6 additions & 6 deletions packages/amp/src/admin/service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ import * as Effect from "effect/Effect"
import { constUndefined } from "effect/Function"
import * as Layer from "effect/Layer"
import * as Option from "effect/Option"
import * as HttpClient from "effect/unstable/http/HttpClient"
import type * as HttpClientError from "effect/unstable/http/HttpClientError"
import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest"
import * as HttpApiClient from "effect/unstable/httpapi/HttpApiClient"
import type * as HttpApiError from "effect/unstable/httpapi/HttpApiError"
import type * as KeyValueStore from "effect/unstable/persistence/KeyValueStore"
import * as HttpClient from "effect/http/HttpClient"
import type * as HttpClientError from "effect/http/HttpClientError"
import * as HttpClientRequest from "effect/http/HttpClientRequest"
import * as HttpApiClient from "effect/http-api/HttpApiClient"
import type * as HttpApiError from "effect/http-api/HttpApiError"
import type * as KeyValueStore from "effect/persistence/KeyValueStore"
import * as Auth from "../auth/service.ts"
import type * as Models from "../core/domain.ts"
import * as Api from "./api.ts"
Expand Down
14 changes: 7 additions & 7 deletions packages/amp/src/auth/service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import * as Option from "effect/Option"
import * as Predicate from "effect/Predicate"
import * as Redacted from "effect/Redacted"
import * as Schema from "effect/Schema"
import * as HttpBody from "effect/unstable/http/HttpBody"
import * as HttpClient from "effect/unstable/http/HttpClient"
import type * as HttpClientError from "effect/unstable/http/HttpClientError"
import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest"
import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse"
import * as UrlParams from "effect/unstable/http/UrlParams"
import * as KeyValueStore from "effect/unstable/persistence/KeyValueStore"
import * as HttpBody from "effect/http/HttpBody"
import * as HttpClient from "effect/http/HttpClient"
import type * as HttpClientError from "effect/http/HttpClientError"
import * as HttpClientRequest from "effect/http/HttpClientRequest"
import * as HttpClientResponse from "effect/http/HttpClientResponse"
import * as UrlParams from "effect/http/UrlParams"
import * as KeyValueStore from "effect/persistence/KeyValueStore"
import * as Jose from "jose"
import {
AccessToken,
Expand Down
22 changes: 18 additions & 4 deletions packages/amp/src/core/domain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -489,6 +489,20 @@ export const DatasetMetadata = Schema.Struct({
})
export type DatasetMetadata = typeof DatasetMetadata.Type

/**
* Represents an Apache Arrow data type, as serialized by Amp.
*
* Types without parameters serialize as a bare string (e.g. `"Int32"`), while
* parameterized types serialize as a single-key object mapping the type name
* to its parameters (e.g. `{ "FixedSizeBinary": 20 }`).
*/
export const ArrowDataType = Schema.Union([Schema.String, Schema.Record(Schema.String, Schema.Unknown)]).annotate({
identifier: "ArrowDataType",
description: "An Apache Arrow data type.",
examples: ["Utf8", { FixedSizeBinary: 20 }, { Timestamp: ["Nanosecond", "+00:00"] }, { Decimal128: [38, 0] }]
})
export type ArrowDataType = typeof ArrowDataType.Type

/**
* Represents the source of a function.
*/
Expand All @@ -506,8 +520,8 @@ export type FunctionSource = typeof FunctionSource.Type
*/
export const FunctionDefinition = Schema.Struct({
source: FunctionSource,
inputTypes: Schema.Array(Schema.String),
outputType: Schema.String
inputTypes: Schema.Array(ArrowDataType),
outputType: ArrowDataType
}).annotate({
identifier: "FunctionDefinition",
description: "The data required to define of a function."
Expand Down Expand Up @@ -700,8 +714,8 @@ export type RawDatasetTable = typeof RawDatasetTable.Type
*/
export const FunctionManifest = Schema.Struct({
source: FunctionSource,
inputTypes: Schema.Array(Schema.String),
outputType: Schema.String
inputTypes: Schema.Array(ArrowDataType),
outputType: ArrowDataType
}).annotate({
identifier: "FunctionManifest",
description: "Information associated with a function."
Expand Down
10 changes: 5 additions & 5 deletions packages/amp/src/registry/api.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import * as Schema from "effect/Schema"
import * as HttpApi from "effect/unstable/httpapi/HttpApi"
import * as HttpApiEndpoint from "effect/unstable/httpapi/HttpApiEndpoint"
import * as HttpApiError from "effect/unstable/httpapi/HttpApiError"
import * as HttpApiGroup from "effect/unstable/httpapi/HttpApiGroup"
import * as HttpApiSchema from "effect/unstable/httpapi/HttpApiSchema"
import * as HttpApi from "effect/http-api/HttpApi"
import * as HttpApiEndpoint from "effect/http-api/HttpApiEndpoint"
import * as HttpApiError from "effect/http-api/HttpApiError"
import * as HttpApiGroup from "effect/http-api/HttpApiGroup"
import * as HttpApiSchema from "effect/http-api/HttpApiSchema"
import * as Models from "../core/domain.ts"
import * as Domain from "./domain.ts"
import * as Errors from "./error.ts"
Expand Down
2 changes: 1 addition & 1 deletion packages/amp/src/registry/domain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ export type SearchMyDatasetsParams = typeof SearchMyDatasetsParams.Type
* Represents a bearer token header.
*/
export const BearerAuthHeader = Schema.Struct({
Authorization: Schema.String.check(Schema.isStartsWith("Bearer"))
Authorization: Schema.String.check(Schema.isStartingWith("Bearer"))
}).annotate({ identifier: "BearerAuthHeader" })
export type BearerAuthHeader = typeof BearerAuthHeader.Type

Expand Down
16 changes: 13 additions & 3 deletions packages/amp/test/admin/service.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import { assert, describe, it } from "@effect/vitest"
import * as Effect from "effect/Effect"
import * as Layer from "effect/Layer"
import * as Redacted from "effect/Redacted"
import * as HttpClient from "effect/unstable/http/HttpClient"
import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse"
import * as KeyValueStore from "effect/unstable/persistence/KeyValueStore"
import * as HttpClient from "effect/http/HttpClient"
import * as HttpClientResponse from "effect/http/HttpClientResponse"
import * as KeyValueStore from "effect/persistence/KeyValueStore"

// Response payloads mirror the serialized shapes of the Amp admin API
// (see `docs/schemas/openapi/admin.spec.json` in the Amp repository).
Expand Down Expand Up @@ -174,6 +174,11 @@ describe("AdminApi", () => {
assert.strictEqual(manifest.dependencies?.eth.name, "eth_mainnet")
assert.strictEqual(manifest.tables?.transfers.input.sql, "SELECT * FROM eth.logs")
assert.strictEqual(manifest.functions?.decode.outputType, "Utf8")
assert.deepStrictEqual(manifest.functions?.checksum.inputTypes, [
{ FixedSizeBinary: 20 },
{ Timestamp: ["Nanosecond", "+00:00"] }
])
assert.deepStrictEqual(manifest.functions?.checksum.outputType, { Decimal128: [38, 0] })
}).pipe(
Effect.provide(
makeLayer({
Expand All @@ -194,6 +199,11 @@ describe("AdminApi", () => {
inputTypes: ["Binary"],
outputType: "Utf8",
source: { source: "export default () => ''", filename: "decode.js" }
},
checksum: {
inputTypes: [{ FixedSizeBinary: 20 }, { Timestamp: ["Nanosecond", "+00:00"] }],
outputType: { Decimal128: [38, 0] },
source: { source: "export default () => 0n", filename: "checksum.js" }
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions packages/cli/src/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import * as NodeServices from "@effect/platform-node/NodeServices"
import * as Effect from "effect/Effect"
import * as Layer from "effect/Layer"
import * as Path from "effect/Path"
import * as Command from "effect/unstable/cli/Command"
import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient"
import * as KeyValueStore from "effect/unstable/persistence/KeyValueStore"
import * as Command from "effect/cli/Command"
import * as FetchHttpClient from "effect/http/FetchHttpClient"
import * as KeyValueStore from "effect/persistence/KeyValueStore"
import * as NodeOS from "node:os"
import PackageJson from "../package.json" with { type: "json" }
import { AuthCommand } from "./commands/auth.ts"
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/auth.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as Command from "effect/unstable/cli/Command"
import * as Command from "effect/cli/Command"
import { LoginCommand } from "./auth/login.ts"
import { LogoutCommand } from "./auth/logout.ts"
import { TokenCommand } from "./auth/token.ts"
Expand Down
4 changes: 2 additions & 2 deletions packages/cli/src/commands/auth/login.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import * as Option from "effect/Option"
import * as Runtime from "effect/Runtime"
import * as Schedule from "effect/Schedule"
import * as String from "effect/String"
import * as Command from "effect/unstable/cli/Command"
import * as Prompt from "effect/unstable/cli/Prompt"
import * as Command from "effect/cli/Command"
import * as Prompt from "effect/cli/Prompt"
import Open from "open"

export class LoginCommandError extends Data.TaggedError("LoginCommandError")<{
Expand Down
4 changes: 2 additions & 2 deletions packages/cli/src/commands/auth/logout.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import * as Console from "effect/Console"
import * as Data from "effect/Data"
import * as Effect from "effect/Effect"
import * as Runtime from "effect/Runtime"
import * as Command from "effect/unstable/cli/Command"
import * as Prompt from "effect/unstable/cli/Prompt"
import * as Command from "effect/cli/Command"
import * as Prompt from "effect/cli/Prompt"

export class LogoutCommandError extends Data.TaggedError("LogoutCommandError")<{
readonly cause: AuthError.AuthCacheError
Expand Down
6 changes: 3 additions & 3 deletions packages/cli/src/commands/auth/token.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import * as Effect from "effect/Effect"
import * as Redacted from "effect/Redacted"
import * as Runtime from "effect/Runtime"
import * as String from "effect/String"
import * as Argument from "effect/unstable/cli/Argument"
import * as Command from "effect/unstable/cli/Command"
import * as Flag from "effect/unstable/cli/Flag"
import * as Argument from "effect/cli/Argument"
import * as Command from "effect/cli/Command"
import * as Flag from "effect/cli/Flag"

export class TokenCommandError extends Data.TaggedError("TokenCommandError")<{
readonly cause?:
Expand Down
6 changes: 3 additions & 3 deletions packages/cli/src/commands/query.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import * as Layer from "effect/Layer"
import * as Option from "effect/Option"
import type * as Redacted from "effect/Redacted"
import * as Runtime from "effect/Runtime"
import * as Argument from "effect/unstable/cli/Argument"
import * as Command from "effect/unstable/cli/Command"
import * as Flag from "effect/unstable/cli/Flag"
import * as Argument from "effect/cli/Argument"
import * as Command from "effect/cli/Command"
import * as Flag from "effect/cli/Flag"

type ResultFormat = "json" | "jsonl" | "pretty" | "table"
const ResultFormats: ReadonlyArray<ResultFormat> = ["json", "jsonl", "pretty", "table"]
Expand Down
Loading
Loading