@ankhorage/templates 2.0.0 → 2.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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ankhorage/templates
2
2
 
3
+ ## 2.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8fcac9a: Add canonical Google, Apple, and combined OAuth manifest fixtures, and remove template-owned OAuth provider screen generation so Studio remains the single auth UI/runtime owner.
8
+
9
+ ## 2.1.0
10
+
11
+ ### Minor Changes
12
+
13
+ - cbf1c5a: Emit the canonical `infra.secretStore.provider = "supabase-vault"` selection from one shared Supabase infra preset across every generated first-party category manifest.
14
+
3
15
  ## 2.0.0
4
16
 
5
17
  ### Major Changes
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # TEMPLATES
5
5
 
6
- ![license: MIT](././docs/badges/license.svg) ![npm: v1.9.2](././docs/badges/npm.svg) ![runtime: bun](././docs/badges/runtime.svg) ![typescript: strict](././docs/badges/typescript.svg) ![eslint: checked](././docs/badges/eslint.svg) ![prettier: checked](././docs/badges/prettier.svg) ![build: checked](././docs/badges/build.svg) ![tests: checked](././docs/badges/tests.svg) ![docs: paradox](././docs/badges/docs.svg)
6
+ ![license: MIT](././docs/badges/license.svg) ![npm: v2.1.0](././docs/badges/npm.svg) ![runtime: bun](././docs/badges/runtime.svg) ![typescript: strict](././docs/badges/typescript.svg) ![eslint: checked](././docs/badges/eslint.svg) ![prettier: checked](././docs/badges/prettier.svg) ![build: checked](././docs/badges/build.svg) ![tests: checked](././docs/badges/tests.svg) ![docs: paradox](././docs/badges/docs.svg)
7
7
 
8
8
  Reusable Ankhorage app templates, presets, and manifest generators.
9
9
 
@@ -22,6 +22,8 @@ bunx @ankhorage/templates
22
22
  - [Module relationships](././docs/diagrams/module-relationships.mmd)
23
23
  - [Export graph](././docs/diagrams/export-graph.mmd)
24
24
  - [ankhorage-templates sequence](././docs/diagrams/sequences/ankhorage-templates.mmd)
25
+ - [createCategoryAppManifest sequence](././docs/diagrams/sequences/create-category-app-manifest.mmd)
26
+ - [createOAuthFixtureManifest sequence](././docs/diagrams/sequences/create-oauth-fixture-manifest.mmd)
25
27
  - [createStarterTemplate sequence](././docs/diagrams/sequences/create-starter-template.mmd)
26
28
  - [listStarterTemplatesByCategory sequence](././docs/diagrams/sequences/list-starter-templates-by-category.mmd)
27
29
  - [resolveStarterTemplate sequence](././docs/diagrams/sequences/resolve-starter-template.mmd)
