@ankhorage/contracts 22.5.1 → 22.7.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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ankhorage/contracts
2
2
 
3
+ ## 22.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 37357e8: Publish the canonical auth profile structure root for descriptor-driven Studio authoring.
8
+
9
+ ## 22.6.0
10
+
11
+ ### Minor Changes
12
+
13
+ - fbdb926: Publish the canonical auth sign-up structure root, including open-string ordered field lists, for descriptor-driven Studio authoring.
14
+
3
15
  ## 22.5.1
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # @ankhorage/contracts
5
5
 
6
- ![license: MIT](././paradox/badges/license.svg) ![npm: v22.5.1](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
6
+ ![license: MIT](././paradox/badges/license.svg) ![npm: v22.7.0](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
7
7
 
8
8
  Serializable app, action, theme, auth, and secret-store contracts for Ankhorage.
9
9
 
@@ -1,12 +1,14 @@
1
1
  export declare const STRUCTURE_DESCRIPTOR_COMPILER_VERSION = "6.0.3";
2
- export declare const STRUCTURE_DESCRIPTOR_FINGERPRINT = "sha256:8b359ab8886ccde511b1558caf92e99917aaee30860c5130b511595d491614e4";
2
+ export declare const STRUCTURE_DESCRIPTOR_FINGERPRINT = "sha256:be94d5871e866b5cacf464e79b7f80777b2a1c235845f5f0db1336623727dcd1";
3
3
  export declare const STRUCTURE_DESCRIPTOR: {
4
4
  readonly protocolVersion: 1;
5
5
  readonly packageName: "@ankhorage/contracts";
6
- readonly packageVersion: "22.5.0";
6
+ readonly packageVersion: "22.6.0";
7
7
  readonly roots: {
8
8
  readonly "auth-flow": "AuthFlowConfig";
9
+ readonly "auth-profile": "AuthProfileSpec";
9
10
  readonly "auth-sign-in": "AuthSignInSpec";
11
+ readonly "auth-sign-up": "AuthSignUpSpec";
10
12
  readonly "screen-metadata": "ScreenMetadataSpec";
11
13
  readonly "screen-requirements": "ScreenRequirements";
12
14
  };
@@ -66,6 +68,58 @@ export declare const STRUCTURE_DESCRIPTOR: {
66
68
  };
67
69
  };
68
70
  };
71
+ readonly AuthProfileField: {
72
+ readonly id: "AuthProfileField";
73
+ readonly descriptor: {
74
+ readonly kind: "scalar";
75
+ readonly type: "string";
76
+ };
77
+ };
78
+ readonly AuthProfileSpec: {
79
+ readonly id: "AuthProfileSpec";
80
+ readonly descriptor: {
81
+ readonly kind: "object";
82
+ readonly fields: {
83
+ readonly createStrategy: {
84
+ readonly value: {
85
+ readonly kind: "enum";
86
+ readonly values: readonly ["api", "app", "trigger"];
87
+ };
88
+ readonly optional: true;
89
+ };
90
+ readonly fields: {
91
+ readonly value: {
92
+ readonly kind: "ordered-list";
93
+ readonly item: {
94
+ readonly kind: "ref";
95
+ readonly id: "AuthProfileField";
96
+ };
97
+ };
98
+ };
99
+ readonly primaryKey: {
100
+ readonly value: {
101
+ readonly kind: "enum";
102
+ readonly values: readonly ["authUserId"];
103
+ };
104
+ readonly optional: true;
105
+ };
106
+ readonly table: {
107
+ readonly value: {
108
+ readonly kind: "scalar";
109
+ readonly type: "string";
110
+ };
111
+ readonly optional: true;
112
+ };
113
+ readonly updateStrategy: {
114
+ readonly value: {
115
+ readonly kind: "enum";
116
+ readonly values: readonly ["api", "app"];
117
+ };
118
+ readonly optional: true;
119
+ };
120
+ };
121
+ };
122
+ };
69
123
  readonly AuthSignInSpec: {
70
124
  readonly id: "AuthSignInSpec";
71
125
  readonly descriptor: {
@@ -83,6 +137,47 @@ export declare const STRUCTURE_DESCRIPTOR: {
83
137
  };
84
138
  };
85
139
  };
140
+ readonly AuthSignUpField: {
141
+ readonly id: "AuthSignUpField";
142
+ readonly descriptor: {
143
+ readonly kind: "scalar";
144
+ readonly type: "string";
145
+ };
146
+ };
147
+ readonly AuthSignUpSpec: {
148
+ readonly id: "AuthSignUpSpec";
149
+ readonly descriptor: {
150
+ readonly kind: "object";
151
+ readonly fields: {
152
+ readonly optionalFields: {
153
+ readonly value: {
154
+ readonly kind: "ordered-list";
155
+ readonly item: {
156
+ readonly kind: "ref";
157
+ readonly id: "AuthSignUpField";
158
+ };
159
+ };
160
+ readonly optional: true;
161
+ };
162
+ readonly requiredFields: {
163
+ readonly value: {
164
+ readonly kind: "ordered-list";
165
+ readonly item: {
166
+ readonly kind: "ref";
167
+ readonly id: "AuthSignUpField";
168
+ };
169
+ };
170
+ };
171
+ readonly signUpPolicy: {
172
+ readonly value: {
173
+ readonly kind: "enum";
174
+ readonly values: readonly ["autoSignIn", "requireVerification"];
175
+ };
176
+ readonly optional: true;
177
+ };
178
+ };
179
+ };
180
+ };
86
181
  readonly ScreenMetadataSpec: {
87
182
  readonly id: "ScreenMetadataSpec";
88
183
  readonly descriptor: {
@@ -1 +1 @@
1
- {"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../src/structure/generated.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qCAAqC,UAAU,CAAC;AAC7D,eAAO,MAAM,gCAAgC,4EAA4E,CAAC;AAE1H,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwKe,CAAC"}
1
+ {"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../src/structure/generated.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qCAAqC,UAAU,CAAC;AAC7D,eAAO,MAAM,gCAAgC,4EAA4E,CAAC;AAE1H,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmRe,CAAC"}
@@ -1,12 +1,14 @@
1
1
  export const STRUCTURE_DESCRIPTOR_COMPILER_VERSION = '6.0.3';
2
- export const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:8b359ab8886ccde511b1558caf92e99917aaee30860c5130b511595d491614e4';
2
+ export const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:be94d5871e866b5cacf464e79b7f80777b2a1c235845f5f0db1336623727dcd1';
3
3
  export const STRUCTURE_DESCRIPTOR = {
4
4
  "protocolVersion": 1,
5
5
  "packageName": "@ankhorage/contracts",
6
- "packageVersion": "22.5.0",
6
+ "packageVersion": "22.6.0",
7
7
  "roots": {
8
8
  "auth-flow": "AuthFlowConfig",
9
+ "auth-profile": "AuthProfileSpec",
9
10
  "auth-sign-in": "AuthSignInSpec",
11
+ "auth-sign-up": "AuthSignUpSpec",
10
12
  "screen-metadata": "ScreenMetadataSpec",
11
13
  "screen-requirements": "ScreenRequirements"
12
14
  },
@@ -66,6 +68,67 @@ export const STRUCTURE_DESCRIPTOR = {
66
68
  }
67
69
  }
68
70
  },
71
+ "AuthProfileField": {
72
+ "id": "AuthProfileField",
73
+ "descriptor": {
74
+ "kind": "scalar",
75
+ "type": "string"
76
+ }
77
+ },
78
+ "AuthProfileSpec": {
79
+ "id": "AuthProfileSpec",
80
+ "descriptor": {
81
+ "kind": "object",
82
+ "fields": {
83
+ "createStrategy": {
84
+ "value": {
85
+ "kind": "enum",
86
+ "values": [
87
+ "api",
88
+ "app",
89
+ "trigger"
90
+ ]
91
+ },
92
+ "optional": true
93
+ },
94
+ "fields": {
95
+ "value": {
96
+ "kind": "ordered-list",
97
+ "item": {
98
+ "kind": "ref",
99
+ "id": "AuthProfileField"
100
+ }
101
+ }
102
+ },
103
+ "primaryKey": {
104
+ "value": {
105
+ "kind": "enum",
106
+ "values": [
107
+ "authUserId"
108
+ ]
109
+ },
110
+ "optional": true
111
+ },
112
+ "table": {
113
+ "value": {
114
+ "kind": "scalar",
115
+ "type": "string"
116
+ },
117
+ "optional": true
118
+ },
119
+ "updateStrategy": {
120
+ "value": {
121
+ "kind": "enum",
122
+ "values": [
123
+ "api",
124
+ "app"
125
+ ]
126
+ },
127
+ "optional": true
128
+ }
129
+ }
130
+ }
131
+ },
69
132
  "AuthSignInSpec": {
70
133
  "id": "AuthSignInSpec",
71
134
  "descriptor": {
@@ -87,6 +150,50 @@ export const STRUCTURE_DESCRIPTOR = {
87
150
  }
88
151
  }
89
152
  },
153
+ "AuthSignUpField": {
154
+ "id": "AuthSignUpField",
155
+ "descriptor": {
156
+ "kind": "scalar",
157
+ "type": "string"
158
+ }
159
+ },
160
+ "AuthSignUpSpec": {
161
+ "id": "AuthSignUpSpec",
162
+ "descriptor": {
163
+ "kind": "object",
164
+ "fields": {
165
+ "optionalFields": {
166
+ "value": {
167
+ "kind": "ordered-list",
168
+ "item": {
169
+ "kind": "ref",
170
+ "id": "AuthSignUpField"
171
+ }
172
+ },
173
+ "optional": true
174
+ },
175
+ "requiredFields": {
176
+ "value": {
177
+ "kind": "ordered-list",
178
+ "item": {
179
+ "kind": "ref",
180
+ "id": "AuthSignUpField"
181
+ }
182
+ }
183
+ },
184
+ "signUpPolicy": {
185
+ "value": {
186
+ "kind": "enum",
187
+ "values": [
188
+ "autoSignIn",
189
+ "requireVerification"
190
+ ]
191
+ },
192
+ "optional": true
193
+ }
194
+ }
195
+ }
196
+ },
90
197
  "ScreenMetadataSpec": {
91
198
  "id": "ScreenMetadataSpec",
92
199
  "descriptor": {
@@ -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:8b359ab8886ccde511b1558caf92e99917aaee30860c5130b511595d491614e4';\n\nexport const STRUCTURE_DESCRIPTOR = {\n \"protocolVersion\": 1,\n \"packageName\": \"@ankhorage/contracts\",\n \"packageVersion\": \"22.5.0\",\n \"roots\": {\n \"auth-flow\": \"AuthFlowConfig\",\n \"auth-sign-in\": \"AuthSignInSpec\",\n \"screen-metadata\": \"ScreenMetadataSpec\",\n \"screen-requirements\": \"ScreenRequirements\"\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 \"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 \"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 }\n} as const satisfies StructureDescriptorDocument;\n"]}
1
+ {"version":3,"file":"generated.js","sourceRoot":"","sources":["../../src/structure/generated.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qCAAqC,GAAG,OAAO,CAAC;AAC7D,MAAM,CAAC,MAAM,gCAAgC,GAAG,yEAAyE,CAAC;AAE1H,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,iBAAiB,EAAE,CAAC;IACpB,aAAa,EAAE,sBAAsB;IACrC,gBAAgB,EAAE,QAAQ;IAC1B,OAAO,EAAE;QACP,WAAW,EAAE,gBAAgB;QAC7B,cAAc,EAAE,iBAAiB;QACjC,cAAc,EAAE,gBAAgB;QAChC,cAAc,EAAE,gBAAgB;QAChC,iBAAiB,EAAE,oBAAoB;QACvC,qBAAqB,EAAE,oBAAoB;KAC5C;IACD,aAAa,EAAE;QACb,gBAAgB,EAAE;YAChB,IAAI,EAAE,gBAAgB;YACtB,YAAY,EAAE;gBACZ,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE;oBACR,qBAAqB,EAAE;wBACrB,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,QAAQ;yBACjB;wBACD,UAAU,EAAE,IAAI;qBACjB;oBACD,UAAU,EAAE;wBACV,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,QAAQ;yBACjB;wBACD,UAAU,EAAE,IAAI;qBACjB;oBACD,iBAAiB,EAAE;wBACjB,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,QAAQ;yBACjB;qBACF;oBACD,aAAa,EAAE;wBACb,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,QAAQ;yBACjB;qBACF;oBACD,cAAc,EAAE;wBACd,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,QAAQ;yBACjB;wBACD,UAAU,EAAE,IAAI;qBACjB;oBACD,aAAa,EAAE;wBACb,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,QAAQ;yBACjB;wBACD,UAAU,EAAE,IAAI;qBACjB;oBACD,mBAAmB,EAAE;wBACnB,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,QAAQ;yBACjB;wBACD,UAAU,EAAE,IAAI;qBACjB;iBACF;aACF;SACF;QACD,kBAAkB,EAAE;YAClB,IAAI,EAAE,kBAAkB;YACxB,YAAY,EAAE;gBACZ,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,QAAQ;aACjB;SACF;QACD,iBAAiB,EAAE;YACjB,IAAI,EAAE,iBAAiB;YACvB,YAAY,EAAE;gBACZ,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE;oBACR,gBAAgB,EAAE;wBAChB,OAAO,EAAE;4BACP,MAAM,EAAE,MAAM;4BACd,QAAQ,EAAE;gCACR,KAAK;gCACL,KAAK;gCACL,SAAS;6BACV;yBACF;wBACD,UAAU,EAAE,IAAI;qBACjB;oBACD,QAAQ,EAAE;wBACR,OAAO,EAAE;4BACP,MAAM,EAAE,cAAc;4BACtB,MAAM,EAAE;gCACN,MAAM,EAAE,KAAK;gCACb,IAAI,EAAE,kBAAkB;6BACzB;yBACF;qBACF;oBACD,YAAY,EAAE;wBACZ,OAAO,EAAE;4BACP,MAAM,EAAE,MAAM;4BACd,QAAQ,EAAE;gCACR,YAAY;6BACb;yBACF;wBACD,UAAU,EAAE,IAAI;qBACjB;oBACD,OAAO,EAAE;wBACP,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,QAAQ;yBACjB;wBACD,UAAU,EAAE,IAAI;qBACjB;oBACD,gBAAgB,EAAE;wBAChB,OAAO,EAAE;4BACP,MAAM,EAAE,MAAM;4BACd,QAAQ,EAAE;gCACR,KAAK;gCACL,KAAK;6BACN;yBACF;wBACD,UAAU,EAAE,IAAI;qBACjB;iBACF;aACF;SACF;QACD,gBAAgB,EAAE;YAChB,IAAI,EAAE,gBAAgB;YACtB,YAAY,EAAE;gBACZ,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE;oBACR,aAAa,EAAE;wBACb,OAAO,EAAE;4BACP,MAAM,EAAE,cAAc;4BACtB,MAAM,EAAE;gCACN,MAAM,EAAE,MAAM;gCACd,QAAQ,EAAE;oCACR,OAAO;oCACP,OAAO;oCACP,UAAU;iCACX;6BACF;yBACF;qBACF;iBACF;aACF;SACF;QACD,iBAAiB,EAAE;YACjB,IAAI,EAAE,iBAAiB;YACvB,YAAY,EAAE;gBACZ,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,QAAQ;aACjB;SACF;QACD,gBAAgB,EAAE;YAChB,IAAI,EAAE,gBAAgB;YACtB,YAAY,EAAE;gBACZ,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE;oBACR,gBAAgB,EAAE;wBAChB,OAAO,EAAE;4BACP,MAAM,EAAE,cAAc;4BACtB,MAAM,EAAE;gCACN,MAAM,EAAE,KAAK;gCACb,IAAI,EAAE,iBAAiB;6BACxB;yBACF;wBACD,UAAU,EAAE,IAAI;qBACjB;oBACD,gBAAgB,EAAE;wBAChB,OAAO,EAAE;4BACP,MAAM,EAAE,cAAc;4BACtB,MAAM,EAAE;gCACN,MAAM,EAAE,KAAK;gCACb,IAAI,EAAE,iBAAiB;6BACxB;yBACF;qBACF;oBACD,cAAc,EAAE;wBACd,OAAO,EAAE;4BACP,MAAM,EAAE,MAAM;4BACd,QAAQ,EAAE;gCACR,YAAY;gCACZ,qBAAqB;6BACtB;yBACF;wBACD,UAAU,EAAE,IAAI;qBACjB;iBACF;aACF;SACF;QACD,oBAAoB,EAAE;YACpB,IAAI,EAAE,oBAAoB;YAC1B,YAAY,EAAE;gBACZ,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE;oBACR,aAAa,EAAE;wBACb,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,QAAQ;yBACjB;wBACD,UAAU,EAAE,IAAI;qBACjB;oBACD,IAAI,EAAE;wBACJ,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,QAAQ;yBACjB;qBACF;oBACD,MAAM,EAAE;wBACN,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,QAAQ;yBACjB;qBACF;oBACD,OAAO,EAAE;wBACP,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,QAAQ;yBACjB;wBACD,UAAU,EAAE,IAAI;qBACjB;iBACF;aACF;SACF;QACD,oBAAoB,EAAE;YACpB,IAAI,EAAE,oBAAoB;YAC1B,YAAY,EAAE;gBACZ,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE;oBACR,cAAc,EAAE;wBACd,OAAO,EAAE;4BACP,MAAM,EAAE,KAAK;4BACb,QAAQ,EAAE;gCACR,MAAM,EAAE,MAAM;gCACd,QAAQ,EAAE;oCACR,gBAAgB;oCAChB,eAAe;oCACf,WAAW;oCACX,aAAa;oCACb,YAAY;oCACZ,UAAU;oCACV,aAAa;oCACb,eAAe;iCAChB;6BACF;yBACF;wBACD,UAAU,EAAE,IAAI;qBACjB;oBACD,aAAa,EAAE;wBACb,OAAO,EAAE;4BACP,MAAM,EAAE,KAAK;4BACb,QAAQ,EAAE;gCACR,MAAM,EAAE,MAAM;gCACd,QAAQ,EAAE;oCACR,QAAQ;oCACR,WAAW;oCACX,oBAAoB;oCACpB,oBAAoB;oCACpB,cAAc;oCACd,mBAAmB;oCACnB,YAAY;oCACZ,eAAe;iCAChB;6BACF;yBACF;wBACD,UAAU,EAAE,IAAI;qBACjB;iBACF;aACF;SACF;KACF;CAC6C,CAAC","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:be94d5871e866b5cacf464e79b7f80777b2a1c235845f5f0db1336623727dcd1';\n\nexport const STRUCTURE_DESCRIPTOR = {\n \"protocolVersion\": 1,\n \"packageName\": \"@ankhorage/contracts\",\n \"packageVersion\": \"22.6.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 },\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 }\n} as const satisfies StructureDescriptorDocument;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/contracts",
3
- "version": "22.5.1",
3
+ "version": "22.7.0",
4
4
  "main": "./dist/index.js",
5
5
  "ankh": {
6
6
  "category": "contracts",
@@ -15,10 +15,18 @@
15
15
  "source": "src/auth.ts",
16
16
  "export": "AuthFlowConfig"
17
17
  },
18
+ "auth-profile": {
19
+ "source": "src/types.ts",
20
+ "export": "AuthProfileSpec"
21
+ },
18
22
  "auth-sign-in": {
19
23
  "source": "src/types.ts",
20
24
  "export": "AuthSignInSpec"
21
25
  },
26
+ "auth-sign-up": {
27
+ "source": "src/types.ts",
28
+ "export": "AuthSignUpSpec"
29
+ },
22
30
  "screen-metadata": {
23
31
  "source": "src/types.ts",
24
32
  "export": "ScreenMetadataSpec"
@@ -35,7 +43,7 @@
35
43
  "@ankhorage/utility": "^1.5.0"
36
44
  },
37
45
  "devDependencies": {
38
- "@ankhorage/devtools": "^1.18.5",
46
+ "@ankhorage/devtools": "^1.19.10",
39
47
  "@ankhorage/paradox": "^0.1.26",
40
48
  "@types/bun": "^1.4.1",
41
49
  "@types/node": "^25.2.3",
@@ -0,0 +1,50 @@
1
+ import { expect, test } from 'bun:test';
2
+
3
+ import { STRUCTURE_DESCRIPTOR } from './structure';
4
+
5
+ test('publishes AuthProfileSpec open-string field and finite strategy semantics', () => {
6
+ expect(STRUCTURE_DESCRIPTOR.roots['auth-profile']).toBe('AuthProfileSpec');
7
+ expect(STRUCTURE_DESCRIPTOR.descriptors.AuthProfileField.descriptor).toEqual({
8
+ kind: 'scalar',
9
+ type: 'string',
10
+ });
11
+ expect(STRUCTURE_DESCRIPTOR.descriptors.AuthProfileSpec.descriptor).toEqual({
12
+ kind: 'object',
13
+ fields: {
14
+ createStrategy: {
15
+ value: {
16
+ kind: 'enum',
17
+ values: ['api', 'app', 'trigger'],
18
+ },
19
+ optional: true,
20
+ },
21
+ fields: {
22
+ value: {
23
+ kind: 'ordered-list',
24
+ item: { kind: 'ref', id: 'AuthProfileField' },
25
+ },
26
+ },
27
+ primaryKey: {
28
+ value: {
29
+ kind: 'enum',
30
+ values: ['authUserId'],
31
+ },
32
+ optional: true,
33
+ },
34
+ table: {
35
+ value: {
36
+ kind: 'scalar',
37
+ type: 'string',
38
+ },
39
+ optional: true,
40
+ },
41
+ updateStrategy: {
42
+ value: {
43
+ kind: 'enum',
44
+ values: ['api', 'app'],
45
+ },
46
+ optional: true,
47
+ },
48
+ },
49
+ });
50
+ });
@@ -0,0 +1,36 @@
1
+ import { expect, test } from 'bun:test';
2
+
3
+ import { STRUCTURE_DESCRIPTOR } from './structure';
4
+
5
+ test('publishes AuthSignUpSpec open-string ordered field semantics from the generated owner document', () => {
6
+ expect(STRUCTURE_DESCRIPTOR.roots['auth-sign-up']).toBe('AuthSignUpSpec');
7
+ expect(STRUCTURE_DESCRIPTOR.descriptors.AuthSignUpField.descriptor).toEqual({
8
+ kind: 'scalar',
9
+ type: 'string',
10
+ });
11
+ expect(STRUCTURE_DESCRIPTOR.descriptors.AuthSignUpSpec.descriptor).toEqual({
12
+ kind: 'object',
13
+ fields: {
14
+ optionalFields: {
15
+ value: {
16
+ kind: 'ordered-list',
17
+ item: { kind: 'ref', id: 'AuthSignUpField' },
18
+ },
19
+ optional: true,
20
+ },
21
+ requiredFields: {
22
+ value: {
23
+ kind: 'ordered-list',
24
+ item: { kind: 'ref', id: 'AuthSignUpField' },
25
+ },
26
+ },
27
+ signUpPolicy: {
28
+ value: {
29
+ kind: 'enum',
30
+ values: ['autoSignIn', 'requireVerification'],
31
+ },
32
+ optional: true,
33
+ },
34
+ },
35
+ });
36
+ });
@@ -66,10 +66,18 @@ describe('contracts', () => {
66
66
  source: 'src/auth.ts',
67
67
  export: 'AuthFlowConfig',
68
68
  },
69
+ 'auth-profile': {
70
+ source: 'src/types.ts',
71
+ export: 'AuthProfileSpec',
72
+ },
69
73
  'auth-sign-in': {
70
74
  source: 'src/types.ts',
71
75
  export: 'AuthSignInSpec',
72
76
  },
77
+ 'auth-sign-up': {
78
+ source: 'src/types.ts',
79
+ export: 'AuthSignUpSpec',
80
+ },
73
81
  'screen-metadata': {
74
82
  source: 'src/types.ts',
75
83
  export: 'ScreenMetadataSpec',
@@ -2,15 +2,17 @@
2
2
  import type { StructureDescriptorDocument } from '@ankhorage/contracts/structure';
3
3
 
4
4
  export const STRUCTURE_DESCRIPTOR_COMPILER_VERSION = '6.0.3';
5
- export const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:e52876c49fff0589b4d7ca3b47b6fb4d1101f9757858ec16348f6b5eea9cdc72';
5
+ export const STRUCTURE_DESCRIPTOR_FINGERPRINT = 'sha256:70d08d3048febcf5215150708292d6b49c208da087fda98cc6aa9767ead62656';
6
6
 
7
7
  export const STRUCTURE_DESCRIPTOR = {
8
8
  "protocolVersion": 1,
9
9
  "packageName": "@ankhorage/contracts",
10
- "packageVersion": "22.5.1",
10
+ "packageVersion": "22.7.0",
11
11
  "roots": {
12
12
  "auth-flow": "AuthFlowConfig",
13
+ "auth-profile": "AuthProfileSpec",
13
14
  "auth-sign-in": "AuthSignInSpec",
15
+ "auth-sign-up": "AuthSignUpSpec",
14
16
  "screen-metadata": "ScreenMetadataSpec",
15
17
  "screen-requirements": "ScreenRequirements"
16
18
  },
@@ -70,6 +72,67 @@ export const STRUCTURE_DESCRIPTOR = {
70
72
  }
71
73
  }
72
74
  },
75
+ "AuthProfileField": {
76
+ "id": "AuthProfileField",
77
+ "descriptor": {
78
+ "kind": "scalar",
79
+ "type": "string"
80
+ }
81
+ },
82
+ "AuthProfileSpec": {
83
+ "id": "AuthProfileSpec",
84
+ "descriptor": {
85
+ "kind": "object",
86
+ "fields": {
87
+ "createStrategy": {
88
+ "value": {
89
+ "kind": "enum",
90
+ "values": [
91
+ "api",
92
+ "app",
93
+ "trigger"
94
+ ]
95
+ },
96
+ "optional": true
97
+ },
98
+ "fields": {
99
+ "value": {
100
+ "kind": "ordered-list",
101
+ "item": {
102
+ "kind": "ref",
103
+ "id": "AuthProfileField"
104
+ }
105
+ }
106
+ },
107
+ "primaryKey": {
108
+ "value": {
109
+ "kind": "enum",
110
+ "values": [
111
+ "authUserId"
112
+ ]
113
+ },
114
+ "optional": true
115
+ },
116
+ "table": {
117
+ "value": {
118
+ "kind": "scalar",
119
+ "type": "string"
120
+ },
121
+ "optional": true
122
+ },
123
+ "updateStrategy": {
124
+ "value": {
125
+ "kind": "enum",
126
+ "values": [
127
+ "api",
128
+ "app"
129
+ ]
130
+ },
131
+ "optional": true
132
+ }
133
+ }
134
+ }
135
+ },
73
136
  "AuthSignInSpec": {
74
137
  "id": "AuthSignInSpec",
75
138
  "descriptor": {
@@ -91,6 +154,50 @@ export const STRUCTURE_DESCRIPTOR = {
91
154
  }
92
155
  }
93
156
  },
157
+ "AuthSignUpField": {
158
+ "id": "AuthSignUpField",
159
+ "descriptor": {
160
+ "kind": "scalar",
161
+ "type": "string"
162
+ }
163
+ },
164
+ "AuthSignUpSpec": {
165
+ "id": "AuthSignUpSpec",
166
+ "descriptor": {
167
+ "kind": "object",
168
+ "fields": {
169
+ "optionalFields": {
170
+ "value": {
171
+ "kind": "ordered-list",
172
+ "item": {
173
+ "kind": "ref",
174
+ "id": "AuthSignUpField"
175
+ }
176
+ },
177
+ "optional": true
178
+ },
179
+ "requiredFields": {
180
+ "value": {
181
+ "kind": "ordered-list",
182
+ "item": {
183
+ "kind": "ref",
184
+ "id": "AuthSignUpField"
185
+ }
186
+ }
187
+ },
188
+ "signUpPolicy": {
189
+ "value": {
190
+ "kind": "enum",
191
+ "values": [
192
+ "autoSignIn",
193
+ "requireVerification"
194
+ ]
195
+ },
196
+ "optional": true
197
+ }
198
+ }
199
+ }
200
+ },
94
201
  "ScreenMetadataSpec": {
95
202
  "id": "ScreenMetadataSpec",
96
203
  "descriptor": {