@ankhorage/contracts 0.0.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ankhorage
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,92 @@
1
+ # @ankhorage/contracts
2
+
3
+ Serializable app, action, and theme-config contracts for the Ankhorage ecosystem.
4
+
5
+ ## Scope
6
+
7
+ This package owns the serializable shapes shared across Ankhorage packages and generated
8
+ apps:
9
+
10
+ - app manifest contracts
11
+ - screen and navigator schema
12
+ - action contracts
13
+ - theme configuration contracts
14
+ - infra and auth configuration contracts
15
+
16
+ It does not own rendering behavior, runtime action execution, Studio authoring behavior,
17
+ or project generation.
18
+
19
+ ## Installation
20
+
21
+ ```sh
22
+ bun add @ankhorage/contracts
23
+ ```
24
+
25
+ ## Usage
26
+
27
+ ```ts
28
+ import type { AppManifest, ThemeConfig, UiNode } from '@ankhorage/contracts';
29
+
30
+ const theme: ThemeConfig = {
31
+ id: 'default',
32
+ name: 'Default',
33
+ light: {
34
+ primaryColor: '#3366ff',
35
+ harmony: 'analogous',
36
+ systemTone: 'neutral',
37
+ },
38
+ dark: {
39
+ primaryColor: '#3366ff',
40
+ harmony: 'analogous',
41
+ systemTone: 'neutral',
42
+ },
43
+ };
44
+
45
+ const root: UiNode = {
46
+ id: 'root',
47
+ type: 'Container',
48
+ };
49
+
50
+ const manifest: AppManifest = {
51
+ metadata: {
52
+ name: 'Example',
53
+ slug: 'example',
54
+ version: '1.0.0',
55
+ themeId: theme.id,
56
+ },
57
+ themes: [theme],
58
+ activeThemeId: theme.id,
59
+ infra: {
60
+ plugins: [],
61
+ },
62
+ navigator: {
63
+ type: 'stack',
64
+ routes: [],
65
+ },
66
+ screens: {
67
+ home: {
68
+ id: 'home',
69
+ name: 'home',
70
+ root,
71
+ },
72
+ },
73
+ settings: {
74
+ localization: {
75
+ defaultLocale: 'en',
76
+ locales: ['en'],
77
+ },
78
+ authFlow: {
79
+ loginRoute: '/login',
80
+ unauthorizedRoute: '/login',
81
+ postLoginRoute: '/',
82
+ },
83
+ },
84
+ };
85
+ ```
86
+
87
+ ## Non-Goals
88
+
89
+ - runtime rendering
90
+ - Studio authoring behavior
91
+ - Expo or React Native UI primitives
92
+ - CLI project generation
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,201 @@
1
+ export type ColorHarmony = 'monochromatic' | 'analogous' | 'complementary' | 'triadic' | 'tetradic' | 'splitComplementary';
2
+ export type SystemTone = 'neutral' | 'pastel' | 'earth' | 'jewel' | 'fluorescent';
3
+ export interface ThemeModeConfig {
4
+ primaryColor: string;
5
+ harmony: ColorHarmony;
6
+ systemTone: SystemTone;
7
+ }
8
+ export interface ThemeConfig {
9
+ id: string;
10
+ name: string;
11
+ light: ThemeModeConfig;
12
+ dark: ThemeModeConfig;
13
+ }
14
+ export type ActionType = 'navigate' | 'alert' | 'console' | 'toggleDarkMode' | 'setLanguage' | 'search' | 'filter';
15
+ export interface NavigateAction {
16
+ type: 'navigate';
17
+ payload: {
18
+ route: string;
19
+ params?: Record<string, number | string>;
20
+ };
21
+ }
22
+ export interface AlertAction {
23
+ type: 'alert';
24
+ payload?: {
25
+ message?: string;
26
+ };
27
+ }
28
+ export interface ConsoleAction {
29
+ type: 'console';
30
+ payload?: Record<string, unknown>;
31
+ }
32
+ export interface ToggleDarkModeAction {
33
+ type: 'toggleDarkMode';
34
+ payload?: never;
35
+ }
36
+ export interface SetLanguageAction {
37
+ type: 'setLanguage';
38
+ payload: {
39
+ locale: string;
40
+ };
41
+ }
42
+ export interface SearchAction {
43
+ type: 'search';
44
+ payload: {
45
+ query: string;
46
+ scope?: string;
47
+ };
48
+ }
49
+ export interface FilterAction {
50
+ type: 'filter';
51
+ payload: {
52
+ filterKey: string;
53
+ filterValue: string;
54
+ };
55
+ }
56
+ export type Action = AlertAction | ConsoleAction | FilterAction | NavigateAction | SearchAction | SetLanguageAction | ToggleDarkModeAction;
57
+ export declare const NAVIGATOR_TYPES: readonly ["stack", "tabs", "drawer"];
58
+ export type NavigatorType = (typeof NAVIGATOR_TYPES)[number];
59
+ export declare const DEPLOYMENT_TARGETS: readonly ["minikube"];
60
+ export type KnownDeploymentTarget = (typeof DEPLOYMENT_TARGETS)[number];
61
+ export type DeploymentTarget = KnownDeploymentTarget | (string & {});
62
+ export declare const DATABASE_PROVIDERS: readonly ["supabase"];
63
+ export type KnownDatabaseProvider = (typeof DATABASE_PROVIDERS)[number];
64
+ export type DatabaseProvider = KnownDatabaseProvider | (string & {});
65
+ export declare const DATABASE_TIERS: readonly ["dev", "prod"];
66
+ export type DatabaseTier = (typeof DATABASE_TIERS)[number];
67
+ export declare const STORAGE_PROVIDERS: readonly ["auto", "s3", "r2"];
68
+ export type StorageProvider = (typeof STORAGE_PROVIDERS)[number];
69
+ export declare const AUTHZ_KINDS: readonly ["RBAC", "ABAC"];
70
+ export type AuthzKind = (typeof AUTHZ_KINDS)[number];
71
+ export declare const AUTHZ_ENGINES: readonly ["cerbos", "native"];
72
+ export type AuthzEngine = (typeof AUTHZ_ENGINES)[number];
73
+ export declare const AUTH_SCOPES: readonly ["global", "none", "integrated"];
74
+ export type AuthScope = (typeof AUTH_SCOPES)[number];
75
+ export declare const AUTH_PROVIDERS: readonly ["supabase"];
76
+ export type KnownAuthProvider = (typeof AUTH_PROVIDERS)[number];
77
+ export type AuthProvider = KnownAuthProvider | (string & {});
78
+ export declare const AUTH_LOGIN_IDENTIFIERS: readonly ["email", "username", "phone"];
79
+ export type AuthLoginIdentifier = (typeof AUTH_LOGIN_IDENTIFIERS)[number];
80
+ export declare const AUTH_REGISTRATION_FIELDS: readonly ["email", "username", "phone", "password", "firstName", "lastName", "displayName", "avatarUrl"];
81
+ export type KnownAuthRegistrationField = (typeof AUTH_REGISTRATION_FIELDS)[number];
82
+ export type AuthRegistrationField = KnownAuthRegistrationField | (string & {});
83
+ export declare const AUTH_SIGNUP_POLICIES: readonly ["autoSignIn", "requireVerification"];
84
+ export type AuthSignupPolicy = (typeof AUTH_SIGNUP_POLICIES)[number];
85
+ export declare const AUTH_PROFILE_FIELDS: readonly ["email", "username", "phone", "firstName", "lastName", "displayName", "avatarUrl"];
86
+ export type KnownAuthProfileField = (typeof AUTH_PROFILE_FIELDS)[number];
87
+ export type AuthProfileField = KnownAuthProfileField | (string & {});
88
+ export interface IconSpec {
89
+ name: string;
90
+ provider?: string;
91
+ size?: number | string;
92
+ color?: string;
93
+ }
94
+ export interface UiNode {
95
+ id: string;
96
+ type: string;
97
+ alias?: string;
98
+ props?: Record<string, unknown>;
99
+ children?: UiNode[];
100
+ style?: Record<string, number | string>;
101
+ }
102
+ export interface ScreenSpec {
103
+ id: string;
104
+ name: string;
105
+ title?: string;
106
+ description?: string;
107
+ root: UiNode;
108
+ }
109
+ export interface NavigatorSpec {
110
+ type: NavigatorType;
111
+ initialRouteName?: string;
112
+ routes: RouteDefinition[];
113
+ options?: Record<string, unknown>;
114
+ }
115
+ export interface RouteDefinition {
116
+ name: string;
117
+ path?: string;
118
+ label?: string;
119
+ icon?: IconSpec;
120
+ hideInTabBar?: boolean;
121
+ guards?: string[];
122
+ screenId?: string;
123
+ navigator?: NavigatorSpec;
124
+ }
125
+ export interface DeploymentSpec {
126
+ target: DeploymentTarget;
127
+ monitoring: boolean;
128
+ }
129
+ export interface DatabaseSpec {
130
+ provider: DatabaseProvider;
131
+ tier: DatabaseTier;
132
+ }
133
+ export interface StorageSpec {
134
+ provider: StorageProvider;
135
+ buckets: string[];
136
+ }
137
+ export interface AuthzSpec {
138
+ kind: AuthzKind;
139
+ engine: AuthzEngine;
140
+ }
141
+ export interface AuthLoginSpec {
142
+ identifiers: AuthLoginIdentifier[];
143
+ }
144
+ export interface AuthRegistrationSpec {
145
+ requiredFields: AuthRegistrationField[];
146
+ optionalFields?: AuthRegistrationField[];
147
+ signupPolicy?: AuthSignupPolicy;
148
+ }
149
+ export interface AuthProfileSpec {
150
+ fields: AuthProfileField[];
151
+ }
152
+ export interface AuthSpec {
153
+ scope: AuthScope;
154
+ provider: AuthProvider;
155
+ authorization: AuthzSpec;
156
+ login?: AuthLoginSpec;
157
+ registration?: AuthRegistrationSpec;
158
+ profile?: AuthProfileSpec;
159
+ }
160
+ export interface NetworkingSpec {
161
+ domain?: string;
162
+ cdn: boolean;
163
+ }
164
+ export interface InfraManifest {
165
+ deployment?: DeploymentSpec;
166
+ auth?: AuthSpec;
167
+ database?: DatabaseSpec;
168
+ storage?: StorageSpec;
169
+ networking?: NetworkingSpec;
170
+ plugins: string[];
171
+ pluginsConfig?: Record<string, unknown>;
172
+ }
173
+ export interface AppManifest {
174
+ metadata: {
175
+ name: string;
176
+ slug: string;
177
+ version: string;
178
+ themeId: string;
179
+ created?: string;
180
+ updated?: string;
181
+ };
182
+ themes: ThemeConfig[];
183
+ activeThemeId: string;
184
+ activeThemeMode?: 'dark' | 'light';
185
+ infra: InfraManifest;
186
+ navigator: NavigatorSpec;
187
+ screens: Record<string, ScreenSpec>;
188
+ settings: {
189
+ apiBaseUrl?: string;
190
+ localization: {
191
+ defaultLocale: string;
192
+ locales: string[];
193
+ };
194
+ authFlow: {
195
+ loginRoute: string;
196
+ unauthorizedRoute: string;
197
+ postLoginRoute: string;
198
+ };
199
+ };
200
+ }
201
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,eAAe,GACf,WAAW,GACX,eAAe,GACf,SAAS,GACT,UAAU,GACV,oBAAoB,CAAC;AAEzB,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,OAAO,GACP,SAAS,GACT,gBAAgB,GAChB,aAAa,GACb,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;KAC1C,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,WAAW,GACX,aAAa,GACb,YAAY,GACZ,cAAc,GACd,YAAY,GACZ,iBAAiB,GACjB,oBAAoB,CAAC;AAEzB,eAAO,MAAM,eAAe,sCAAuC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,eAAO,MAAM,kBAAkB,uBAAwB,CAAC;AACxD,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AACxE,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAErE,eAAO,MAAM,kBAAkB,uBAAwB,CAAC;AACxD,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AACxE,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAErE,eAAO,MAAM,cAAc,0BAA2B,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,eAAO,MAAM,iBAAiB,+BAAgC,CAAC;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,eAAO,MAAM,WAAW,2BAA4B,CAAC;AACrD,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,aAAa,+BAAgC,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,WAAW,2CAA4C,CAAC;AACrE,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,cAAc,uBAAwB,CAAC;AACpD,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE7D,eAAO,MAAM,sBAAsB,yCAA0C,CAAC;AAC9E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,eAAO,MAAM,wBAAwB,0GAO3B,CAAC;AACX,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AACnF,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE/E,eAAO,MAAM,oBAAoB,gDAAiD,CAAC;AACnF,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,eAAO,MAAM,mBAAmB,8FAMtB,CAAC;AACX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AACzE,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAErE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,qBAAqB,EAAE,CAAC;IACxC,cAAc,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,aAAa,EAAE,SAAS,CAAC;IACzB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC,QAAQ,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE;YACZ,aAAa,EAAE,MAAM,CAAC;YACtB,OAAO,EAAE,MAAM,EAAE,CAAC;SACnB,CAAC;QACF,QAAQ,EAAE;YACR,UAAU,EAAE,MAAM,CAAC;YACnB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,cAAc,EAAE,MAAM,CAAC;SACxB,CAAC;KACH,CAAC;CACH"}
package/dist/types.js ADDED
@@ -0,0 +1,27 @@
1
+ export const NAVIGATOR_TYPES = ['stack', 'tabs', 'drawer'];
2
+ export const DEPLOYMENT_TARGETS = ['minikube'];
3
+ export const DATABASE_PROVIDERS = ['supabase'];
4
+ export const DATABASE_TIERS = ['dev', 'prod'];
5
+ export const STORAGE_PROVIDERS = ['auto', 's3', 'r2'];
6
+ export const AUTHZ_KINDS = ['RBAC', 'ABAC'];
7
+ export const AUTHZ_ENGINES = ['cerbos', 'native'];
8
+ export const AUTH_SCOPES = ['global', 'none', 'integrated'];
9
+ export const AUTH_PROVIDERS = ['supabase'];
10
+ export const AUTH_LOGIN_IDENTIFIERS = ['email', 'username', 'phone'];
11
+ export const AUTH_REGISTRATION_FIELDS = [
12
+ ...AUTH_LOGIN_IDENTIFIERS,
13
+ 'password',
14
+ 'firstName',
15
+ 'lastName',
16
+ 'displayName',
17
+ 'avatarUrl',
18
+ ];
19
+ export const AUTH_SIGNUP_POLICIES = ['autoSignIn', 'requireVerification'];
20
+ export const AUTH_PROFILE_FIELDS = [
21
+ ...AUTH_LOGIN_IDENTIFIERS,
22
+ 'firstName',
23
+ 'lastName',
24
+ 'displayName',
25
+ 'avatarUrl',
26
+ ];
27
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAyFA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAC;AAGpE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAAU,CAAU,CAAC;AAIxD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAAU,CAAU,CAAC;AAIxD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,CAAU,CAAC;AAGvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAG/D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC;AAGrD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAG3D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAU,CAAC;AAGrE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAU,CAAU,CAAC;AAIpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;AAG9E,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,GAAG,sBAAsB;IACzB,UAAU;IACV,WAAW;IACX,UAAU;IACV,aAAa;IACb,WAAW;CACH,CAAC;AAIX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,YAAY,EAAE,qBAAqB,CAAU,CAAC;AAGnF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,GAAG,sBAAsB;IACzB,WAAW;IACX,UAAU;IACV,aAAa;IACb,WAAW;CACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@ankhorage/contracts",
3
+ "type": "module",
4
+ "version": "0.0.1",
5
+ "description": "Serializable app, action, and theme config contracts for Ankhorage.",
6
+ "main": "./dist/index.js",
7
+ "sideEffects": false,
8
+ "types": "./dist/index.d.ts",
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "default": "./dist/index.js"
16
+ }
17
+ },
18
+ "scripts": {
19
+ "build": "rm -rf dist tsconfig.tsbuildinfo && bun x tsc -p tsconfig.json",
20
+ "lint": "eslint src --max-warnings=0",
21
+ "lint:fix": "eslint src --fix --max-warnings=0",
22
+ "test": "bun test src"
23
+ },
24
+ "devDependencies": {
25
+ "@types/bun": "^1.3.8",
26
+ "@types/node": "^25.2.3",
27
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
28
+ "@typescript-eslint/parser": "^8.0.0",
29
+ "eslint": "^9.0.0",
30
+ "eslint-plugin-simple-import-sort": "^12.1.1",
31
+ "eslint-plugin-unused-imports": "^4.4.1",
32
+ "typescript": "^5.9.3"
33
+ },
34
+ "packageManager": "bun@1.3.9"
35
+ }