@@ -0,0 +1,23 @@
1
+ import type { AppCategory, AppManifest } from '@ankhorage/contracts';
2
+ import type { AppManifestOverrides } from '../internal/overrides';
3
+ import type { TemplateKind } from '../templates/starter';
4
+ export declare const OAUTH_CALLBACK_ROUTE = "auth/callback";
5
+ export declare const OAUTH_FIXTURE_IDS: readonly ["google", "apple", "google-apple"];
6
+ export type OAuthFixtureId = (typeof OAUTH_FIXTURE_IDS)[number];
7
+ type OAuthConfig = NonNullable<NonNullable<AppManifest['infra']['auth']>['oauth']>;
8
+ export interface OAuthFixtureDefinition {
9
+ readonly id: OAuthFixtureId;
10
+ readonly label: string;
11
+ readonly description: string;
12
+ readonly oauth: OAuthConfig;
13
+ }
14
+ export declare function listOAuthFixtures(): OAuthFixtureDefinition[];
15
+ export declare function resolveOAuthFixture(id: OAuthFixtureId): OAuthFixtureDefinition;
16
+ export declare function createOAuthFixtureManifest(args: {
17
+ category: AppCategory;
18
+ fixture: OAuthFixtureId;
19
+ template?: TemplateKind;
20
+ overrides?: AppManifestOverrides;
21
+ }): AppManifest;
22
+ export {};
23
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/fixtures/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AACpD,eAAO,MAAM,iBAAiB,8CAA+C,CAAC;AAE9E,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,KAAK,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAGnF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AA0DD,wBAAgB,iBAAiB,IAAI,sBAAsB,EAAE,CAE5D;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,cAAc,GAAG,sBAAsB,CAE9E;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC,GAAG,WAAW,CAed"}
@@ -0,0 +1,74 @@
1
+ import { createCategoryAppManifest } from '../generators/create-category-app';
2
+ import { mergeAppManifest } from '../internal/merge';
3
+ export const OAUTH_CALLBACK_ROUTE = 'auth/callback';
4
+ export const OAUTH_FIXTURE_IDS = ['google', 'apple', 'google-apple'];
5
+ function createOAuthConfig(providers) {
6
+ return {
7
+ enabled: true,
8
+ callbackRoute: OAUTH_CALLBACK_ROUTE,
9
+ providers: providers.map((provider) => structuredClone(provider)),
10
+ };
11
+ }
12
+ const GOOGLE_PROVIDER = {
13
+ id: 'google',
14
+ label: 'Continue with Google',
15
+ enabled: true,
16
+ credentialsRef: 'auth/oauth/google',
17
+ scopes: ['openid', 'email', 'profile'],
18
+ queryParams: {
19
+ prompt: 'select_account',
20
+ },
21
+ icon: {
22
+ provider: 'FontAwesome',
23
+ name: 'google',
24
+ },
25
+ };
26
+ const APPLE_PROVIDER = {
27
+ id: 'apple',
28
+ label: 'Continue with Apple',
29
+ enabled: true,
30
+ credentialsRef: 'auth/oauth/apple',
31
+ scopes: ['name', 'email'],
32
+ icon: {
33
+ provider: 'FontAwesome',
34
+ name: 'apple',
35
+ },
36
+ };
37
+ const FIXTURES = {
38
+ google: {
39
+ id: 'google',
40
+ label: 'Google OAuth',
41
+ description: 'Canonical Google authorization-code-with-PKCE fixture.',
42
+ oauth: createOAuthConfig([GOOGLE_PROVIDER]),
43
+ },
44
+ apple: {
45
+ id: 'apple',
46
+ label: 'Apple OAuth',
47
+ description: 'Canonical Apple authorization-code-with-PKCE fixture.',
48
+ oauth: createOAuthConfig([APPLE_PROVIDER]),
49
+ },
50
+ 'google-apple': {
51
+ id: 'google-apple',
52
+ label: 'Google and Apple OAuth',
53
+ description: 'Canonical combined Google and Apple authorization-code-with-PKCE fixture.',
54
+ oauth: createOAuthConfig([GOOGLE_PROVIDER, APPLE_PROVIDER]),
55
+ },
56
+ };
57
+ export function listOAuthFixtures() {
58
+ return OAUTH_FIXTURE_IDS.map((id) => structuredClone(FIXTURES[id]));
59
+ }
60
+ export function resolveOAuthFixture(id) {
61
+ return structuredClone(FIXTURES[id]);
62
+ }
63
+ export function createOAuthFixtureManifest(args) {
64
+ const manifest = createCategoryAppManifest(args.category, args.template ?? 'starter', args.overrides);
65
+ const fixture = resolveOAuthFixture(args.fixture);
66
+ return mergeAppManifest(manifest, {
67
+ infra: {
68
+ auth: {
69
+ oauth: fixture.oauth,
70
+ },
71
+ },
72
+ });
73
+ }
74
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/fixtures/oauth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAU,CAAC;AAc9E,SAAS,iBAAiB,CAAC,SAAyC;IAClE,OAAO;QACL,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,oBAAoB;QACnC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAAwB;IAC3C,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,sBAAsB;IAC7B,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,mBAAmB;IACnC,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;IACtC,WAAW,EAAE;QACX,MAAM,EAAE,gBAAgB;KACzB;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,aAAa;QACvB,IAAI,EAAE,QAAQ;KACf;CACF,CAAC;AAEF,MAAM,cAAc,GAAwB;IAC1C,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,qBAAqB;IAC5B,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,kBAAkB;IAClC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE;QACJ,QAAQ,EAAE,aAAa;QACvB,IAAI,EAAE,OAAO;KACd;CACF,CAAC;AAEF,MAAM,QAAQ,GAAmD;IAC/D,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,wDAAwD;QACrE,KAAK,EAAE,iBAAiB,CAAC,CAAC,eAAe,CAAC,CAAC;KAC5C;IACD,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,uDAAuD;QACpE,KAAK,EAAE,iBAAiB,CAAC,CAAC,cAAc,CAAC,CAAC;KAC3C;IACD,cAAc,EAAE;QACd,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,2EAA2E;QACxF,KAAK,EAAE,iBAAiB,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;KAC5D;CACF,CAAC;AAEF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAkB;IACpD,OAAO,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAK1C;IACC,MAAM,QAAQ,GAAG,yBAAyB,CACxC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,IAAI,SAAS,EAC1B,IAAI,CAAC,SAAS,CACf,CAAC;IACF,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAElD,OAAO,gBAAgB,CAAC,QAAQ,EAAE;QAChC,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type AppCategory, type AppManifest } from '@ankhorage/contracts';
1
+ import type { AppCategory, AppManifest } from '@ankhorage/contracts';
2
2
  import type { AppManifestOverrides } from '../internal/overrides';
