@ankhorage/contracts 25.1.0 → 25.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/storage.js CHANGED
@@ -1,2 +1,174 @@
1
- export {};
1
+ /**
2
+ * Portable schema sources for provider-neutral storage values and operations.
3
+ *
4
+ * Upload bytes use a standard Base64 string. The source `StorageUploadInput` remains a
5
+ * `Uint8Array` at the adapter boundary; catalogs serialize its `body` with this schema and
6
+ * reconstruct the bytes before invoking an adapter.
7
+ */
8
+ export const STORAGE_BYTES_SCHEMA = {
9
+ type: 'string',
10
+ format: 'base64',
11
+ };
12
+ export const STORAGE_IDENTITY_SCHEMA = {
13
+ type: 'object',
14
+ required: ['bucket', 'path'],
15
+ properties: {
16
+ storageId: { type: 'string' },
17
+ bucket: { type: 'string' },
18
+ path: { type: 'string' },
19
+ },
20
+ };
21
+ export const STORAGE_ASSET_REFERENCE_SCHEMA = {
22
+ ...STORAGE_IDENTITY_SCHEMA,
23
+ properties: {
24
+ ...STORAGE_IDENTITY_SCHEMA.properties,
25
+ publicUrl: { type: 'string' },
26
+ },
27
+ };
28
+ export const STORAGE_OBJECT_METADATA_SCHEMA = {
29
+ ...STORAGE_IDENTITY_SCHEMA,
30
+ properties: {
31
+ ...STORAGE_IDENTITY_SCHEMA.properties,
32
+ contentType: { type: 'string' },
33
+ sizeBytes: { type: 'integer' },
34
+ createdAt: { type: 'string' },
35
+ updatedAt: { type: 'string' },
36
+ etag: { type: 'string' },
37
+ },
38
+ };
39
+ export const STORAGE_UPLOAD_INPUT_SCHEMA = {
40
+ ...STORAGE_IDENTITY_SCHEMA,
41
+ required: ['bucket', 'path', 'body'],
42
+ properties: {
43
+ ...STORAGE_IDENTITY_SCHEMA.properties,
44
+ body: STORAGE_BYTES_SCHEMA,
45
+ contentType: { type: 'string' },
46
+ cacheControl: { type: 'string' },
47
+ upsert: { type: 'boolean' },
48
+ },
49
+ };
50
+ export const STORAGE_UPLOAD_RESULT_SCHEMA = {
51
+ type: 'object',
52
+ required: ['asset'],
53
+ properties: { asset: STORAGE_ASSET_REFERENCE_SCHEMA },
54
+ };
55
+ export const STORAGE_REMOVE_INPUT_SCHEMA = {
56
+ ...STORAGE_IDENTITY_SCHEMA,
57
+ description: 'Identifies the stored object to remove.',
58
+ };
59
+ export const STORAGE_PUBLIC_URL_INPUT_SCHEMA = {
60
+ ...STORAGE_IDENTITY_SCHEMA,
61
+ description: 'Identifies the stored object whose public URL is requested.',
62
+ };
63
+ export const STORAGE_PUBLIC_URL_RESULT_SCHEMA = {
64
+ type: 'object',
65
+ required: ['publicUrl'],
66
+ properties: { publicUrl: { type: 'string' } },
67
+ };
68
+ export const STORAGE_LIST_INPUT_SCHEMA = {
69
+ type: 'object',
70
+ required: ['bucket'],
71
+ properties: {
72
+ storageId: { type: 'string' },
73
+ bucket: { type: 'string' },
74
+ prefix: { type: 'string' },
75
+ cursor: { type: 'string' },
76
+ limit: { type: 'integer' },
77
+ },
78
+ };
79
+ export const STORAGE_LIST_RESULT_SCHEMA = {
80
+ type: 'object',
81
+ required: ['objects'],
82
+ properties: {
83
+ objects: { type: 'array', items: STORAGE_OBJECT_METADATA_SCHEMA },
84
+ nextCursor: { type: 'string' },
85
+ },
86
+ };
87
+ export const STORAGE_RESOLVE_INPUT_SCHEMA = {
88
+ ...STORAGE_IDENTITY_SCHEMA,
89
+ properties: {
90
+ ...STORAGE_IDENTITY_SCHEMA.properties,
91
+ access: { type: 'string', enum: ['public', 'signed'] },
92
+ expiresInSeconds: { type: 'integer' },
93
+ },
94
+ };
95
+ export const STORAGE_RESOLVED_ASSET_SCHEMA = {
96
+ ...STORAGE_IDENTITY_SCHEMA,
97
+ required: ['bucket', 'path', 'url', 'access'],
98
+ properties: {
99
+ ...STORAGE_IDENTITY_SCHEMA.properties,
100
+ url: { type: 'string' },
101
+ access: { type: 'string', enum: ['public', 'signed'] },
102
+ expiresAt: { type: 'string' },
103
+ },
104
+ };
105
+ export const STORAGE_RESOLVE_RESULT_SCHEMA = {
106
+ type: 'object',
107
+ required: ['asset'],
108
+ properties: { asset: STORAGE_RESOLVED_ASSET_SCHEMA },
109
+ };
110
+ export const STORAGE_ADAPTER_ERROR_SCHEMA = {
111
+ type: 'object',
112
+ required: ['code', 'message'],
113
+ properties: {
114
+ code: { type: 'string' },
115
+ message: { type: 'string' },
116
+ },
117
+ };
118
+ export const STORAGE_SUCCESS_SCHEMA = {
119
+ type: 'object',
120
+ required: ['ok'],
121
+ properties: { ok: { const: true } },
122
+ };
123
+ export const STORAGE_ERROR_RESULT_SCHEMA = {
124
+ type: 'object',
125
+ required: ['ok', 'error'],
126
+ properties: {
127
+ ok: { const: false },
128
+ error: STORAGE_ADAPTER_ERROR_SCHEMA,
129
+ },
130
+ };
131
+ export const STORAGE_VOID_RESULT_SCHEMA = {
132
+ oneOf: [STORAGE_SUCCESS_SCHEMA, STORAGE_ERROR_RESULT_SCHEMA],
133
+ };
134
+ export const STORAGE_UPLOAD_OPERATION_RESULT_SCHEMA = {
135
+ oneOf: [
136
+ {
137
+ ...STORAGE_SUCCESS_SCHEMA,
138
+ required: ['ok', 'data'],
139
+ properties: { ...STORAGE_SUCCESS_SCHEMA.properties, data: STORAGE_UPLOAD_RESULT_SCHEMA },
140
+ },
141
+ STORAGE_ERROR_RESULT_SCHEMA,
142
+ ],
143
+ };
144
+ export const STORAGE_PUBLIC_URL_OPERATION_RESULT_SCHEMA = {
145
+ oneOf: [
146
+ {
147
+ ...STORAGE_SUCCESS_SCHEMA,
148
+ required: ['ok', 'data'],
149
+ properties: { ...STORAGE_SUCCESS_SCHEMA.properties, data: STORAGE_PUBLIC_URL_RESULT_SCHEMA },
150
+ },
151
+ STORAGE_ERROR_RESULT_SCHEMA,
152
+ ],
153
+ };
154
+ export const STORAGE_LIST_OPERATION_RESULT_SCHEMA = {
155
+ oneOf: [
156
+ {
157
+ ...STORAGE_SUCCESS_SCHEMA,
158
+ required: ['ok', 'data'],
159
+ properties: { ...STORAGE_SUCCESS_SCHEMA.properties, data: STORAGE_LIST_RESULT_SCHEMA },
160
+ },
161
+ STORAGE_ERROR_RESULT_SCHEMA,
162
+ ],
163
+ };
164
+ export const STORAGE_RESOLVE_OPERATION_RESULT_SCHEMA = {
165
+ oneOf: [
166
+ {
167
+ ...STORAGE_SUCCESS_SCHEMA,
168
+ required: ['ok', 'data'],
169
+ properties: { ...STORAGE_SUCCESS_SCHEMA.properties, data: STORAGE_RESOLVE_RESULT_SCHEMA },
170
+ },
171
+ STORAGE_ERROR_RESULT_SCHEMA,
172
+ ],
173
+ };
2
174
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"","sourcesContent":["export interface StorageAdapterError {\n code: string;\n message: string;\n cause?: unknown;\n}\n\nexport type StorageOkResult<TData> = [TData] extends [void]\n ? { ok: true; data?: undefined }\n : { ok: true; data: TData };\n\nexport type StorageResult<TData = void> =\n | StorageOkResult<TData>\n | {\n ok: false;\n error: StorageAdapterError;\n };\n\nexport interface StorageAssetReference {\n storageId?: string;\n bucket: string;\n path: string;\n publicUrl?: string;\n}\n\nexport interface StorageUploadInput {\n storageId?: string;\n bucket: string;\n path: string;\n body: Uint8Array;\n contentType?: string;\n cacheControl?: string;\n upsert?: boolean;\n}\n\nexport interface StorageUploadResult {\n asset: StorageAssetReference;\n}\n\nexport interface StorageRemoveInput {\n storageId?: string;\n bucket: string;\n path: string;\n}\n\nexport interface StoragePublicUrlInput {\n storageId?: string;\n bucket: string;\n path: string;\n}\n\nexport interface StoragePublicUrlResult {\n publicUrl: string;\n}\n\nexport interface StorageObjectMetadata {\n storageId?: string;\n bucket: string;\n path: string;\n contentType?: string;\n sizeBytes?: number;\n createdAt?: string;\n updatedAt?: string;\n etag?: string;\n}\n\nexport interface StorageListInput {\n storageId?: string;\n bucket: string;\n prefix?: string;\n cursor?: string;\n limit?: number;\n}\n\nexport interface StorageListResult {\n objects: readonly StorageObjectMetadata[];\n nextCursor?: string;\n}\n\nexport type StorageResolvedAccess = 'public' | 'signed';\n\nexport interface StorageResolveInput {\n storageId?: string;\n bucket: string;\n path: string;\n access?: StorageResolvedAccess;\n expiresInSeconds?: number;\n}\n\nexport interface StorageResolvedAsset {\n storageId?: string;\n bucket: string;\n path: string;\n url: string;\n access: StorageResolvedAccess;\n expiresAt?: string;\n}\n\nexport interface StorageResolveResult {\n asset: StorageResolvedAsset;\n}\n\nexport interface ImageMetadata {\n fileName?: string;\n sizeBytes?: number;\n createdAt?: string;\n}\n\nexport interface StorageImageAssetSource {\n kind: 'storage';\n storageId?: string;\n bucket: string;\n path: string;\n publicUrl?: string;\n alt?: string;\n width?: number;\n height?: number;\n contentType?: string;\n metadata?: ImageMetadata;\n}\n\nexport interface UrlImageAssetSource {\n kind: 'url';\n url: string;\n alt?: string;\n width?: number;\n height?: number;\n contentType?: string;\n metadata?: ImageMetadata;\n}\n\nexport type ImageAssetSource = StorageImageAssetSource | UrlImageAssetSource;\n\nexport interface StorageAdapter {\n upload(input: StorageUploadInput): Promise<StorageResult<StorageUploadResult>>;\n remove(input: StorageRemoveInput): Promise<StorageResult>;\n publicUrl(input: StoragePublicUrlInput): Promise<StorageResult<StoragePublicUrlResult>>;\n getImageMetadata?(input: StorageAssetReference): Promise<StorageResult<ImageMetadata>>;\n}\n\nexport interface StorageListAdapter {\n list(input: StorageListInput): Promise<StorageResult<StorageListResult>>;\n}\n\nexport interface StorageResolveAdapter {\n resolve(input: StorageResolveInput): Promise<StorageResult<StorageResolveResult>>;\n}\n\n/**\n * Storage capability required by the app-authoring media service.\n *\n * Remote URL import/ingest is intentionally not part of this low-level object-storage\n * contract. It is a trusted service operation that can be implemented by reading the\n * remote object and delegating to `upload` when ingestion is requested.\n */\nexport interface MediaStorageAdapter\n extends StorageAdapter, StorageListAdapter, StorageResolveAdapter {}\n"]}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DataSchema } from './data/schemas.js';\n\nexport interface StorageAdapterError {\n code: string;\n message: string;\n cause?: unknown;\n}\n\nexport type StorageOkResult<TData> = [TData] extends [void]\n ? { ok: true; data?: undefined }\n : { ok: true; data: TData };\n\nexport type StorageResult<TData = void> =\n | StorageOkResult<TData>\n | {\n ok: false;\n error: StorageAdapterError;\n };\n\nexport interface StorageAssetReference {\n storageId?: string;\n bucket: string;\n path: string;\n publicUrl?: string;\n}\n\nexport interface StorageUploadInput {\n storageId?: string;\n bucket: string;\n path: string;\n body: Uint8Array;\n contentType?: string;\n cacheControl?: string;\n upsert?: boolean;\n}\n\nexport interface StorageUploadResult {\n asset: StorageAssetReference;\n}\n\nexport interface StorageRemoveInput {\n storageId?: string;\n bucket: string;\n path: string;\n}\n\nexport interface StoragePublicUrlInput {\n storageId?: string;\n bucket: string;\n path: string;\n}\n\nexport interface StoragePublicUrlResult {\n publicUrl: string;\n}\n\nexport interface StorageObjectMetadata {\n storageId?: string;\n bucket: string;\n path: string;\n contentType?: string;\n sizeBytes?: number;\n createdAt?: string;\n updatedAt?: string;\n etag?: string;\n}\n\nexport interface StorageListInput {\n storageId?: string;\n bucket: string;\n prefix?: string;\n cursor?: string;\n limit?: number;\n}\n\nexport interface StorageListResult {\n objects: readonly StorageObjectMetadata[];\n nextCursor?: string;\n}\n\nexport type StorageResolvedAccess = 'public' | 'signed';\n\nexport interface StorageResolveInput {\n storageId?: string;\n bucket: string;\n path: string;\n access?: StorageResolvedAccess;\n expiresInSeconds?: number;\n}\n\nexport interface StorageResolvedAsset {\n storageId?: string;\n bucket: string;\n path: string;\n url: string;\n access: StorageResolvedAccess;\n expiresAt?: string;\n}\n\nexport interface StorageResolveResult {\n asset: StorageResolvedAsset;\n}\n\nexport interface ImageMetadata {\n fileName?: string;\n sizeBytes?: number;\n createdAt?: string;\n}\n\nexport interface StorageImageAssetSource {\n kind: 'storage';\n storageId?: string;\n bucket: string;\n path: string;\n publicUrl?: string;\n alt?: string;\n width?: number;\n height?: number;\n contentType?: string;\n metadata?: ImageMetadata;\n}\n\nexport interface UrlImageAssetSource {\n kind: 'url';\n url: string;\n alt?: string;\n width?: number;\n height?: number;\n contentType?: string;\n metadata?: ImageMetadata;\n}\n\nexport type ImageAssetSource = StorageImageAssetSource | UrlImageAssetSource;\n\nexport interface StorageAdapter {\n upload(input: StorageUploadInput): Promise<StorageResult<StorageUploadResult>>;\n remove(input: StorageRemoveInput): Promise<StorageResult>;\n publicUrl(input: StoragePublicUrlInput): Promise<StorageResult<StoragePublicUrlResult>>;\n getImageMetadata?(input: StorageAssetReference): Promise<StorageResult<ImageMetadata>>;\n}\n\nexport interface StorageListAdapter {\n list(input: StorageListInput): Promise<StorageResult<StorageListResult>>;\n}\n\nexport interface StorageResolveAdapter {\n resolve(input: StorageResolveInput): Promise<StorageResult<StorageResolveResult>>;\n}\n\n/**\n * Storage capability required by the app-authoring media service.\n *\n * Remote URL import/ingest is intentionally not part of this low-level object-storage\n * contract. It is a trusted service operation that can be implemented by reading the\n * remote object and delegating to `upload` when ingestion is requested.\n */\nexport interface MediaStorageAdapter\n extends StorageAdapter, StorageListAdapter, StorageResolveAdapter {}\n\n/**\n * Portable schema sources for provider-neutral storage values and operations.\n *\n * Upload bytes use a standard Base64 string. The source `StorageUploadInput` remains a\n * `Uint8Array` at the adapter boundary; catalogs serialize its `body` with this schema and\n * reconstruct the bytes before invoking an adapter.\n */\nexport const STORAGE_BYTES_SCHEMA = {\n type: 'string',\n format: 'base64',\n} as const satisfies DataSchema;\n\nexport const STORAGE_IDENTITY_SCHEMA = {\n type: 'object',\n required: ['bucket', 'path'],\n properties: {\n storageId: { type: 'string' },\n bucket: { type: 'string' },\n path: { type: 'string' },\n },\n} as const satisfies DataSchema;\n\nexport const STORAGE_ASSET_REFERENCE_SCHEMA = {\n ...STORAGE_IDENTITY_SCHEMA,\n properties: {\n ...STORAGE_IDENTITY_SCHEMA.properties,\n publicUrl: { type: 'string' },\n },\n} as const satisfies DataSchema;\n\nexport const STORAGE_OBJECT_METADATA_SCHEMA = {\n ...STORAGE_IDENTITY_SCHEMA,\n properties: {\n ...STORAGE_IDENTITY_SCHEMA.properties,\n contentType: { type: 'string' },\n sizeBytes: { type: 'integer' },\n createdAt: { type: 'string' },\n updatedAt: { type: 'string' },\n etag: { type: 'string' },\n },\n} as const satisfies DataSchema;\n\nexport const STORAGE_UPLOAD_INPUT_SCHEMA = {\n ...STORAGE_IDENTITY_SCHEMA,\n required: ['bucket', 'path', 'body'],\n properties: {\n ...STORAGE_IDENTITY_SCHEMA.properties,\n body: STORAGE_BYTES_SCHEMA,\n contentType: { type: 'string' },\n cacheControl: { type: 'string' },\n upsert: { type: 'boolean' },\n },\n} as const satisfies DataSchema;\n\nexport const STORAGE_UPLOAD_RESULT_SCHEMA = {\n type: 'object',\n required: ['asset'],\n properties: { asset: STORAGE_ASSET_REFERENCE_SCHEMA },\n} as const satisfies DataSchema;\n\nexport const STORAGE_REMOVE_INPUT_SCHEMA = {\n ...STORAGE_IDENTITY_SCHEMA,\n description: 'Identifies the stored object to remove.',\n} as const satisfies DataSchema;\n\nexport const STORAGE_PUBLIC_URL_INPUT_SCHEMA = {\n ...STORAGE_IDENTITY_SCHEMA,\n description: 'Identifies the stored object whose public URL is requested.',\n} as const satisfies DataSchema;\n\nexport const STORAGE_PUBLIC_URL_RESULT_SCHEMA = {\n type: 'object',\n required: ['publicUrl'],\n properties: { publicUrl: { type: 'string' } },\n} as const satisfies DataSchema;\n\nexport const STORAGE_LIST_INPUT_SCHEMA = {\n type: 'object',\n required: ['bucket'],\n properties: {\n storageId: { type: 'string' },\n bucket: { type: 'string' },\n prefix: { type: 'string' },\n cursor: { type: 'string' },\n limit: { type: 'integer' },\n },\n} as const satisfies DataSchema;\n\nexport const STORAGE_LIST_RESULT_SCHEMA = {\n type: 'object',\n required: ['objects'],\n properties: {\n objects: { type: 'array', items: STORAGE_OBJECT_METADATA_SCHEMA },\n nextCursor: { type: 'string' },\n },\n} as const satisfies DataSchema;\n\nexport const STORAGE_RESOLVE_INPUT_SCHEMA = {\n ...STORAGE_IDENTITY_SCHEMA,\n properties: {\n ...STORAGE_IDENTITY_SCHEMA.properties,\n access: { type: 'string', enum: ['public', 'signed'] },\n expiresInSeconds: { type: 'integer' },\n },\n} as const satisfies DataSchema;\n\nexport const STORAGE_RESOLVED_ASSET_SCHEMA = {\n ...STORAGE_IDENTITY_SCHEMA,\n required: ['bucket', 'path', 'url', 'access'],\n properties: {\n ...STORAGE_IDENTITY_SCHEMA.properties,\n url: { type: 'string' },\n access: { type: 'string', enum: ['public', 'signed'] },\n expiresAt: { type: 'string' },\n },\n} as const satisfies DataSchema;\n\nexport const STORAGE_RESOLVE_RESULT_SCHEMA = {\n type: 'object',\n required: ['asset'],\n properties: { asset: STORAGE_RESOLVED_ASSET_SCHEMA },\n} as const satisfies DataSchema;\n\nexport const STORAGE_ADAPTER_ERROR_SCHEMA = {\n type: 'object',\n required: ['code', 'message'],\n properties: {\n code: { type: 'string' },\n message: { type: 'string' },\n },\n} as const satisfies DataSchema;\n\nexport const STORAGE_SUCCESS_SCHEMA = {\n type: 'object',\n required: ['ok'],\n properties: { ok: { const: true } },\n} as const satisfies DataSchema;\n\nexport const STORAGE_ERROR_RESULT_SCHEMA = {\n type: 'object',\n required: ['ok', 'error'],\n properties: {\n ok: { const: false },\n error: STORAGE_ADAPTER_ERROR_SCHEMA,\n },\n} as const satisfies DataSchema;\n\nexport const STORAGE_VOID_RESULT_SCHEMA = {\n oneOf: [STORAGE_SUCCESS_SCHEMA, STORAGE_ERROR_RESULT_SCHEMA],\n} as const satisfies DataSchema;\n\nexport const STORAGE_UPLOAD_OPERATION_RESULT_SCHEMA = {\n oneOf: [\n {\n ...STORAGE_SUCCESS_SCHEMA,\n required: ['ok', 'data'],\n properties: { ...STORAGE_SUCCESS_SCHEMA.properties, data: STORAGE_UPLOAD_RESULT_SCHEMA },\n },\n STORAGE_ERROR_RESULT_SCHEMA,\n ],\n} as const satisfies DataSchema;\n\nexport const STORAGE_PUBLIC_URL_OPERATION_RESULT_SCHEMA = {\n oneOf: [\n {\n ...STORAGE_SUCCESS_SCHEMA,\n required: ['ok', 'data'],\n properties: { ...STORAGE_SUCCESS_SCHEMA.properties, data: STORAGE_PUBLIC_URL_RESULT_SCHEMA },\n },\n STORAGE_ERROR_RESULT_SCHEMA,\n ],\n} as const satisfies DataSchema;\n\nexport const STORAGE_LIST_OPERATION_RESULT_SCHEMA = {\n oneOf: [\n {\n ...STORAGE_SUCCESS_SCHEMA,\n required: ['ok', 'data'],\n properties: { ...STORAGE_SUCCESS_SCHEMA.properties, data: STORAGE_LIST_RESULT_SCHEMA },\n },\n STORAGE_ERROR_RESULT_SCHEMA,\n ],\n} as const satisfies DataSchema;\n\nexport const STORAGE_RESOLVE_OPERATION_RESULT_SCHEMA = {\n oneOf: [\n {\n ...STORAGE_SUCCESS_SCHEMA,\n required: ['ok', 'data'],\n properties: { ...STORAGE_SUCCESS_SCHEMA.properties, data: STORAGE_RESOLVE_RESULT_SCHEMA },\n },\n STORAGE_ERROR_RESULT_SCHEMA,\n ],\n} as const satisfies DataSchema;\n"]}
@@ -1,9 +1,9 @@
1
1
  export declare const STRUCTURE_DESCRIPTOR_COMPILER_VERSION = "6.0.3";
