feeef 0.12.0 → 0.12.2

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.
@@ -29,10 +29,42 @@ export interface StoreTemplateEntity {
29
29
  policy: TemplateComponentPolicy;
30
30
  parentId: string | null;
31
31
  version: number;
32
+ /** Marketplace enrichment (when `storeId` query is sent). */
33
+ owned?: boolean;
34
+ effectivePrice?: number;
35
+ updateAvailable?: boolean;
36
+ installedReleaseId?: string | null;
37
+ latestRelease?: StoreTemplateReleaseEntity | null;
32
38
  createdAt: any;
33
39
  updatedAt: any | null;
34
40
  deletedAt: any | null;
35
41
  }
42
+ /** Immutable published snapshot (`store_template_releases`). */
43
+ export interface StoreTemplateReleaseEntity {
44
+ id: string;
45
+ storeTemplateId: string;
46
+ version: string;
47
+ versionCode: number;
48
+ changelog: string | null;
49
+ schema?: Record<string, unknown>;
50
+ data?: Record<string, unknown>;
51
+ locales?: Record<string, unknown>;
52
+ publishedAt: any;
53
+ publishedBy?: string | null;
54
+ createdAt?: any;
55
+ updatedAt?: any | null;
56
+ }
57
+ export interface StoreTemplatePurchaseResult {
58
+ license: Record<string, unknown>;
59
+ created: boolean;
60
+ storeTemplate: StoreTemplateEntity;
61
+ }
62
+ export interface StoreTemplateReleaseCreateInput {
63
+ version?: string;
64
+ changelog?: string | null;
65
+ schema?: Record<string, unknown>;
66
+ data?: Record<string, unknown>;
67
+ }
36
68
  export interface StoreTemplateCreateInput {
37
69
  title: string;
38
70
  schema?: Record<string, unknown>;
@@ -39,12 +39,13 @@ export interface OAuthAuthorizeUrlParams {
39
39
  }
40
40
  /**
41
41
  * Parameters for exchanging authorization code to access token.
42
+ * `clientSecret` is omitted for public PKCE clients (`token_endpoint_auth_method: none`).
42
43
  */
43
44
  export interface OAuthExchangeCodeParams {
44
45
  code: string;
45
46
  redirectUri: string;
46
47
  clientId: string;
47
- clientSecret: string;
48
+ clientSecret?: string;
48
49
  codeVerifier?: string;
49
50
  }
50
51
  /**
@@ -64,6 +65,7 @@ export declare class OAuthRepository {
64
65
  static buildAuthorizeUrl(params: OAuthAuthorizeUrlParams): string;
65
66
  /**
66
67
  * Exchanges an authorization code for an access token.
68
+ * Public clients omit `clientSecret` and must send `codeVerifier` (PKCE).
67
69
  */
68
70
  exchangeAuthorizationCode(params: OAuthExchangeCodeParams): Promise<OAuthTokenResponse>;
69
71
  /**
@@ -1,6 +1,6 @@
1
1
  import { AxiosInstance } from 'axios';
2
2
  import { ListResponse, ModelRepository } from './repository.js';
3
- import { StoreTemplateEntity, StoreTemplateCreateInput, StoreTemplateUpdateInput, StoreTemplateLocaleEntity, StoreTemplateLocaleInput, StoreTemplateLocalesBundle } from '../../core/entities/store_template.js';
3
+ import { StoreTemplateEntity, StoreTemplateCreateInput, StoreTemplateUpdateInput, StoreTemplateLocaleEntity, StoreTemplateLocaleInput, StoreTemplateLocalesBundle, StoreTemplateReleaseEntity, StoreTemplatePurchaseResult, StoreTemplateReleaseCreateInput } from '../../core/entities/store_template.js';
4
4
  import { TemplateComponentPolicy } from '../../core/entities/template_component.js';
5
5
  export interface StoreTemplateListOptions {
6
6
  page?: number;
@@ -26,17 +26,35 @@ export declare class StoreTemplatesRepository extends ModelRepository<StoreTempl
26
26
  title?: string;
27
27
  }): Promise<StoreTemplateEntity>;
28
28
  /**
29
- * Set `stores.template_id` to this template (same row in `store_templates`)
30
- * and copy `data` into `store.metadata.templateData`. Does not create a new
31
- * `store_templates` row — use [fork] to duplicate a template into a store.
29
+ * Set `stores.template_id` (+ optional release pin) and copy release/listing
30
+ * `data` into `store.metadata.templateData`. Paid listings require a license.
32
31
  */
33
32
  install(options: {
34
33
  fromId: string;
35
34
  storeId: string;
35
+ releaseId?: string;
36
36
  }): Promise<{
37
37
  storeTemplate: StoreTemplateEntity;
38
38
  store: Record<string, unknown>;
39
+ release?: StoreTemplateReleaseEntity | null;
40
+ license?: Record<string, unknown> | null;
39
41
  }>;
42
+ /** One-time wallet purchase → forever store license. */
43
+ purchase(options: {
44
+ fromId: string;
45
+ storeId: string;
46
+ }): Promise<StoreTemplatePurchaseResult>;
47
+ /** List immutable releases (newest first). */
48
+ listReleases(templateId: string, options?: {
49
+ storeId?: string;
50
+ }): Promise<{
51
+ data: StoreTemplateReleaseEntity[];
52
+ }>;
53
+ getRelease(templateId: string, releaseId: string, options?: {
54
+ storeId?: string;
55
+ }): Promise<StoreTemplateReleaseEntity>;
56
+ /** Author publishes a new immutable release. */
57
+ createRelease(templateId: string, input: StoreTemplateReleaseCreateInput): Promise<StoreTemplateReleaseEntity>;
40
58
  /** GET locales bundle (`defaultLocale`, `locales`, `messages`). */
41
59
  listLocales(templateId: string): Promise<StoreTemplateLocalesBundle>;
42
60
  /** Create one locale row. */
@@ -113,4 +113,29 @@ export declare class StoreRepository extends ModelRepository<StoreEntity, StoreC
113
113
  * @returns A Promise that resolves to the payment result.
114
114
  */
115
115
  payDue(storeId: string, amount: number): Promise<PayDueResult>;
116
+ /**
117
+ * Upserts a draft theme preview (does not change live `metadata.templateData`).
118
+ */
119
+ putTemplatePreview(storeId: string, body: {
120
+ data: unknown;
121
+ schema?: unknown;
122
+ }): Promise<{
123
+ previewUrl: string;
124
+ previewToken: string;
125
+ expiresAt: string;
126
+ }>;
127
+ /**
128
+ * Clears the draft theme preview for a store.
129
+ */
130
+ clearTemplatePreview(storeId: string): Promise<{
131
+ cleared: boolean;
132
+ }>;
133
+ /**
134
+ * Fetches draft TemplateData with a signed preview token (public, token-gated).
135
+ */
136
+ getTemplatePreview(storeId: string, token: string): Promise<{
137
+ data: unknown;
138
+ schema?: unknown;
139
+ updatedAt?: string | null;
140
+ }>;
116
141
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "feeef",
3
3
  "description": "feeef sdk for javascript",
4
- "version": "0.12.0",
4
+ "version": "0.12.2",
5
5
  "main": "build/index.js",
6
6
  "type": "module",
7
7
  "files": [
@@ -21,6 +21,7 @@
21
21
  "compile": "tsup-node && tsc --emitDeclarationOnly --declaration",
22
22
  "build": "npm run compile",
23
23
  "release": "npx release-it",
24
+ "publish:npm": "bash ./scripts/publish.sh",
24
25
  "version": "npm run build",
25
26
  "prepublishOnly": "npm run build",
26
27
  "lint": "eslint . --ext=.ts",
@@ -96,6 +97,10 @@
96
97
  "release": true,
97
98
  "releaseName": "v${version}",
98
99
  "web": true
100
+ },
101
+ "npm": {
102
+ "publish": true,
103
+ "skipChecks": false
99
104
  }
100
105
  },
101
106
  "c8": {