3
3
  import { type TemplateKind } from '../templates/starter';
4
4
  export declare function createCategoryAppManifest(category: AppCategory, template?: TemplateKind, overrides?: AppManifestOverrides): AppManifest;
@@ -1 +1 @@
1
- {"version":3,"file":"create-category-app.d.ts","sourceRoot":"","sources":["../../src/generators/create-category-app.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAIjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAQlE,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AA2HhF,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,WAAW,EACrB,QAAQ,GAAE,YAAwB,EAClC,SAAS,CAAC,EAAE,oBAAoB,GAC/B,WAAW,CAGb"}
1
+ {"version":3,"file":"create-category-app.d.ts","sourceRoot":"","sources":["../../src/generators/create-category-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAe,MAAM,sBAAsB,CAAC;AAGlF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AA6DhF,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,WAAW,EACrB,QAAQ,GAAE,YAAwB,EAClC,SAAS,CAAC,EAAE,oBAAoB,GAC/B,WAAW,CAGb"}
@@ -1,8 +1,5 @@
1
- import { resolveAuthFlow, } from '@ankhorage/contracts';
2
1
  import { mergeAppManifest } from '../internal/merge';
3
2
  import { CATEGORY_PRESETS } from '../presets/category-presets';
4
- import { createScreen } from '../templates/shared/screen';
5
- import { createScreenRoot, createSection, createZoraNode, } from '../templates/shared/zora-node-helpers';
6
3
  import { createStarterTemplate } from '../templates/starter';
7
4
  function resolveThemeModeValue(overrides, selector, fallback) {
8
5
  const [firstTheme] = overrides?.themes ?? [];
@@ -41,53 +38,8 @@ const TEMPLATE_FACTORIES = {
41
38
  function createManifestFromTemplate(category, template, overrides) {
42
39
  return TEMPLATE_FACTORIES[template](category, overrides);
43
40
  }
44
- function addProviderEntryScreen(manifest) {
45
- const providers = manifest.infra.auth?.oauth?.providers.filter((provider) => provider.enabled !== false);
46
- if (manifest.infra.auth?.oauth?.enabled !== true ||
47
- providers === undefined ||
48
- providers.length === 0) {
49
- return manifest;
50
- }
51
- const screenId = resolveAuthFlow(manifest.infra.auth.flow).signInRoute;
52
- if (manifest.screens[screenId] !== undefined) {
53
- return manifest;
54
- }
55
- return {
56
- ...manifest,
57
- screens: {
58
- ...manifest.screens,
59
- [screenId]: createProviderEntryScreen(screenId, providers),
60
- },
61
- };
62
- }
63
- function createProviderEntryScreen(screenId, providers) {
64
- return createScreen({
65
- id: screenId,
66
- name: 'Provider entry',
67
- title: 'Provider entry',
68
- description: 'Choose a provider.',
69
- root: createScreenRoot('provider-entry-screen', { width: 'default' }, [
70
- createZoraNode('provider-entry-header', 'SectionHeader', {
71
- eyebrow: 'Account',
72
- title: 'Continue',
73
- description: 'Choose a configured provider.',
74
- }),
75
- createSection('provider-entry-section', { title: 'Providers' }, [
76
- createZoraNode('provider-entry-list', 'OAuthProviderList', {
77
- providers: providers.map((provider) => ({
78
- id: provider.id,
79
- ...(provider.label ? { label: provider.label } : {}),
80
- ...(provider.icon ? { icon: provider.icon } : {}),
81
- })),
82
- layout: 'stack',
83
- fullWidth: true,
84
- }),
85
- ]),
86
- ]),
87
- });
88
- }
89
41
  export function createCategoryAppManifest(category, template = 'starter', overrides) {
90
42
  const manifest = createManifestFromTemplate(category, template, overrides);
91
- return addProviderEntryScreen(mergeAppManifest(manifest, overrides));
43
+ return mergeAppManifest(manifest, overrides);
92
44
  }
93
45
  //# sourceMappingURL=create-category-app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-category-app.js","sourceRoot":"","sources":["../../src/generators/create-category-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-category-app.js","sourceRoot":"","sources":["../../src/generators/create-category-app.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { createOAuthFixtureManifest, listOAuthFixtures, OAUTH_CALLBACK_ROUTE, OAUTH_FIXTURE_IDS, type OAuthFixtureDefinition, type OAuthFixtureId, resolveOAuthFixture, } from './fixtures/oauth';
1
2
  export { createCategoryAppManifest } from './generators/create-category-app';
2
3
  export { CATEGORY_PRESETS, type CategoryPreset } from './presets/category-presets';
3
4
  export { type CategoryStarterTemplateDefinition, createStarterTemplate, listStarterTemplates, listStarterTemplatesByCategory, listStarterTemplateSummaries, resolveStarterTemplate, type StarterTemplateFactory, type StarterTemplateId, type StarterTemplateOptions, type StarterTemplateSelection, type StarterTemplateSummary, TEMPLATE_KINDS, type TemplateKind, type TemplateSeed, } from './templates/starter';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EACL,KAAK,iCAAiC,EACtC,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EACL,KAAK,iCAAiC,EACtC,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export { createOAuthFixtureManifest, listOAuthFixtures, OAUTH_CALLBACK_ROUTE, OAUTH_FIXTURE_IDS, resolveOAuthFixture, } from './fixtures/oauth';
1
2
  export { createCategoryAppManifest } from './generators/create-category-app';
2
3
  export { CATEGORY_PRESETS } from './presets/category-presets';
3
4
  export { createStarterTemplate, listStarterTemplates, listStarterTemplatesByCategory, listStarterTemplateSummaries, resolveStarterTemplate, TEMPLATE_KINDS, } from './templates/starter';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAuB,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAEL,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EAMtB,cAAc,GAGf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,GAIf,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EAGjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAuB,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAEL,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EAMtB,cAAc,GAGf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,GAIf,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/internal/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAqB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE/F,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAChD,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,eAAO,MAAM,UAAU,EAAE,aAiCxB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,UAAU,CAKjD,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/internal/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAqB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE/F,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAChD,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,eAAO,MAAM,UAAU,EAAE,aAoCxB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,UAAU,CAKjD,CAAC"}
@@ -11,6 +11,9 @@ export const BASE_INFRA = {
11
11
  provider: 'auto',
12
12
  buckets: ['media'],
13
13
  },
14
+ secretStore: {
15
+ provider: 'supabase-vault',
16
+ },
14
17
  deployment: {
15
18
  target: 'minikube',
16
19
  monitoring: false,
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/internal/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,iBAAiB,EAAsB,MAAM,sBAAsB,CAAC;AAE/F,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAC1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAE5C,MAAM,CAAC,MAAM,UAAU,GAAkB;IACvC,QAAQ,EAAE;QACR,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,KAAK;KACZ;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,CAAC,OAAO,CAAC;KACnB;IACD,UAAU,EAAE;QACV,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,KAAK;KAClB;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,EAAE,GAAG,iBAAiB,EAAE;QAC9B,MAAM,EAAE;YACN,WAAW,EAAE,CAAC,OAAO,CAAC;SACvB;QACD,MAAM,EAAE;YACN,cAAc,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;YACrC,cAAc,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;YACzC,YAAY,EAAE,YAAY;SAC3B;QACD,OAAO,EAAE;YACP,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;SAC3C;KACF;IACD,UAAU,EAAE;QACV,GAAG,EAAE,KAAK;KACX;IACD,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAA4B;IACpD,YAAY,EAAE;QACZ,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,CAAC,IAAI,CAAC;KAChB;CACF,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/internal/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,iBAAiB,EAAsB,MAAM,sBAAsB,CAAC;AAE/F,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAC1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAE5C,MAAM,CAAC,MAAM,UAAU,GAAkB;IACvC,QAAQ,EAAE;QACR,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,KAAK;KACZ;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,CAAC,OAAO,CAAC;KACnB;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,gBAAgB;KAC3B;IACD,UAAU,EAAE;QACV,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,KAAK;KAClB;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,EAAE,GAAG,iBAAiB,EAAE;QAC9B,MAAM,EAAE;YACN,WAAW,EAAE,CAAC,OAAO,CAAC;SACvB;QACD,MAAM,EAAE;YACN,cAAc,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;YACrC,cAAc,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;YACzC,YAAY,EAAE,YAAY;SAC3B;QACD,OAAO,EAAE;YACP,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;SAC3C;KACF;IACD,UAAU,EAAE;QACV,GAAG,EAAE,KAAK;KACX;IACD,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAA4B;IACpD,YAAY,EAAE;QACZ,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,CAAC,IAAI,CAAC;KAChB;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/templates",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "description": "Reusable Ankhorage app templates, presets, and manifest generators.",
5
5
  "homepage": "https://github.com/ankhorage/templates#readme",
6
6
  "bugs": {
@@ -22,7 +22,10 @@
22
22
  "manifest",
23
23
  "app-generator",
24
24
  "react-native",
25
- "expo"
25
+ "expo",
26
+ "supabase",
27
+ "vault",
28
+ "secret-store"
26
29
  ],
27
30
  "sideEffects": false,
28
31
  "files": [
@@ -59,7 +62,7 @@
59
62
  "build": "bun x tsc -p tsconfig.json",
60
63
  "changeset": "changeset",
61
64
  "changeset:status": "changeset status --since=origin/main",
62
- "docs": "bunx @ankhorage/paradox@0.1.16",
65
+ "docs": "bunx @ankhorage/paradox@0.1.16 && ankhorage-prettier --write docs README.md",
63
66
  "knip": "ankhorage-knip",
64
67
  "lint": "ankhorage-eslint . --max-warnings=0",
65
68
  "lint:fix": "ankhorage-eslint . --max-warnings=0 --fix",
@@ -71,7 +74,7 @@
71
74
  "version-packages": "changeset version"
72
75
  },
73
76
  "dependencies": {
74
- "@ankhorage/contracts": "^2.0.0",
77
+ "@ankhorage/contracts": "^3.0.0",
75
78
  "@ankhorage/zora": "^2.8.0"
76
79
  },
77
80
  "devDependencies": {