2
- export declare const STRUCTURE_DESCRIPTOR_FINGERPRINT = "sha256:05419311d2828869c0ffc554890df986b462de036e7399cf2e9057c4ca381928";
2
+ export declare const STRUCTURE_DESCRIPTOR_FINGERPRINT = "sha256:e6117f029e0a0fde13ed1d08fe1a39d7e06a9f83a0d32198865446501875e27d";
3
3
  export declare const STRUCTURE_DESCRIPTOR: {
4
4
  readonly protocolVersion: 1;
5
5
  readonly packageName: "@ankhorage/contracts";
6
- readonly packageVersion: "25.1.0";
6
+ readonly packageVersion: "25.2.0";
7
7
  readonly roots: {
8
8
  readonly "auth-flow": "AuthFlowConfig";
9
9
  readonly "auth-profile": "AuthProfileSpec";
@@ -1,9 +1,9 @@
1
1
  export const STRUCTURE_DESCRIPTOR_COMPILER_VERSION = '6.0.3';
2
- export const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:05419311d2828869c0ffc554890df986b462de036e7399cf2e9057c4ca381928';
2
+ export const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:e6117f029e0a0fde13ed1d08fe1a39d7e06a9f83a0d32198865446501875e27d';
3
3
  export const STRUCTURE_DESCRIPTOR = {
4
4
  "protocolVersion": 1,
5
5
  "packageName": "@ankhorage/contracts",
6
- "packageVersion": "25.1.0",
6
+ "packageVersion": "25.2.0",
7
7
  "roots": {
8
8
  "auth-flow": "AuthFlowConfig",
9
9
  "auth-profile": "AuthProfileSpec",
@@ -1 +1 @@
1
- {"version":3,"file":"generated.js","sourceRoot":"","sources":["../../src/structure/generated.ts"],"names":[],"mappings":"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","sourcesContent":["/* This file is generated by @ankhorage/devtools. Do not edit manually. */\nimport type { StructureDescriptorDocument } from '@ankhorage/contracts/structure';\n\nexport const STRUCTURE_DESCRIPTOR_COMPILER_VERSION = '6.0.3';\nexport const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:05419311d2828869c0ffc554890df986b462de036e7399cf2e9057c4ca381928';\n\nexport const STRUCTURE_DESCRIPTOR = {\n \"protocolVersion\": 1,\n \"packageName\": \"@ankhorage/contracts\",\n \"packageVersion\": \"25.1.0\",\n \"roots\": {\n \"auth-flow\": \"AuthFlowConfig\",\n \"auth-profile\": \"AuthProfileSpec\",\n \"auth-sign-in\": \"AuthSignInSpec\",\n \"auth-sign-up\": \"AuthSignUpSpec\",\n \"screen-metadata\": \"ScreenMetadataSpec\",\n \"screen-requirements\": \"ScreenRequirements\",\n \"theme-config\": \"ThemeConfig\"\n },\n \"descriptors\": {\n \"AuthFlowConfig\": {\n \"id\": \"AuthFlowConfig\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"forgotPasswordRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"otpRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"postSignInRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"signInRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"signOutRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"signUpRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"unauthorizedRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"AuthProfileField\": {\n \"id\": \"AuthProfileField\",\n \"descriptor\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"AuthProfileSpec\": {\n \"id\": \"AuthProfileSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"createStrategy\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"api\",\n \"app\",\n \"trigger\"\n ]\n },\n \"optional\": true\n },\n \"fields\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"ref\",\n \"id\": \"AuthProfileField\"\n }\n }\n },\n \"primaryKey\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"authUserId\"\n ]\n },\n \"optional\": true\n },\n \"table\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"updateStrategy\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"api\",\n \"app\"\n ]\n },\n \"optional\": true\n }\n }\n }\n },\n \"AuthSignInSpec\": {\n \"id\": \"AuthSignInSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"identifiers\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"enum\",\n \"values\": [\n \"email\",\n \"phone\",\n \"username\"\n ]\n }\n }\n }\n }\n }\n },\n \"AuthSignUpField\": {\n \"id\": \"AuthSignUpField\",\n \"descriptor\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"AuthSignUpSpec\": {\n \"id\": \"AuthSignUpSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"optionalFields\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"ref\",\n \"id\": \"AuthSignUpField\"\n }\n },\n \"optional\": true\n },\n \"requiredFields\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"ref\",\n \"id\": \"AuthSignUpField\"\n }\n }\n },\n \"signUpPolicy\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"autoSignIn\",\n \"requireVerification\"\n ]\n },\n \"optional\": true\n }\n }\n }\n },\n \"ScreenMetadataSpec\": {\n \"id\": \"ScreenMetadataSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"description\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"id\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"name\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"title\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"ScreenRequirements\": {\n \"id\": \"ScreenRequirements\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"capabilities\": {\n \"value\": {\n \"kind\": \"set\",\n \"member\": {\n \"kind\": \"enum\",\n \"values\": [\n \"barcodeScanner\",\n \"cameraPreview\",\n \"clipboard\",\n \"ebookReader\",\n \"filePicker\",\n \"location\",\n \"mediaPicker\",\n \"notifications\"\n ]\n }\n },\n \"optional\": true\n },\n \"permissions\": {\n \"value\": {\n \"kind\": \"set\",\n \"member\": {\n \"kind\": \"enum\",\n \"values\": [\n \"camera\",\n \"clipboard\",\n \"locationBackground\",\n \"locationForeground\",\n \"mediaLibrary\",\n \"mediaLibraryWrite\",\n \"microphone\",\n \"notifications\"\n ]\n }\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeConfig\": {\n \"id\": \"ThemeConfig\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"dark\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeModeConfig\"\n }\n },\n \"id\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"light\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeModeConfig\"\n }\n },\n \"name\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"recipes\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeRecipeOverrides\"\n },\n \"optional\": true\n },\n \"tokens\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeGlobalTokenOverrides\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeGlobalTokenOverrides\": {\n \"id\": \"ThemeGlobalTokenOverrides\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"radii\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n }\n },\n \"optional\": true\n },\n \"shadows\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n }\n },\n \"optional\": true\n },\n \"spacing\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n }\n },\n \"optional\": true\n },\n \"typography\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeTypographyTokenOverrides\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeModeConfig\": {\n \"id\": \"ThemeModeConfig\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"harmony\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"analogous\",\n \"complementary\",\n \"monochromatic\",\n \"splitComplementary\",\n \"square\",\n \"tetradic\",\n \"triadic\"\n ]\n }\n },\n \"primaryColor\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"ThemeRecipeOverrides\": {\n \"id\": \"ThemeRecipeOverrides\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"components\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"ref\",\n \"packageName\": \"typescript\",\n \"id\": \"Readonly\"\n }\n },\n \"optional\": true\n },\n \"patterns\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"ref\",\n \"packageName\": \"typescript\",\n \"id\": \"Readonly\"\n }\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeTypographyHeadingOverrides\": {\n \"id\": \"ThemeTypographyHeadingOverrides\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"lineHeight\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n },\n \"optional\": true\n },\n \"size\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n },\n \"optional\": true\n },\n \"weight\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeTypographyTokenOverrides\": {\n \"id\": \"ThemeTypographyTokenOverrides\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"headings\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeTypographyHeadingOverrides\"\n }\n },\n \"optional\": true\n },\n \"sizes\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n }\n },\n \"optional\": true\n },\n \"weights\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"optional\": true\n }\n }\n }\n }\n }\n} as const satisfies StructureDescriptorDocument;\n"]}
1
+ {"version":3,"file":"generated.js","sourceRoot":"","sources":["../../src/structure/generated.ts"],"names":[],"mappings":"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","sourcesContent":["/* This file is generated by @ankhorage/devtools. Do not edit manually. */\nimport type { StructureDescriptorDocument } from '@ankhorage/contracts/structure';\n\nexport const STRUCTURE_DESCRIPTOR_COMPILER_VERSION = '6.0.3';\nexport const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:e6117f029e0a0fde13ed1d08fe1a39d7e06a9f83a0d32198865446501875e27d';\n\nexport const STRUCTURE_DESCRIPTOR = {\n \"protocolVersion\": 1,\n \"packageName\": \"@ankhorage/contracts\",\n \"packageVersion\": \"25.2.0\",\n \"roots\": {\n \"auth-flow\": \"AuthFlowConfig\",\n \"auth-profile\": \"AuthProfileSpec\",\n \"auth-sign-in\": \"AuthSignInSpec\",\n \"auth-sign-up\": \"AuthSignUpSpec\",\n \"screen-metadata\": \"ScreenMetadataSpec\",\n \"screen-requirements\": \"ScreenRequirements\",\n \"theme-config\": \"ThemeConfig\"\n },\n \"descriptors\": {\n \"AuthFlowConfig\": {\n \"id\": \"AuthFlowConfig\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"forgotPasswordRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"otpRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"postSignInRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"signInRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"signOutRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"signUpRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"unauthorizedRoute\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"AuthProfileField\": {\n \"id\": \"AuthProfileField\",\n \"descriptor\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"AuthProfileSpec\": {\n \"id\": \"AuthProfileSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"createStrategy\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"api\",\n \"app\",\n \"trigger\"\n ]\n },\n \"optional\": true\n },\n \"fields\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"ref\",\n \"id\": \"AuthProfileField\"\n }\n }\n },\n \"primaryKey\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"authUserId\"\n ]\n },\n \"optional\": true\n },\n \"table\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"updateStrategy\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"api\",\n \"app\"\n ]\n },\n \"optional\": true\n }\n }\n }\n },\n \"AuthSignInSpec\": {\n \"id\": \"AuthSignInSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"identifiers\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"enum\",\n \"values\": [\n \"email\",\n \"phone\",\n \"username\"\n ]\n }\n }\n }\n }\n }\n },\n \"AuthSignUpField\": {\n \"id\": \"AuthSignUpField\",\n \"descriptor\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"AuthSignUpSpec\": {\n \"id\": \"AuthSignUpSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"optionalFields\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"ref\",\n \"id\": \"AuthSignUpField\"\n }\n },\n \"optional\": true\n },\n \"requiredFields\": {\n \"value\": {\n \"kind\": \"ordered-list\",\n \"item\": {\n \"kind\": \"ref\",\n \"id\": \"AuthSignUpField\"\n }\n }\n },\n \"signUpPolicy\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"autoSignIn\",\n \"requireVerification\"\n ]\n },\n \"optional\": true\n }\n }\n }\n },\n \"ScreenMetadataSpec\": {\n \"id\": \"ScreenMetadataSpec\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"description\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n },\n \"id\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"name\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"title\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"ScreenRequirements\": {\n \"id\": \"ScreenRequirements\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"capabilities\": {\n \"value\": {\n \"kind\": \"set\",\n \"member\": {\n \"kind\": \"enum\",\n \"values\": [\n \"barcodeScanner\",\n \"cameraPreview\",\n \"clipboard\",\n \"ebookReader\",\n \"filePicker\",\n \"location\",\n \"mediaPicker\",\n \"notifications\"\n ]\n }\n },\n \"optional\": true\n },\n \"permissions\": {\n \"value\": {\n \"kind\": \"set\",\n \"member\": {\n \"kind\": \"enum\",\n \"values\": [\n \"camera\",\n \"clipboard\",\n \"locationBackground\",\n \"locationForeground\",\n \"mediaLibrary\",\n \"mediaLibraryWrite\",\n \"microphone\",\n \"notifications\"\n ]\n }\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeConfig\": {\n \"id\": \"ThemeConfig\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"dark\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeModeConfig\"\n }\n },\n \"id\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"light\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeModeConfig\"\n }\n },\n \"name\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"recipes\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeRecipeOverrides\"\n },\n \"optional\": true\n },\n \"tokens\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeGlobalTokenOverrides\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeGlobalTokenOverrides\": {\n \"id\": \"ThemeGlobalTokenOverrides\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"radii\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n }\n },\n \"optional\": true\n },\n \"shadows\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n }\n },\n \"optional\": true\n },\n \"spacing\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n }\n },\n \"optional\": true\n },\n \"typography\": {\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeTypographyTokenOverrides\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeModeConfig\": {\n \"id\": \"ThemeModeConfig\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"harmony\": {\n \"value\": {\n \"kind\": \"enum\",\n \"values\": [\n \"analogous\",\n \"complementary\",\n \"monochromatic\",\n \"splitComplementary\",\n \"square\",\n \"tetradic\",\n \"triadic\"\n ]\n }\n },\n \"primaryColor\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"ThemeRecipeOverrides\": {\n \"id\": \"ThemeRecipeOverrides\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"components\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"ref\",\n \"packageName\": \"typescript\",\n \"id\": \"Readonly\"\n }\n },\n \"optional\": true\n },\n \"patterns\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"ref\",\n \"packageName\": \"typescript\",\n \"id\": \"Readonly\"\n }\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeTypographyHeadingOverrides\": {\n \"id\": \"ThemeTypographyHeadingOverrides\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"lineHeight\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n },\n \"optional\": true\n },\n \"size\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n },\n \"optional\": true\n },\n \"weight\": {\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"optional\": true\n }\n }\n }\n },\n \"ThemeTypographyTokenOverrides\": {\n \"id\": \"ThemeTypographyTokenOverrides\",\n \"descriptor\": {\n \"kind\": \"object\",\n \"fields\": {\n \"headings\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"ref\",\n \"id\": \"ThemeTypographyHeadingOverrides\"\n }\n },\n \"optional\": true\n },\n \"sizes\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"number\"\n }\n },\n \"optional\": true\n },\n \"weights\": {\n \"value\": {\n \"kind\": \"value-map\",\n \"key\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n },\n \"value\": {\n \"kind\": \"scalar\",\n \"type\": \"string\"\n }\n },\n \"optional\": true\n }\n }\n }\n }\n }\n} as const satisfies StructureDescriptorDocument;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/contracts",
3
- "version": "25.1.0",
3
+ "version": "25.2.0",
4
4
  "main": "./dist/index.js",
