@polyester/sdk 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/_virtual/_rolldown/runtime.js +1 -15
- package/dist/catalogs/snapshot-validation.js +63 -63
- package/dist/catalogs/snapshot-validation.js.map +1 -1
- package/dist/services/accounts/accounts.js +1 -1
- package/dist/services/accounts/accounts.js.map +1 -1
- package/dist/services/accounts/accounts.schemas.d.ts +13 -13
- package/dist/services/accounts/accounts.schemas.d.ts.map +1 -1
- package/dist/services/accounts/accounts.schemas.js +11 -11
- package/dist/services/accounts/accounts.schemas.js.map +1 -1
- package/dist/services/address-book/address-book.js.map +1 -1
- package/dist/services/address-book/address-book.schemas.d.ts +751 -751
- package/dist/services/address-book/address-book.schemas.d.ts.map +1 -1
- package/dist/services/address-book/address-book.schemas.js +160 -159
- package/dist/services/address-book/address-book.schemas.js.map +1 -1
- package/dist/services/api-keys/api-keys.d.ts +6 -6
- package/dist/services/api-keys/api-keys.d.ts.map +1 -1
- package/dist/services/api-keys/api-keys.js.map +1 -1
- package/dist/services/api-keys/api-keys.schemas.d.ts +62 -62
- package/dist/services/api-keys/api-keys.schemas.d.ts.map +1 -1
- package/dist/services/api-keys/api-keys.schemas.js +34 -34
- package/dist/services/api-keys/api-keys.schemas.js.map +1 -1
- package/dist/services/auth/auth.d.ts +39 -39
- package/dist/services/auth/auth.d.ts.map +1 -1
- package/dist/services/auth/auth.js +19 -18
- package/dist/services/auth/auth.js.map +1 -1
- package/dist/services/auth/profile/profile.d.ts +2 -2
- package/dist/services/auth/profile/profile.d.ts.map +1 -1
- package/dist/services/auth/profile/profile.js +3 -2
- package/dist/services/auth/profile/profile.js.map +1 -1
- package/dist/services/auth/profile/profile.schemas.d.ts +41 -41
- package/dist/services/auth/profile/profile.schemas.d.ts.map +1 -1
- package/dist/services/auth/profile/profile.schemas.js +27 -27
- package/dist/services/auth/profile/profile.schemas.js.map +1 -1
- package/dist/services/auth/session.schemas.js +17 -17
- package/dist/services/auth/session.schemas.js.map +1 -1
- package/dist/services/balances/balances.d.ts.map +1 -1
- package/dist/services/balances/balances.js +3 -2
- package/dist/services/balances/balances.js.map +1 -1
- package/dist/services/balances/balances.schemas.d.ts +95 -95
- package/dist/services/balances/balances.schemas.d.ts.map +1 -1
- package/dist/services/balances/balances.schemas.js +61 -61
- package/dist/services/balances/balances.schemas.js.map +1 -1
- package/dist/services/candles/candles.d.ts.map +1 -1
- package/dist/services/candles/candles.js +5 -4
- package/dist/services/candles/candles.js.map +1 -1
- package/dist/services/candles/candles.schemas.d.ts +64 -64
- package/dist/services/candles/candles.schemas.d.ts.map +1 -1
- package/dist/services/candles/candles.schemas.js +47 -47
- package/dist/services/candles/candles.schemas.js.map +1 -1
- package/dist/services/chain-analytics/chain-analytics.js.map +1 -1
- package/dist/services/chain-analytics/chain-analytics.schemas.d.ts +68 -68
- package/dist/services/chain-analytics/chain-analytics.schemas.d.ts.map +1 -1
- package/dist/services/chain-analytics/chain-analytics.schemas.js +29 -29
- package/dist/services/chain-analytics/chain-analytics.schemas.js.map +1 -1
- package/dist/services/deposit/deposit.js.map +1 -1
- package/dist/services/deposit/deposit.schemas.d.ts +17 -17
- package/dist/services/deposit/deposit.schemas.d.ts.map +1 -1
- package/dist/services/deposit/deposit.schemas.js +11 -11
- package/dist/services/deposit/deposit.schemas.js.map +1 -1
- package/dist/services/guard-signer/guard-signer.js.map +1 -1
- package/dist/services/guard-signer/guard-signer.schemas.d.ts +75 -75
- package/dist/services/guard-signer/guard-signer.schemas.d.ts.map +1 -1
- package/dist/services/guard-signer/guard-signer.schemas.js +42 -42
- package/dist/services/guard-signer/guard-signer.schemas.js.map +1 -1
- package/dist/services/heatmap/heatmap.d.ts.map +1 -1
- package/dist/services/heatmap/heatmap.js +5 -4
- package/dist/services/heatmap/heatmap.js.map +1 -1
- package/dist/services/heatmap/heatmap.schemas.d.ts +138 -138
- package/dist/services/heatmap/heatmap.schemas.d.ts.map +1 -1
- package/dist/services/heatmap/heatmap.schemas.js +47 -47
- package/dist/services/heatmap/heatmap.schemas.js.map +1 -1
- package/dist/services/internal-transfers/internal-transfers.js.map +1 -1
- package/dist/services/internal-transfers/internal-transfers.schemas.d.ts +53 -53
- package/dist/services/internal-transfers/internal-transfers.schemas.d.ts.map +1 -1
- package/dist/services/internal-transfers/internal-transfers.schemas.js +27 -27
- package/dist/services/internal-transfers/internal-transfers.schemas.js.map +1 -1
- package/dist/services/lifecycle/lifecycle.d.ts.map +1 -1
- package/dist/services/lifecycle/lifecycle.js +3 -2
- package/dist/services/lifecycle/lifecycle.js.map +1 -1
- package/dist/services/lifecycle/lifecycle.schemas.d.ts +614 -614
- package/dist/services/lifecycle/lifecycle.schemas.d.ts.map +1 -1
- package/dist/services/lifecycle/lifecycle.schemas.js +146 -146
- package/dist/services/lifecycle/lifecycle.schemas.js.map +1 -1
- package/dist/services/market-data/market-data.d.ts.map +1 -1
- package/dist/services/market-data/market-data.js +4 -3
- package/dist/services/market-data/market-data.js.map +1 -1
- package/dist/services/market-data/market-data.schemas.d.ts +19 -19
- package/dist/services/market-data/market-data.schemas.d.ts.map +1 -1
- package/dist/services/market-data/market-data.schemas.js +50 -50
- package/dist/services/market-data/market-data.schemas.js.map +1 -1
- package/dist/services/market-overview/market-overview.d.ts.map +1 -1
- package/dist/services/market-overview/market-overview.js +3 -2
- package/dist/services/market-overview/market-overview.js.map +1 -1
- package/dist/services/market-overview/market-overview.schemas.d.ts +37 -37
- package/dist/services/market-overview/market-overview.schemas.d.ts.map +1 -1
- package/dist/services/market-overview/market-overview.schemas.js +33 -33
- package/dist/services/market-overview/market-overview.schemas.js.map +1 -1
- package/dist/services/mfa/mfa.js +1 -1
- package/dist/services/mfa/mfa.js.map +1 -1
- package/dist/services/mfa/mfa.schemas.d.ts +206 -206
- package/dist/services/mfa/mfa.schemas.d.ts.map +1 -1
- package/dist/services/mfa/mfa.schemas.js +83 -83
- package/dist/services/mfa/mfa.schemas.js.map +1 -1
- package/dist/services/orderbook/orderbook.d.ts +2 -2
- package/dist/services/orderbook/orderbook.d.ts.map +1 -1
- package/dist/services/orderbook/orderbook.js +3 -2
- package/dist/services/orderbook/orderbook.js.map +1 -1
- package/dist/services/orderbook/orderbook.schemas.d.ts +23 -23
- package/dist/services/orderbook/orderbook.schemas.d.ts.map +1 -1
- package/dist/services/orderbook/orderbook.schemas.js +15 -15
- package/dist/services/orderbook/orderbook.schemas.js.map +1 -1
- package/dist/services/orders/order-errors.schemas.d.ts +18 -18
- package/dist/services/orders/order-errors.schemas.d.ts.map +1 -1
- package/dist/services/orders/order-errors.schemas.js +8 -8
- package/dist/services/orders/order-errors.schemas.js.map +1 -1
- package/dist/services/orders/orders-batch.schemas.d.ts +504 -504
- package/dist/services/orders/orders-batch.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-batch.schemas.js +117 -117
- package/dist/services/orders/orders-batch.schemas.js.map +1 -1
- package/dist/services/orders/orders-identifiers.schemas.js +5 -5
- package/dist/services/orders/orders-identifiers.schemas.js.map +1 -1
- package/dist/services/orders/orders-input.schemas.d.ts +648 -648
- package/dist/services/orders/orders-input.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-input.schemas.js +95 -95
- package/dist/services/orders/orders-input.schemas.js.map +1 -1
- package/dist/services/orders/orders-modify.schemas.d.ts +351 -351
- package/dist/services/orders/orders-modify.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-modify.schemas.js +44 -44
- package/dist/services/orders/orders-modify.schemas.js.map +1 -1
- package/dist/services/orders/orders-output.schemas.d.ts +183 -183
- package/dist/services/orders/orders-output.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-output.schemas.js +49 -49
- package/dist/services/orders/orders-output.schemas.js.map +1 -1
- package/dist/services/orders/orders-risk.schemas.d.ts +226 -226
- package/dist/services/orders/orders-risk.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-risk.schemas.js +69 -69
- package/dist/services/orders/orders-risk.schemas.js.map +1 -1
- package/dist/services/orders/orders.d.ts +6 -6
- package/dist/services/orders/orders.d.ts.map +1 -1
- package/dist/services/orders/orders.js +4 -3
- package/dist/services/orders/orders.js.map +1 -1
- package/dist/services/policies/api-key-policies/api-key-policies.d.ts +6 -6
- package/dist/services/policies/api-key-policies/api-key-policies.d.ts.map +1 -1
- package/dist/services/policies/api-key-policies/api-key-policies.js.map +1 -1
- package/dist/services/policies/api-key-policies/api-key-policies.schemas.d.ts +105 -105
- package/dist/services/policies/api-key-policies/api-key-policies.schemas.d.ts.map +1 -1
- package/dist/services/policies/api-key-policies/api-key-policies.schemas.js +49 -49
- package/dist/services/policies/api-key-policies/api-key-policies.schemas.js.map +1 -1
- package/dist/services/policies/shared.d.ts +5 -5
- package/dist/services/policies/shared.d.ts.map +1 -1
- package/dist/services/policies/shared.js +10 -10
- package/dist/services/policies/shared.js.map +1 -1
- package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts +6 -6
- package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts.map +1 -1
- package/dist/services/policies/subaccount-policies/subaccount-policies.js +3 -2
- package/dist/services/policies/subaccount-policies/subaccount-policies.js.map +1 -1
- package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts +124 -124
- package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts.map +1 -1
- package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js +75 -75
- package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js.map +1 -1
- package/dist/services/shared.js +11 -11
- package/dist/services/shared.js.map +1 -1
- package/dist/services/social-verification/social-verification.d.ts +3 -3
- package/dist/services/social-verification/social-verification.d.ts.map +1 -1
- package/dist/services/social-verification/social-verification.js.map +1 -1
- package/dist/services/social-verification/social-verification.schemas.d.ts +54 -54
- package/dist/services/social-verification/social-verification.schemas.d.ts.map +1 -1
- package/dist/services/social-verification/social-verification.schemas.js +28 -28
- package/dist/services/social-verification/social-verification.schemas.js.map +1 -1
- package/dist/services/subaccounts/subaccounts.d.ts +14 -14
- package/dist/services/subaccounts/subaccounts.d.ts.map +1 -1
- package/dist/services/subaccounts/subaccounts.js +9 -8
- package/dist/services/subaccounts/subaccounts.js.map +1 -1
- package/dist/services/subaccounts/subaccounts.schemas.d.ts +135 -135
- package/dist/services/subaccounts/subaccounts.schemas.d.ts.map +1 -1
- package/dist/services/subaccounts/subaccounts.schemas.js +72 -72
- package/dist/services/subaccounts/subaccounts.schemas.js.map +1 -1
- package/dist/services/trades/trades.d.ts +2 -2
- package/dist/services/trades/trades.d.ts.map +1 -1
- package/dist/services/trades/trades.js +3 -2
- package/dist/services/trades/trades.js.map +1 -1
- package/dist/services/trades/trades.schemas.d.ts +31 -31
- package/dist/services/trades/trades.schemas.d.ts.map +1 -1
- package/dist/services/trades/trades.schemas.js +24 -24
- package/dist/services/trades/trades.schemas.js.map +1 -1
- package/dist/services/trading-withdraws/trading-withdraws.js +1 -1
- package/dist/services/trading-withdraws/trading-withdraws.js.map +1 -1
- package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts +45 -45
- package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts.map +1 -1
- package/dist/services/trading-withdraws/trading-withdraws.schemas.js +36 -36
- package/dist/services/trading-withdraws/trading-withdraws.schemas.js.map +1 -1
- package/dist/services/transfers/transfers.d.ts.map +1 -1
- package/dist/services/transfers/transfers.js +3 -2
- package/dist/services/transfers/transfers.js.map +1 -1
- package/dist/services/transfers/transfers.schemas.d.ts +42 -42
- package/dist/services/transfers/transfers.schemas.d.ts.map +1 -1
- package/dist/services/transfers/transfers.schemas.js +30 -30
- package/dist/services/transfers/transfers.schemas.js.map +1 -1
- package/dist/services/triggers/trigger-child-order.schemas.js +23 -23
- package/dist/services/triggers/trigger-child-order.schemas.js.map +1 -1
- package/dist/services/triggers/trigger-input.schemas.d.ts +226 -226
- package/dist/services/triggers/trigger-input.schemas.d.ts.map +1 -1
- package/dist/services/triggers/trigger-input.schemas.js +53 -53
- package/dist/services/triggers/trigger-input.schemas.js.map +1 -1
- package/dist/services/triggers/triggers-output.schemas.d.ts +209 -209
- package/dist/services/triggers/triggers-output.schemas.d.ts.map +1 -1
- package/dist/services/triggers/triggers-output.schemas.js +152 -152
- package/dist/services/triggers/triggers-output.schemas.js.map +1 -1
- package/dist/services/triggers/triggers.d.ts.map +1 -1
- package/dist/services/triggers/triggers.js +4 -3
- package/dist/services/triggers/triggers.js.map +1 -1
- package/dist/services/whiteboard/whiteboard.js.map +1 -1
- package/dist/services/whiteboard/whiteboard.schemas.d.ts +379 -379
- package/dist/services/whiteboard/whiteboard.schemas.d.ts.map +1 -1
- package/dist/services/whiteboard/whiteboard.schemas.js +71 -71
- package/dist/services/whiteboard/whiteboard.schemas.js.map +1 -1
- package/dist/services/zipper/zipper.js.map +1 -1
- package/dist/services/zipper/zipper.schemas.d.ts +1 -1
- package/dist/services/zipper/zipper.schemas.js +54 -54
- package/dist/services/zipper/zipper.schemas.js.map +1 -1
- package/dist/shared/account-scope.d.ts +6 -6
- package/dist/shared/account-scope.d.ts.map +1 -1
- package/dist/shared/account-scope.js +3 -3
- package/dist/shared/account-scope.js.map +1 -1
- package/dist/shared/connect-error-mapping.js +2 -2
- package/dist/shared/connect-error-mapping.js.map +1 -1
- package/dist/shared/rate-limit.schemas.d.ts +12 -12
- package/dist/shared/rate-limit.schemas.d.ts.map +1 -1
- package/dist/shared/rate-limit.schemas.js +7 -7
- package/dist/shared/rate-limit.schemas.js.map +1 -1
- package/dist/shared/schemas.js +26 -26
- package/dist/shared/schemas.js.map +1 -1
- package/dist/shared/validation.js +1 -6
- package/dist/shared/validation.js.map +1 -1
- package/dist/utils/connect-order-errors.js +2 -2
- package/dist/utils/connect-order-errors.js.map +1 -1
- package/package.json +3 -3
- package/dist/shared/validation.d.ts +0 -14
- package/dist/shared/validation.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-keys.schemas.js","names":["
|
|
1
|
+
{"version":3,"file":"api-keys.schemas.js","names":["Proto.ApiKeyStatus"],"sources":["../../../src/services/api-keys/api-keys.schemas.ts"],"sourcesContent":["import * as Proto from \"../../gen/auth/v1/api_keys_pb.js\";\nimport * as v from \"valibot\";\nimport { toTimestamp } from \"../../utils/timestamp.js\";\nimport { tsObjToMs, tsObjToNsString } from \"../../utils/time.js\";\nimport {\n OptionalPublicIdSchema,\n OptionalTimestampMsSchema,\n BigIntStringSchema,\n TimestampMsSchema,\n TimestampSchema,\n positiveBigintStringInputSchema,\n} from \"../../shared/schemas.js\";\nimport {\n AccountScopeInputEntries,\n accountScopeToSubaccountId,\n} from \"../../shared/account-scope.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { bytesToHex } from \"@noble/hashes/utils.js\";\nimport {\n API_KEY_STATUS_VALUES,\n API_KEY_UPDATE_STATUS_VALUES,\n ApiKeyStatusCodec,\n} from \"./api-keys.codecs.js\";\nimport { buildProtoPatch, defineProtoPatchFields } from \"../../utils/proto-patch.js\";\n\nconst ApiKeyStatusSchema = v.picklist(API_KEY_STATUS_VALUES);\nconst ApiKeyUpdateStatusSchema = v.picklist(API_KEY_UPDATE_STATUS_VALUES);\n\nexport type ApiKeyStatus = v.InferOutput<typeof ApiKeyStatusSchema>;\n\nexport const ApiKeysListInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n }),\n v.transform(({ account }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n })),\n);\n\nexport type ApiKeysListInput = v.InferInput<typeof ApiKeysListInputSchema>;\n\nexport const ApiKeyIdInputSchema = v.strictObject({\n keyId: v.pipe(v.string(), v.trim(), v.minLength(1, \"keyId is required\")),\n});\n\nexport type ApiKeyIdInput = v.InferInput<typeof ApiKeyIdInputSchema>;\n\nexport const ApiKeysCreateInputSchema = v.pipe(\n v.strictObject({\n label: v.string(),\n icon: v.optional(v.string(), \"\"),\n color: v.optional(v.string(), \"\"),\n ...AccountScopeInputEntries,\n ipWhitelist: v.optional(v.array(v.string()), []),\n publicKeyEd25519: v.instance(Uint8Array<ArrayBufferLike>),\n }),\n v.transform(({ account, ...input }) => ({\n ...input,\n subaccountId: accountScopeToSubaccountId(account),\n })),\n);\n\nexport type ApiKeysCreateInput = v.InferInput<typeof ApiKeysCreateInputSchema>;\n\ntype ApiKeyPatch = {\n label?: string;\n icon?: string;\n color?: string;\n status?: v.InferOutput<typeof ApiKeyUpdateStatusSchema>;\n ipWhitelist?: string[];\n expiresAtIso?: string | null;\n};\n\nconst API_KEY_PATCH_FIELDS = defineProtoPatchFields<ApiKeyPatch>()({\n label: { path: \"label\", encode: (label) => ({ label }) },\n icon: { path: \"icon\", encode: (icon) => ({ icon }) },\n color: { path: \"color\", encode: (color) => ({ color }) },\n status: {\n path: \"status\",\n encode: (status) => ({ status: ApiKeyStatusCodec.inputToProto[status] }),\n },\n ipWhitelist: {\n path: \"ip_whitelist\",\n encode: (ipWhitelist) => ({ ipWhitelist }),\n },\n expiresAtIso: {\n path: \"expires_at\",\n encode: (expiresAtIso) => {\n if (expiresAtIso === null) return {};\n const expiresAtMs = new Date(expiresAtIso).getTime();\n return {\n expiresAt: toTimestamp({\n seconds: BigInt(Math.floor(expiresAtMs / 1000)),\n nanos: (expiresAtMs % 1000) * 1_000_000,\n }),\n };\n },\n },\n});\n\nexport const ApiKeysUpdateInputSchema = v.pipe(\n v.strictObject({\n keyId: v.pipe(v.string(), v.trim(), v.minLength(1, \"keyId is required\")),\n expectedRevision: positiveBigintStringInputSchema(\"expectedRevision\"),\n label: v.optional(v.string()),\n icon: v.optional(v.string()),\n color: v.optional(v.string()),\n status: v.optional(ApiKeyUpdateStatusSchema),\n ipWhitelist: v.optional(v.array(v.string())),\n expiresAtIso: v.optional(\n v.nullable(\n v.pipe(\n v.string(),\n v.check(\n (value) => Number.isFinite(Date.parse(value)),\n \"expiresAtIso must be a valid timestamp\",\n ),\n ),\n ),\n ),\n }),\n v.check(\n ({ label, icon, color, status, ipWhitelist, expiresAtIso }) =>\n label !== undefined ||\n icon !== undefined ||\n color !== undefined ||\n status !== undefined ||\n ipWhitelist !== undefined ||\n expiresAtIso !== undefined,\n \"At least one API key field must be provided\",\n ),\n v.transform(({ keyId, expectedRevision, ...input }) => {\n const { patch: apiKey, updateMask } = buildProtoPatch(input, API_KEY_PATCH_FIELDS);\n return { keyId, apiKey, updateMask, expectedRevision };\n }),\n);\n\nexport type ApiKeysUpdateInput = v.InferInput<typeof ApiKeysUpdateInputSchema>;\n\nexport const ApiKeySchema = v.pipe(\n v.object({\n keyId: v.string(),\n label: v.optional(v.string(), \"\"),\n icon: v.optional(v.string(), \"\"),\n color: v.optional(v.string(), \"\"),\n ipWhitelist: v.optional(v.array(v.string()), []),\n subaccountId: OptionalPublicIdSchema,\n policyId: OptionalPublicIdSchema,\n createdAt: TimestampMsSchema,\n updatedAt: v.optional(TimestampSchema),\n lastUsedAt: OptionalTimestampMsSchema,\n publicKeyEd25519: v.instance(Uint8Array<ArrayBufferLike>),\n expiresAt: v.pipe(\n v.optional(TimestampSchema),\n v.transform((v) => {\n const ms = tsObjToMs(v);\n return ms ? new Date(ms).toISOString() : undefined;\n }),\n ),\n status: v.pipe(\n v.enum(Proto.ApiKeyStatus),\n v.transform((v) =>\n requiredEnumLabel(\n ApiKeyStatusCodec.protoToOutput,\n v,\n \"PolyesterClient.ApiKeySchema\",\n \"status\",\n ),\n ),\n ),\n createdByActor: v.string(),\n revision: BigIntStringSchema,\n }),\n v.transform(({ subaccountId, updatedAt, ...rest }) => {\n const hex = bytesToHex(rest.publicKeyEd25519);\n return {\n ...rest,\n subaccountId,\n updatedAt: tsObjToMs(updatedAt),\n updatedAtNs: tsObjToNsString(updatedAt),\n publicKeyHex: hex,\n };\n }),\n);\n\nexport type ApiKey = v.InferOutput<typeof ApiKeySchema>;\n\nexport const ApiKeysSchema = v.array(ApiKeySchema);\n"],"mappings":"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"}
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
import { validation_d_exports } from "../../shared/validation.js";
|
|
2
1
|
import { SessionLevel } from "../../gen/auth/v1/mfa_pb.js";
|
|
3
2
|
import { PolyesterMutationOptions, PolyesterRequestOptions } from "../../shared/request-options.js";
|
|
4
3
|
import { PolyesterRealtime } from "../../realtime/types.js";
|
|
5
4
|
import "../../realtime/index.js";
|
|
6
5
|
import { ProfileService } from "./profile/profile.js";
|
|
7
6
|
import { Transport } from "@connectrpc/connect";
|
|
7
|
+
import * as v from "valibot";
|
|
8
8
|
//#region src/services/auth/auth.d.ts
|
|
9
|
-
declare const LoginWithWalletInputSchema:
|
|
10
|
-
readonly smartAccountAddress:
|
|
11
|
-
readonly nonce:
|
|
12
|
-
readonly signature:
|
|
13
|
-
readonly userAgent:
|
|
14
|
-
readonly ip:
|
|
15
|
-
readonly primaryWalletAddress:
|
|
16
|
-
readonly walletProvider:
|
|
9
|
+
declare const LoginWithWalletInputSchema: v.StrictObjectSchema<{
|
|
10
|
+
readonly smartAccountAddress: v.StringSchema<undefined>;
|
|
11
|
+
readonly nonce: v.StringSchema<undefined>;
|
|
12
|
+
readonly signature: v.StringSchema<undefined>;
|
|
13
|
+
readonly userAgent: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
14
|
+
readonly ip: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
15
|
+
readonly primaryWalletAddress: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
16
|
+
readonly walletProvider: v.OptionalSchema<v.StringSchema<undefined>, "">;
|
|
17
17
|
}, undefined>;
|
|
18
|
-
type LoginWithWalletInput =
|
|
18
|
+
type LoginWithWalletInput = v.InferInput<typeof LoginWithWalletInputSchema>;
|
|
19
19
|
interface AuthServiceTransports {
|
|
20
20
|
publicApi: Transport;
|
|
21
21
|
authApi: Transport;
|
|
22
22
|
}
|
|
23
|
-
declare const MeSchema:
|
|
24
|
-
readonly accountId:
|
|
25
|
-
readonly apiKeyId:
|
|
26
|
-
readonly username:
|
|
27
|
-
readonly session:
|
|
28
|
-
readonly sessionId:
|
|
29
|
-
readonly sessionLevel:
|
|
30
|
-
readonly authenticationMethods:
|
|
31
|
-
readonly authTime:
|
|
32
|
-
readonly seconds:
|
|
33
|
-
readonly nanos:
|
|
34
|
-
}, undefined>, undefined>,
|
|
23
|
+
declare const MeSchema: v.ObjectSchema<{
|
|
24
|
+
readonly accountId: v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>;
|
|
25
|
+
readonly apiKeyId: v.SchemaWithPipe<readonly [v.OptionalSchema<v.BigintSchema<undefined>, undefined>, v.TransformAction<bigint | undefined, string | undefined>]>;
|
|
26
|
+
readonly username: v.StringSchema<undefined>;
|
|
27
|
+
readonly session: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
28
|
+
readonly sessionId: v.StringSchema<undefined>;
|
|
29
|
+
readonly sessionLevel: v.SchemaWithPipe<readonly [v.EnumSchema<typeof SessionLevel, undefined>, v.TransformAction<SessionLevel, "unspecified" | "primaryAuthenticated" | "mfaElevated" | "freshStepUp">]>;
|
|
30
|
+
readonly authenticationMethods: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, readonly []>;
|
|
31
|
+
readonly authTime: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ObjectSchema<{
|
|
32
|
+
readonly seconds: v.BigintSchema<undefined>;
|
|
33
|
+
readonly nanos: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
|
|
34
|
+
}, undefined>, undefined>, v.TransformAction<{
|
|
35
35
|
seconds: bigint;
|
|
36
36
|
nanos: number;
|
|
37
37
|
} | undefined, number | undefined>]>;
|
|
38
|
-
}, undefined>,
|
|
38
|
+
}, undefined>, v.TransformAction<{
|
|
39
39
|
sessionId: string;
|
|
40
40
|
sessionLevel: "unspecified" | "primaryAuthenticated" | "mfaElevated" | "freshStepUp";
|
|
41
41
|
authenticationMethods: string[];
|
|
@@ -47,28 +47,28 @@ declare const MeSchema: validation_d_exports.ObjectSchema<{
|
|
|
47
47
|
authTimeMs: number | undefined;
|
|
48
48
|
}>]>, undefined>;
|
|
49
49
|
}, undefined>;
|
|
50
|
-
type Me =
|
|
51
|
-
declare const LoginWithWalletResponseSchema:
|
|
52
|
-
readonly accessToken:
|
|
53
|
-
readonly expiresAt:
|
|
54
|
-
readonly seconds:
|
|
55
|
-
readonly nanos:
|
|
50
|
+
type Me = v.InferOutput<typeof MeSchema>;
|
|
51
|
+
declare const LoginWithWalletResponseSchema: v.ObjectSchema<{
|
|
52
|
+
readonly accessToken: v.StringSchema<undefined>;
|
|
53
|
+
readonly expiresAt: v.OptionalSchema<v.ObjectSchema<{
|
|
54
|
+
readonly seconds: v.BigintSchema<undefined>;
|
|
55
|
+
readonly nanos: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
|
|
56
56
|
}, undefined>, undefined>;
|
|
57
|
-
readonly accountId:
|
|
58
|
-
readonly username:
|
|
57
|
+
readonly accountId: v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>;
|
|
58
|
+
readonly username: v.StringSchema<undefined>;
|
|
59
59
|
}, undefined>;
|
|
60
|
-
type LoginWithWalletResponse =
|
|
61
|
-
declare const NonceSchema:
|
|
62
|
-
readonly nonce:
|
|
63
|
-
readonly expiresAt:
|
|
64
|
-
readonly seconds:
|
|
65
|
-
readonly nanos:
|
|
66
|
-
}, undefined>, undefined>,
|
|
60
|
+
type LoginWithWalletResponse = v.InferOutput<typeof LoginWithWalletResponseSchema>;
|
|
61
|
+
declare const NonceSchema: v.ObjectSchema<{
|
|
62
|
+
readonly nonce: v.StringSchema<undefined>;
|
|
63
|
+
readonly expiresAt: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ObjectSchema<{
|
|
64
|
+
readonly seconds: v.BigintSchema<undefined>;
|
|
65
|
+
readonly nanos: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
|
|
66
|
+
}, undefined>, undefined>, v.TransformAction<{
|
|
67
67
|
seconds: bigint;
|
|
68
68
|
nanos: number;
|
|
69
69
|
} | undefined, number | undefined>]>;
|
|
70
70
|
}, undefined>;
|
|
71
|
-
type Nonce =
|
|
71
|
+
type Nonce = v.InferOutput<typeof NonceSchema>;
|
|
72
72
|
/**
|
|
73
73
|
* Handles wallet-based authentication, caller introspection, and authenticated profile operations.
|
|
74
74
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","names":[],"sources":["../../../src/services/auth/auth.ts"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","names":[],"sources":["../../../src/services/auth/auth.ts"],"mappings":";;;;;;;;cAmBa,4BAA0B,EAAA;;;;;;;;;KAU3B,uBAAuB,EAAE,kBAAkB;UAEtC;EACb,WAAW;EACX,SAAS;;cAGP,UAAQ,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;KAOF,KAAK,EAAE,mBAAmB;cAEhC,+BAA6B,EAAA;;;;;;;;;KAOvB,0BAA0B,EAAE,mBAAmB;cAErD,aAAW,EAAA;;;;;;;;;;KAKL,QAAQ,EAAE,mBAAmB;;;;cAK5B;;EAGT,SAAS;EAEG,YAAA,YAAY,uBAAuB,UAAU;;;;EASnD,GAAG,UAAU,0BAA0B,QAAQ;;;;;;;EAW/C,kBACF,6BACA,UAAU,0BACX,QAAQ;;;;YAaK,gBACZ,OAAO,sBACP,UAAU,2BACX,QAAQ"}
|
|
@@ -1,34 +1,35 @@
|
|
|
1
|
-
import { parse, validation_exports } from "../../shared/validation.js";
|
|
2
1
|
import { AuthService as AuthService$1 } from "../../gen/auth/v1/auth_pb.js";
|
|
3
2
|
import { OptionalPublicIdSchema, OptionalTimestampMsSchema, PublicIdSchema, TimestampSchema } from "../../shared/schemas.js";
|
|
3
|
+
import { parse } from "../../shared/validation.js";
|
|
4
4
|
import { toConnectCallOptions } from "../../shared/request-options.js";
|
|
5
5
|
import { ProfileService } from "./profile/profile.js";
|
|
6
6
|
import { MfaSessionInfoSchema } from "../mfa/mfa.schemas.js";
|
|
7
7
|
import { createClient } from "@connectrpc/connect";
|
|
8
|
+
import * as v from "valibot";
|
|
8
9
|
//#region src/services/auth/auth.ts
|
|
9
|
-
const LoginWithWalletInputSchema =
|
|
10
|
-
smartAccountAddress:
|
|
11
|
-
nonce:
|
|
12
|
-
signature:
|
|
13
|
-
userAgent:
|
|
14
|
-
ip:
|
|
15
|
-
primaryWalletAddress:
|
|
16
|
-
walletProvider:
|
|
10
|
+
const LoginWithWalletInputSchema = v.strictObject({
|
|
11
|
+
smartAccountAddress: v.string(),
|
|
12
|
+
nonce: v.string(),
|
|
13
|
+
signature: v.string(),
|
|
14
|
+
userAgent: v.optional(v.string(), ""),
|
|
15
|
+
ip: v.optional(v.string(), ""),
|
|
16
|
+
primaryWalletAddress: v.optional(v.string(), ""),
|
|
17
|
+
walletProvider: v.optional(v.string(), "")
|
|
17
18
|
});
|
|
18
|
-
const MeSchema =
|
|
19
|
+
const MeSchema = v.object({
|
|
19
20
|
accountId: PublicIdSchema,
|
|
20
21
|
apiKeyId: OptionalPublicIdSchema,
|
|
21
|
-
username:
|
|
22
|
-
session:
|
|
22
|
+
username: v.string(),
|
|
23
|
+
session: v.optional(MfaSessionInfoSchema)
|
|
23
24
|
});
|
|
24
|
-
const LoginWithWalletResponseSchema =
|
|
25
|
-
accessToken:
|
|
26
|
-
expiresAt:
|
|
25
|
+
const LoginWithWalletResponseSchema = v.object({
|
|
26
|
+
accessToken: v.string(),
|
|
27
|
+
expiresAt: v.optional(TimestampSchema),
|
|
27
28
|
accountId: PublicIdSchema,
|
|
28
|
-
username:
|
|
29
|
+
username: v.string()
|
|
29
30
|
});
|
|
30
|
-
const NonceSchema =
|
|
31
|
-
nonce:
|
|
31
|
+
const NonceSchema = v.object({
|
|
32
|
+
nonce: v.string(),
|
|
32
33
|
expiresAt: OptionalTimestampMsSchema
|
|
33
34
|
});
|
|
34
35
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","names":["
|
|
1
|
+
{"version":3,"file":"auth.js","names":["#publicClient","Proto.AuthService","#authClient"],"sources":["../../../src/services/auth/auth.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/auth/v1/auth_pb.js\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport { ProfileService } from \"./profile/profile.js\";\nimport {\n OptionalPublicIdSchema,\n OptionalTimestampMsSchema,\n PublicIdSchema,\n TimestampSchema,\n} from \"../../shared/schemas.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport { MfaSessionInfoSchema } from \"../mfa/mfa.schemas.js\";\nimport type { PolyesterRealtime } from \"../../realtime/index.js\";\n\nexport const LoginWithWalletInputSchema = v.strictObject({\n smartAccountAddress: v.string(),\n nonce: v.string(),\n signature: v.string(),\n userAgent: v.optional(v.string(), \"\"),\n ip: v.optional(v.string(), \"\"),\n primaryWalletAddress: v.optional(v.string(), \"\"),\n walletProvider: v.optional(v.string(), \"\"),\n});\n\nexport type LoginWithWalletInput = v.InferInput<typeof LoginWithWalletInputSchema>;\n\nexport interface AuthServiceTransports {\n publicApi: Transport;\n authApi: Transport;\n}\n\nconst MeSchema = v.object({\n accountId: PublicIdSchema,\n apiKeyId: OptionalPublicIdSchema,\n username: v.string(),\n session: v.optional(MfaSessionInfoSchema),\n});\n\nexport type Me = v.InferOutput<typeof MeSchema>;\n\nconst LoginWithWalletResponseSchema = v.object({\n accessToken: v.string(),\n expiresAt: v.optional(TimestampSchema),\n accountId: PublicIdSchema,\n username: v.string(),\n});\n\nexport type LoginWithWalletResponse = v.InferOutput<typeof LoginWithWalletResponseSchema>;\n\nconst NonceSchema = v.object({\n nonce: v.string(),\n expiresAt: OptionalTimestampMsSchema,\n});\n\nexport type Nonce = v.InferOutput<typeof NonceSchema>;\n\n/**\n * Handles wallet-based authentication, caller introspection, and authenticated profile operations.\n */\nexport class AuthService {\n #publicClient: Client<typeof Proto.AuthService>;\n #authClient: Client<typeof Proto.AuthService>;\n profile: ProfileService;\n\n constructor(transports: AuthServiceTransports, realtime: PolyesterRealtime) {\n this.#publicClient = createClient(Proto.AuthService, transports.publicApi);\n this.#authClient = createClient(Proto.AuthService, transports.authApi);\n this.profile = new ProfileService(transports.authApi, realtime);\n }\n\n /**\n * Returns the authenticated caller's account context, including account ID, optional API key ID, username, and session assurance details from the presented token or API key.\n */\n async me(options?: PolyesterRequestOptions): Promise<Me> {\n const res = await this.#authClient.me({}, toConnectCallOptions(options));\n return parse(MeSchema, res);\n }\n\n /**\n * Requests a short-lived nonce for the given smart-account EVM address.\n * The nonce is single-purpose, replaced by subsequent requests, and expires\n * after about five minutes. The optional expiry is milliseconds since the\n * Unix epoch.\n */\n async requestLoginNonce(\n smartAccountAddress: string,\n options?: PolyesterRequestOptions,\n ): Promise<Nonce> {\n return parse(\n NonceSchema,\n await this.#publicClient.getNonce(\n { smartAccountAddress },\n toConnectCallOptions(options),\n ),\n );\n }\n\n /**\n * Exchanges a signed login nonce for an authenticated session token and account identity returned by the auth API.\n */\n protected async loginWithWallet(\n input: LoginWithWalletInput,\n options?: PolyesterMutationOptions,\n ): Promise<LoginWithWalletResponse> {\n const validatedInput = parse(LoginWithWalletInputSchema, input);\n const res = await this.#publicClient.loginWithWallet(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(LoginWithWalletResponseSchema, res);\n }\n}\n"],"mappings":";;;;;;;;;AAmBA,MAAa,6BAA6B,EAAE,aAAa;CACrD,qBAAqB,EAAE,OAAO;CAC9B,OAAO,EAAE,OAAO;CAChB,WAAW,EAAE,OAAO;CACpB,WAAW,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CACpC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CAC7B,sBAAsB,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;CAC/C,gBAAgB,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;AAC7C,CAAC;AASD,MAAM,WAAW,EAAE,OAAO;CACtB,WAAW;CACX,UAAU;CACV,UAAU,EAAE,OAAO;CACnB,SAAS,EAAE,SAAS,oBAAoB;AAC5C,CAAC;AAID,MAAM,gCAAgC,EAAE,OAAO;CAC3C,aAAa,EAAE,OAAO;CACtB,WAAW,EAAE,SAAS,eAAe;CACrC,WAAW;CACX,UAAU,EAAE,OAAO;AACvB,CAAC;AAID,MAAM,cAAc,EAAE,OAAO;CACzB,OAAO,EAAE,OAAO;CAChB,WAAW;AACf,CAAC;;;;AAOD,IAAa,cAAb,MAAyB;CACrB;CACA;CACA;CAEA,YAAY,YAAmC,UAA6B;EACxE,KAAKA,gBAAgB,aAAaC,eAAmB,WAAW,SAAS;EACzE,KAAKC,cAAc,aAAaD,eAAmB,WAAW,OAAO;EACrE,KAAK,UAAU,IAAI,eAAe,WAAW,SAAS,QAAQ;CAClE;;;;CAKA,MAAM,GAAG,SAAgD;EACrD,MAAM,MAAM,MAAM,KAAKC,YAAY,GAAG,CAAC,GAAG,qBAAqB,OAAO,CAAC;EACvE,OAAO,MAAM,UAAU,GAAG;CAC9B;;;;;;;CAQA,MAAM,kBACF,qBACA,SACc;EACd,OAAO,MACH,aACA,MAAM,KAAKF,cAAc,SACrB,EAAE,oBAAoB,GACtB,qBAAqB,OAAO,CAChC,CACJ;CACJ;;;;CAKA,MAAgB,gBACZ,OACA,SACgC;EAChC,MAAM,iBAAiB,MAAM,4BAA4B,KAAK;EAC9D,MAAM,MAAM,MAAM,KAAKA,cAAc,gBACjC,gBACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,+BAA+B,GAAG;CACnD;AACJ"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { validation_d_exports } from "../../../shared/validation.js";
|
|
2
1
|
import { PolyesterMutationOptions, PolyesterRequestOptions } from "../../../shared/request-options.js";
|
|
3
2
|
import { PolyesterRealtime } from "../../../realtime/types.js";
|
|
4
3
|
import "../../../realtime/index.js";
|
|
5
4
|
import { BaseSubscribeInput } from "../../../shared/types.js";
|
|
6
5
|
import { AccountIdentity, Profile, UpdateProfileInputSchema, UsernameHistoryEntry } from "./profile.schemas.js";
|
|
7
6
|
import { Transport } from "@connectrpc/connect";
|
|
7
|
+
import * as v from "valibot";
|
|
8
8
|
//#region src/services/auth/profile/profile.d.ts
|
|
9
9
|
interface SubscribeIdentityInput extends BaseSubscribeInput<AccountIdentity> {}
|
|
10
10
|
/**
|
|
@@ -20,7 +20,7 @@ declare class ProfileService {
|
|
|
20
20
|
/**
|
|
21
21
|
* Updates only the provided mutable profile fields; omitted fields are unchanged, while present empty strings clear optional text fields such as bio, website, Twitter, and avatar URL.
|
|
22
22
|
*/
|
|
23
|
-
update(input:
|
|
23
|
+
update(input: v.InferInput<typeof UpdateProfileInputSchema>, options?: PolyesterMutationOptions): Promise<Profile>;
|
|
24
24
|
/**
|
|
25
25
|
* Returns the caller's recent username changes, newest first, capped at 20 entries.
|
|
26
26
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.d.ts","names":[],"sources":["../../../../src/services/auth/profile/profile.ts"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"profile.d.ts","names":[],"sources":["../../../../src/services/auth/profile/profile.ts"],"mappings":";;;;;;;;UAsBU,+BAA+B,mBAAmB;;;;cAK/C;;EAIG,YAAA,WAAW,WAAW,UAAU;;;;EAQtC,IAAI,UAAU,0BAA0B,QAAQ;;;;EAShD,OACF,OAAO,EAAE,kBAAkB,2BAC3B,UAAU,2BACX,QAAQ;;;;EAYL,mBAAmB,UAAU,0BAA0B,QAAQ;;;;EAQrE,kBAAkB,OAAO"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { parse
|
|
1
|
+
import { parse } from "../../../shared/validation.js";
|
|
2
2
|
import { toConnectCallOptions } from "../../../shared/request-options.js";
|
|
3
3
|
import { removeUndefined } from "../../../utils/remove-undefined.js";
|
|
4
4
|
import { AccountIdentitySchema, ProfileService as ProfileService$1 } from "../../../gen/auth/v1/profile_pb.js";
|
|
5
5
|
import { AccountIdentitySchema as AccountIdentitySchema$1, ProfileSchema, UpdateProfileInputSchema, UsernameHistoryEntrySchema } from "./profile.schemas.js";
|
|
6
6
|
import { createClient } from "@connectrpc/connect";
|
|
7
|
+
import * as v from "valibot";
|
|
7
8
|
//#region src/services/auth/profile/profile.ts
|
|
8
9
|
/**
|
|
9
10
|
* Manages the authenticated account's public profile and realtime identity updates.
|
|
@@ -36,7 +37,7 @@ var ProfileService = class {
|
|
|
36
37
|
*/
|
|
37
38
|
async getUsernameHistory(options) {
|
|
38
39
|
const res = await this.#client.getUsernameHistory({}, toConnectCallOptions(options));
|
|
39
|
-
return parse(
|
|
40
|
+
return parse(v.array(UsernameHistoryEntrySchema), res.history);
|
|
40
41
|
}
|
|
41
42
|
/**
|
|
42
43
|
* Subscribes to public identity updates and emits normalized account identity records with base58 account IDs, username, avatar URL, and root smart-account address.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","names":["#client","Proto.ProfileService","#realtime","
|
|
1
|
+
{"version":3,"file":"profile.js","names":["#client","Proto.ProfileService","#realtime","Proto.AccountIdentitySchema","AccountIdentitySchema"],"sources":["../../../../src/services/auth/profile/profile.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as Proto from \"../../../gen/auth/v1/profile_pb.js\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../../shared/validation.js\";\nimport { removeUndefined } from \"../../../utils/remove-undefined.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../../shared/request-options.js\";\nimport {\n AccountIdentitySchema,\n ProfileSchema,\n UpdateProfileInputSchema,\n UsernameHistoryEntrySchema,\n type AccountIdentity,\n type Profile,\n type UsernameHistoryEntry,\n} from \"./profile.schemas.js\";\nimport type { BaseSubscribeInput } from \"../../../shared/types.js\";\nimport type { PolyesterRealtime } from \"../../../realtime/index.js\";\n\ninterface SubscribeIdentityInput extends BaseSubscribeInput<AccountIdentity> {}\n\n/**\n * Manages the authenticated account's public profile and realtime identity updates.\n */\nexport class ProfileService {\n #client: Client<typeof Proto.ProfileService>;\n #realtime: PolyesterRealtime;\n\n constructor(transport: Transport, realtime: PolyesterRealtime) {\n this.#client = createClient(Proto.ProfileService, transport);\n this.#realtime = realtime;\n }\n\n /**\n * Fetches the caller's public profile, including username eligibility/cooldown, verified social handles, avatar, VIP tier, and account creation timestamp.\n */\n async get(options?: PolyesterRequestOptions): Promise<Profile> {\n const res = await this.#client.getProfile({}, toConnectCallOptions(options));\n if (!res) throw new Error(\"Profile not found\");\n return parse(ProfileSchema, res);\n }\n\n /**\n * Updates only the provided mutable profile fields; omitted fields are unchanged, while present empty strings clear optional text fields such as bio, website, Twitter, and avatar URL.\n */\n async update(\n input: v.InferInput<typeof UpdateProfileInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<Profile> {\n const validatedInput = parse(UpdateProfileInputSchema, input);\n const res = await this.#client.updateProfile(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n return parse(ProfileSchema, res);\n }\n\n /**\n * Returns the caller's recent username changes, newest first, capped at 20 entries.\n */\n async getUsernameHistory(options?: PolyesterRequestOptions): Promise<UsernameHistoryEntry[]> {\n const res = await this.#client.getUsernameHistory({}, toConnectCallOptions(options));\n return parse(v.array(UsernameHistoryEntrySchema), res.history);\n }\n\n /**\n * Subscribes to public identity updates and emits normalized account identity records with base58 account IDs, username, avatar URL, and root smart-account address.\n */\n subscribeIdentity(input: SubscribeIdentityInput): () => void {\n const channel = \"public:identity:updates:proto\";\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.AccountIdentitySchema,\n onPublication: (data) => {\n const identity = parse(AccountIdentitySchema, data);\n input.onEvent(identity);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AA2BA,IAAa,iBAAb,MAA4B;CACxB;CACA;CAEA,YAAY,WAAsB,UAA6B;EAC3D,KAAKA,UAAU,aAAaC,kBAAsB,SAAS;EAC3D,KAAKC,YAAY;CACrB;;;;CAKA,MAAM,IAAI,SAAqD;EAC3D,MAAM,MAAM,MAAM,KAAKF,QAAQ,WAAW,CAAC,GAAG,qBAAqB,OAAO,CAAC;EAC3E,IAAI,CAAC,KAAK,MAAM,IAAI,MAAM,mBAAmB;EAC7C,OAAO,MAAM,eAAe,GAAG;CACnC;;;;CAKA,MAAM,OACF,OACA,SACgB;EAChB,MAAM,iBAAiB,MAAM,0BAA0B,KAAK;EAC5D,MAAM,MAAM,MAAM,KAAKA,QAAQ,cAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,eAAe,GAAG;CACnC;;;;CAKA,MAAM,mBAAmB,SAAoE;EACzF,MAAM,MAAM,MAAM,KAAKA,QAAQ,mBAAmB,CAAC,GAAG,qBAAqB,OAAO,CAAC;EACnF,OAAO,MAAM,EAAE,MAAM,0BAA0B,GAAG,IAAI,OAAO;CACjE;;;;CAKA,kBAAkB,OAA2C;EAEzD,OAAO,KAAKE,UAAU,oBAAoB;GACtC,SAAA;GACA,QAAQC;GACR,gBAAgB,SAAS;IACrB,MAAM,WAAW,MAAMC,yBAAuB,IAAI;IAClD,MAAM,QAAQ,QAAQ;GAC1B;GACA,mBAAmB,MAAM,SAAS;GAClC,sBAAsB,MAAM,UAAU;GACtC,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as v from "valibot";
|
|
2
2
|
//#region src/services/auth/profile/profile.schemas.d.ts
|
|
3
|
-
declare const ProfileSchema:
|
|
4
|
-
readonly username:
|
|
5
|
-
readonly bio:
|
|
6
|
-
readonly website:
|
|
7
|
-
readonly twitter:
|
|
8
|
-
readonly twitterVerified:
|
|
9
|
-
readonly discord:
|
|
10
|
-
readonly discordVerified:
|
|
11
|
-
readonly avatarUrl:
|
|
12
|
-
readonly createdAt:
|
|
13
|
-
readonly seconds:
|
|
14
|
-
readonly nanos:
|
|
15
|
-
}, undefined>, undefined>,
|
|
3
|
+
declare const ProfileSchema: v.ObjectSchema<{
|
|
4
|
+
readonly username: v.StringSchema<undefined>;
|
|
5
|
+
readonly bio: v.StringSchema<undefined>;
|
|
6
|
+
readonly website: v.StringSchema<undefined>;
|
|
7
|
+
readonly twitter: v.StringSchema<undefined>;
|
|
8
|
+
readonly twitterVerified: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
9
|
+
readonly discord: v.StringSchema<undefined>;
|
|
10
|
+
readonly discordVerified: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
11
|
+
readonly avatarUrl: v.StringSchema<undefined>;
|
|
12
|
+
readonly createdAt: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ObjectSchema<{
|
|
13
|
+
readonly seconds: v.BigintSchema<undefined>;
|
|
14
|
+
readonly nanos: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
|
|
15
|
+
}, undefined>, undefined>, v.TransformAction<{
|
|
16
16
|
seconds: bigint;
|
|
17
17
|
nanos: number;
|
|
18
18
|
} | undefined, number | undefined>]>;
|
|
19
|
-
readonly nextUsernameChangeAt:
|
|
20
|
-
readonly seconds:
|
|
21
|
-
readonly nanos:
|
|
22
|
-
}, undefined>, undefined>,
|
|
19
|
+
readonly nextUsernameChangeAt: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ObjectSchema<{
|
|
20
|
+
readonly seconds: v.BigintSchema<undefined>;
|
|
21
|
+
readonly nanos: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
|
|
22
|
+
}, undefined>, undefined>, v.TransformAction<{
|
|
23
23
|
seconds: bigint;
|
|
24
24
|
nanos: number;
|
|
25
25
|
} | undefined, number | undefined>]>;
|
|
26
|
-
readonly vipTier:
|
|
27
|
-
readonly usernameUnlocked:
|
|
26
|
+
readonly vipTier: v.NumberSchema<undefined>;
|
|
27
|
+
readonly usernameUnlocked: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
28
28
|
}, undefined>;
|
|
29
|
-
type Profile =
|
|
30
|
-
declare const UpdateProfileInputSchema:
|
|
31
|
-
readonly username:
|
|
32
|
-
readonly bio:
|
|
33
|
-
readonly website:
|
|
34
|
-
readonly twitter:
|
|
35
|
-
readonly avatarUrl:
|
|
29
|
+
type Profile = v.InferOutput<typeof ProfileSchema>;
|
|
30
|
+
declare const UpdateProfileInputSchema: v.ObjectSchema<{
|
|
31
|
+
readonly username: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
32
|
+
readonly bio: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
33
|
+
readonly website: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
34
|
+
readonly twitter: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
35
|
+
readonly avatarUrl: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
36
36
|
}, undefined>;
|
|
37
|
-
type UpdateProfileInput =
|
|
38
|
-
declare const UsernameHistoryEntrySchema:
|
|
39
|
-
readonly username:
|
|
40
|
-
readonly setAt:
|
|
41
|
-
readonly seconds:
|
|
42
|
-
readonly nanos:
|
|
43
|
-
}, undefined>, undefined>,
|
|
37
|
+
type UpdateProfileInput = v.InferInput<typeof UpdateProfileInputSchema>;
|
|
38
|
+
declare const UsernameHistoryEntrySchema: v.ObjectSchema<{
|
|
39
|
+
readonly username: v.StringSchema<undefined>;
|
|
40
|
+
readonly setAt: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ObjectSchema<{
|
|
41
|
+
readonly seconds: v.BigintSchema<undefined>;
|
|
42
|
+
readonly nanos: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
|
|
43
|
+
}, undefined>, undefined>, v.TransformAction<{
|
|
44
44
|
seconds: bigint;
|
|
45
45
|
nanos: number;
|
|
46
46
|
} | undefined, number | undefined>]>;
|
|
47
47
|
}, undefined>;
|
|
48
|
-
type UsernameHistoryEntry =
|
|
49
|
-
declare const AccountIdentitySchema:
|
|
50
|
-
readonly accountId:
|
|
51
|
-
readonly username:
|
|
52
|
-
readonly avatarUrl:
|
|
53
|
-
readonly rootSmartAccountAddress:
|
|
48
|
+
type UsernameHistoryEntry = v.InferOutput<typeof UsernameHistoryEntrySchema>;
|
|
49
|
+
declare const AccountIdentitySchema: v.ObjectSchema<{
|
|
50
|
+
readonly accountId: v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>;
|
|
51
|
+
readonly username: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
52
|
+
readonly avatarUrl: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
53
|
+
readonly rootSmartAccountAddress: v.StringSchema<undefined>;
|
|
54
54
|
}, undefined>;
|
|
55
|
-
type AccountIdentity =
|
|
55
|
+
type AccountIdentity = v.InferOutput<typeof AccountIdentitySchema>;
|
|
56
56
|
//#endregion
|
|
57
57
|
export { AccountIdentity, AccountIdentitySchema, Profile, ProfileSchema, UpdateProfileInput, UpdateProfileInputSchema, UsernameHistoryEntry, UsernameHistoryEntrySchema };
|
|
58
58
|
//# sourceMappingURL=profile.schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.schemas.d.ts","names":[],"sources":["../../../../src/services/auth/profile/profile.schemas.ts"],"mappings":";;cAIa,eAAa,
|
|
1
|
+
{"version":3,"file":"profile.schemas.d.ts","names":[],"sources":["../../../../src/services/auth/profile/profile.schemas.ts"],"mappings":";;cAIa,eAAa,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;KAqBd,UAAU,EAAE,mBAAmB;cAG9B,0BAAwB,EAAA;;;;;;;KAOzB,qBAAqB,EAAE,kBAAkB;cAExC,4BAA0B,EAAA;;;;;;;;;;KAQ3B,uBAAuB,EAAE,mBAAmB;cAE3C,uBAAqB,EAAA;;;;;;KAOtB,kBAAkB,EAAE,mBAAmB"}
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import { validation_exports } from "../../../shared/validation.js";
|
|
2
1
|
import { tsObjToMs } from "../../../utils/time.js";
|
|
3
2
|
import { PublicIdSchema, TimestampSchema } from "../../../shared/schemas.js";
|
|
3
|
+
import * as v from "valibot";
|
|
4
4
|
//#region src/services/auth/profile/profile.schemas.ts
|
|
5
|
-
const ProfileSchema =
|
|
6
|
-
username:
|
|
7
|
-
bio:
|
|
8
|
-
website:
|
|
9
|
-
twitter:
|
|
10
|
-
twitterVerified:
|
|
11
|
-
discord:
|
|
12
|
-
discordVerified:
|
|
13
|
-
avatarUrl:
|
|
14
|
-
createdAt:
|
|
15
|
-
nextUsernameChangeAt:
|
|
16
|
-
vipTier:
|
|
17
|
-
usernameUnlocked:
|
|
5
|
+
const ProfileSchema = v.object({
|
|
6
|
+
username: v.string(),
|
|
7
|
+
bio: v.string(),
|
|
8
|
+
website: v.string(),
|
|
9
|
+
twitter: v.string(),
|
|
10
|
+
twitterVerified: v.optional(v.boolean(), false),
|
|
11
|
+
discord: v.string(),
|
|
12
|
+
discordVerified: v.optional(v.boolean(), false),
|
|
13
|
+
avatarUrl: v.string(),
|
|
14
|
+
createdAt: v.pipe(v.optional(TimestampSchema), v.transform((v) => v ? tsObjToMs(v) : void 0)),
|
|
15
|
+
nextUsernameChangeAt: v.pipe(v.optional(TimestampSchema), v.transform((v) => v ? tsObjToMs(v) : void 0)),
|
|
16
|
+
vipTier: v.number(),
|
|
17
|
+
usernameUnlocked: v.optional(v.boolean(), false)
|
|
18
18
|
});
|
|
19
|
-
const UpdateProfileInputSchema =
|
|
20
|
-
username:
|
|
21
|
-
bio:
|
|
22
|
-
website:
|
|
23
|
-
twitter:
|
|
24
|
-
avatarUrl:
|
|
19
|
+
const UpdateProfileInputSchema = v.object({
|
|
20
|
+
username: v.optional(v.string()),
|
|
21
|
+
bio: v.optional(v.string()),
|
|
22
|
+
website: v.optional(v.string()),
|
|
23
|
+
twitter: v.optional(v.string()),
|
|
24
|
+
avatarUrl: v.optional(v.string())
|
|
25
25
|
});
|
|
26
|
-
const UsernameHistoryEntrySchema =
|
|
27
|
-
username:
|
|
28
|
-
setAt:
|
|
26
|
+
const UsernameHistoryEntrySchema = v.object({
|
|
27
|
+
username: v.string(),
|
|
28
|
+
setAt: v.pipe(v.optional(TimestampSchema), v.transform((v) => v ? tsObjToMs(v) : void 0))
|
|
29
29
|
});
|
|
30
|
-
const AccountIdentitySchema =
|
|
30
|
+
const AccountIdentitySchema = v.object({
|
|
31
31
|
accountId: PublicIdSchema,
|
|
32
|
-
username:
|
|
33
|
-
avatarUrl:
|
|
34
|
-
rootSmartAccountAddress:
|
|
32
|
+
username: v.optional(v.string()),
|
|
33
|
+
avatarUrl: v.optional(v.string()),
|
|
34
|
+
rootSmartAccountAddress: v.string()
|
|
35
35
|
});
|
|
36
36
|
//#endregion
|
|
37
37
|
export { AccountIdentitySchema, ProfileSchema, UpdateProfileInputSchema, UsernameHistoryEntrySchema };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.schemas.js","names":[
|
|
1
|
+
{"version":3,"file":"profile.schemas.js","names":[],"sources":["../../../../src/services/auth/profile/profile.schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport { PublicIdSchema, TimestampSchema } from \"../../../shared/schemas.js\";\nimport { tsObjToMs } from \"../../../utils/time.js\";\n\nexport const ProfileSchema = v.object({\n username: v.string(),\n bio: v.string(),\n website: v.string(),\n twitter: v.string(),\n twitterVerified: v.optional(v.boolean(), false),\n discord: v.string(),\n discordVerified: v.optional(v.boolean(), false),\n avatarUrl: v.string(),\n createdAt: v.pipe(\n v.optional(TimestampSchema),\n v.transform((v) => (v ? tsObjToMs(v) : undefined)),\n ),\n nextUsernameChangeAt: v.pipe(\n v.optional(TimestampSchema),\n v.transform((v) => (v ? tsObjToMs(v) : undefined)),\n ),\n vipTier: v.number(),\n usernameUnlocked: v.optional(v.boolean(), false),\n});\n\nexport type Profile = v.InferOutput<typeof ProfileSchema>;\n// Deliberately non-strict: update() accepts a round-tripped Profile\n// ({ ...profile, bio }) and strips its readonly fields instead of rejecting.\nexport const UpdateProfileInputSchema = v.object({\n username: v.optional(v.string()),\n bio: v.optional(v.string()),\n website: v.optional(v.string()),\n twitter: v.optional(v.string()),\n avatarUrl: v.optional(v.string()),\n});\nexport type UpdateProfileInput = v.InferInput<typeof UpdateProfileInputSchema>;\n\nexport const UsernameHistoryEntrySchema = v.object({\n username: v.string(),\n setAt: v.pipe(\n v.optional(TimestampSchema),\n v.transform((v) => (v ? tsObjToMs(v) : undefined)),\n ),\n});\n\nexport type UsernameHistoryEntry = v.InferOutput<typeof UsernameHistoryEntrySchema>;\n\nexport const AccountIdentitySchema = v.object({\n accountId: PublicIdSchema,\n username: v.optional(v.string()),\n avatarUrl: v.optional(v.string()),\n rootSmartAccountAddress: v.string(),\n});\n\nexport type AccountIdentity = v.InferOutput<typeof AccountIdentitySchema>;\n"],"mappings":";;;;AAIA,MAAa,gBAAgB,EAAE,OAAO;CAClC,UAAU,EAAE,OAAO;CACnB,KAAK,EAAE,OAAO;CACd,SAAS,EAAE,OAAO;CAClB,SAAS,EAAE,OAAO;CAClB,iBAAiB,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK;CAC9C,SAAS,EAAE,OAAO;CAClB,iBAAiB,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK;CAC9C,WAAW,EAAE,OAAO;CACpB,WAAW,EAAE,KACT,EAAE,SAAS,eAAe,GAC1B,EAAE,WAAW,MAAO,IAAI,UAAU,CAAC,IAAI,KAAA,CAAU,CACrD;CACA,sBAAsB,EAAE,KACpB,EAAE,SAAS,eAAe,GAC1B,EAAE,WAAW,MAAO,IAAI,UAAU,CAAC,IAAI,KAAA,CAAU,CACrD;CACA,SAAS,EAAE,OAAO;CAClB,kBAAkB,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK;AACnD,CAAC;AAKD,MAAa,2BAA2B,EAAE,OAAO;CAC7C,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC;CAC/B,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC;CAC1B,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;CAC9B,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;CAC9B,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC;AACpC,CAAC;AAGD,MAAa,6BAA6B,EAAE,OAAO;CAC/C,UAAU,EAAE,OAAO;CACnB,OAAO,EAAE,KACL,EAAE,SAAS,eAAe,GAC1B,EAAE,WAAW,MAAO,IAAI,UAAU,CAAC,IAAI,KAAA,CAAU,CACrD;AACJ,CAAC;AAID,MAAa,wBAAwB,EAAE,OAAO;CAC1C,WAAW;CACX,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC;CAC/B,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC;CAChC,yBAAyB,EAAE,OAAO;AACtC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as v from "valibot";
|
|
2
2
|
//#region src/services/auth/session.schemas.ts
|
|
3
|
-
const AuthLoginMethodSchema =
|
|
3
|
+
const AuthLoginMethodSchema = v.picklist([
|
|
4
4
|
"google",
|
|
5
5
|
"email",
|
|
6
6
|
"metamask",
|
|
@@ -8,31 +8,31 @@ const AuthLoginMethodSchema = validation_exports.picklist([
|
|
|
8
8
|
"phantom",
|
|
9
9
|
"walletconnect"
|
|
10
10
|
]);
|
|
11
|
-
const ActiveAccountInfoSchema =
|
|
12
|
-
accountId:
|
|
13
|
-
isMain:
|
|
14
|
-
mainAccountId:
|
|
15
|
-
smartAccountAddress:
|
|
16
|
-
label:
|
|
11
|
+
const ActiveAccountInfoSchema = v.object({
|
|
12
|
+
accountId: v.string(),
|
|
13
|
+
isMain: v.boolean(),
|
|
14
|
+
mainAccountId: v.string(),
|
|
15
|
+
smartAccountAddress: v.optional(v.string()),
|
|
16
|
+
label: v.optional(v.string())
|
|
17
17
|
});
|
|
18
|
-
const SessionDataSchema =
|
|
19
|
-
environmentFingerprint:
|
|
20
|
-
provider:
|
|
18
|
+
const SessionDataSchema = v.object({
|
|
19
|
+
environmentFingerprint: v.string(),
|
|
20
|
+
provider: v.picklist([
|
|
21
21
|
"metamask",
|
|
22
22
|
"turnkey",
|
|
23
23
|
"other"
|
|
24
24
|
]),
|
|
25
|
-
loginMethod:
|
|
26
|
-
primaryWallet:
|
|
27
|
-
smartAccount:
|
|
28
|
-
activeAccount:
|
|
29
|
-
username:
|
|
25
|
+
loginMethod: v.nullable(AuthLoginMethodSchema),
|
|
26
|
+
primaryWallet: v.string(),
|
|
27
|
+
smartAccount: v.string(),
|
|
28
|
+
activeAccount: v.optional(ActiveAccountInfoSchema),
|
|
29
|
+
username: v.optional(v.string())
|
|
30
30
|
});
|
|
31
31
|
/**
|
|
32
32
|
* Parses raw session data into the SDK session shape.
|
|
33
33
|
*/
|
|
34
34
|
function parseSessionData(value) {
|
|
35
|
-
const parsed =
|
|
35
|
+
const parsed = v.safeParse(SessionDataSchema, value);
|
|
36
36
|
return parsed.success ? parsed.output : null;
|
|
37
37
|
}
|
|
38
38
|
//#endregion
|