5
5
  "ankh": {
6
6
  "category": "contracts",
@@ -44,8 +44,8 @@
44
44
  "@ankhorage/utility": "^1.9.85"
45
45
  },
46
46
  "devDependencies": {
47
- "@ankhorage/devtools": "^2.3.9",
48
- "@ankhorage/paradox": "^0.3.2",
47
+ "@ankhorage/devtools": "^2.3.10",
48
+ "@ankhorage/paradox": "^0.3.3",
49
49
  "@types/bun": "^1.4.2",
50
50
  "@types/node": "^26.6.5",
51
51
  "typescript": "^6.0.3"
@@ -0,0 +1,86 @@
1
+ import { describe, expect, it } from 'bun:test';
2
+
3
+ import { isDataSchema } from './data';
4
+ import {
5
+ STORAGE_ADAPTER_ERROR_SCHEMA,
6
+ STORAGE_ASSET_REFERENCE_SCHEMA,
7
+ STORAGE_BYTES_SCHEMA,
8
+ STORAGE_ERROR_RESULT_SCHEMA,
9
+ STORAGE_IDENTITY_SCHEMA,
10
+ STORAGE_LIST_INPUT_SCHEMA,
11
+ STORAGE_LIST_OPERATION_RESULT_SCHEMA,
12
+ STORAGE_LIST_RESULT_SCHEMA,
13
+ STORAGE_OBJECT_METADATA_SCHEMA,
14
+ STORAGE_PUBLIC_URL_INPUT_SCHEMA,
15
+ STORAGE_PUBLIC_URL_OPERATION_RESULT_SCHEMA,
16
+ STORAGE_PUBLIC_URL_RESULT_SCHEMA,
17
+ STORAGE_REMOVE_INPUT_SCHEMA,
18
+ STORAGE_RESOLVE_INPUT_SCHEMA,
19
+ STORAGE_RESOLVE_OPERATION_RESULT_SCHEMA,
20
+ STORAGE_RESOLVE_RESULT_SCHEMA,
21
+ STORAGE_RESOLVED_ASSET_SCHEMA,
22
+ STORAGE_SUCCESS_SCHEMA,
23
+ STORAGE_UPLOAD_INPUT_SCHEMA,
24
+ STORAGE_UPLOAD_OPERATION_RESULT_SCHEMA,
25
+ STORAGE_UPLOAD_RESULT_SCHEMA,
26
+ STORAGE_VOID_RESULT_SCHEMA,
27
+ } from './storage';
28
+
29
+ const STORAGE_SCHEMAS = [
30
+ STORAGE_BYTES_SCHEMA,
31
+ STORAGE_IDENTITY_SCHEMA,
32
+ STORAGE_ASSET_REFERENCE_SCHEMA,
33
+ STORAGE_OBJECT_METADATA_SCHEMA,
34
+ STORAGE_UPLOAD_INPUT_SCHEMA,
35
+ STORAGE_UPLOAD_RESULT_SCHEMA,
36
+ STORAGE_REMOVE_INPUT_SCHEMA,
37
+ STORAGE_PUBLIC_URL_INPUT_SCHEMA,
38
+ STORAGE_PUBLIC_URL_RESULT_SCHEMA,
39
+ STORAGE_LIST_INPUT_SCHEMA,
40
+ STORAGE_LIST_RESULT_SCHEMA,
41
+ STORAGE_RESOLVE_INPUT_SCHEMA,
42
+ STORAGE_RESOLVED_ASSET_SCHEMA,
43
+ STORAGE_RESOLVE_RESULT_SCHEMA,
44
+ STORAGE_ADAPTER_ERROR_SCHEMA,
45
+ STORAGE_SUCCESS_SCHEMA,
46
+ STORAGE_ERROR_RESULT_SCHEMA,
47
+ STORAGE_VOID_RESULT_SCHEMA,
48
+ STORAGE_UPLOAD_OPERATION_RESULT_SCHEMA,
49
+ STORAGE_PUBLIC_URL_OPERATION_RESULT_SCHEMA,
50
+ STORAGE_LIST_OPERATION_RESULT_SCHEMA,
51
+ STORAGE_RESOLVE_OPERATION_RESULT_SCHEMA,
52
+ ] as const;
53
+
54
+ describe('storage capability schemas', () => {
55
+ it('publishes valid, serializable schema sources for every storage operation and value', () => {
56
+ expect(STORAGE_SCHEMAS.every(isDataSchema)).toBe(true);
57
+ expect(JSON.parse(JSON.stringify(STORAGE_SCHEMAS))).toEqual(STORAGE_SCHEMAS);
58
+ });
59
+
60
+ it('serializes upload bytes as standard Base64 without changing the adapter input contract', () => {
61
+ expect(STORAGE_UPLOAD_INPUT_SCHEMA.required).toEqual(['bucket', 'path', 'body']);
62
+ expect(STORAGE_UPLOAD_INPUT_SCHEMA.properties.body).toEqual({
63
+ type: 'string',
64
+ format: 'base64',
65
+ });
66
+ });
67
+
68
+ it('keeps public and signed resolution under the existing access selection', () => {
69
+ expect(STORAGE_RESOLVE_INPUT_SCHEMA.properties.access).toEqual({
70
+ type: 'string',
71
+ enum: ['public', 'signed'],
72
+ });
73
+ expect(STORAGE_RESOLVED_ASSET_SCHEMA.properties.access).toEqual({
74
+ type: 'string',
75
+ enum: ['public', 'signed'],
76
+ });
77
+ });
78
+
79
+ it('requires result data for non-void operations and keeps errors portable', () => {
80
+ expect(STORAGE_UPLOAD_OPERATION_RESULT_SCHEMA.oneOf[0].required).toEqual(['ok', 'data']);
81
+ expect(STORAGE_PUBLIC_URL_OPERATION_RESULT_SCHEMA.oneOf[0].required).toEqual(['ok', 'data']);
82
+ expect(STORAGE_LIST_OPERATION_RESULT_SCHEMA.oneOf[0].required).toEqual(['ok', 'data']);
83
+ expect(STORAGE_RESOLVE_OPERATION_RESULT_SCHEMA.oneOf[0].required).toEqual(['ok', 'data']);
84
+ expect(STORAGE_ADAPTER_ERROR_SCHEMA.properties).not.toHaveProperty('cause');
85
+ });
86
+ });