@pfm-platform/partners-feature 0.1.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/dist/index.cjs +42 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +39 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/package.json +57 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
var partnersDataAccess = require('@pfm-platform/partners-data-access');
|
|
5
|
+
|
|
6
|
+
// src/hooks/usePartnerConfig.ts
|
|
7
|
+
function usePartnerConfig() {
|
|
8
|
+
const { data: partner } = partnersDataAccess.useCurrentPartner();
|
|
9
|
+
return react.useMemo(() => {
|
|
10
|
+
if (!partner) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
productName: partner.product_name,
|
|
15
|
+
browserTitle: partner.browser_title,
|
|
16
|
+
domain: partner.domain,
|
|
17
|
+
isDemo: partner.demo
|
|
18
|
+
};
|
|
19
|
+
}, [partner]);
|
|
20
|
+
}
|
|
21
|
+
function usePartnerFeatures() {
|
|
22
|
+
const { data: partner } = partnersDataAccess.useCurrentPartner();
|
|
23
|
+
return react.useMemo(() => {
|
|
24
|
+
if (!partner) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const hasAggregation = partner.modules && typeof partner.modules === "object" && "aggregation" in partner.modules;
|
|
28
|
+
const hasMobile = partner.modules && typeof partner.modules === "object" && "mobile" in partner.modules;
|
|
29
|
+
return {
|
|
30
|
+
alertsEnabled: partner.partner_alerts_enabled,
|
|
31
|
+
modules: partner.modules,
|
|
32
|
+
featuredSearches: partner.featured_searches,
|
|
33
|
+
hasAggregation,
|
|
34
|
+
hasMobile
|
|
35
|
+
};
|
|
36
|
+
}, [partner]);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
exports.usePartnerConfig = usePartnerConfig;
|
|
40
|
+
exports.usePartnerFeatures = usePartnerFeatures;
|
|
41
|
+
//# sourceMappingURL=index.cjs.map
|
|
42
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/usePartnerConfig.ts","../src/hooks/usePartnerFeatures.ts"],"names":["useCurrentPartner","useMemo"],"mappings":";;;;;;AAoBO,SAAS,gBAAA,GAAyC;AACvD,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAQ,GAAIA,oCAAA,EAAkB;AAE5C,EAAA,OAAOC,cAAQ,MAAM;AACnB,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO;AAAA,MACL,aAAa,OAAA,CAAQ,YAAA;AAAA,MACrB,cAAc,OAAA,CAAQ,aAAA;AAAA,MACtB,QAAQ,OAAA,CAAQ,MAAA;AAAA,MAChB,QAAQ,OAAA,CAAQ;AAAA,KAClB;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACd;ACbO,SAAS,kBAAA,GAA6C;AAC3D,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAQ,GAAID,oCAAAA,EAAkB;AAE5C,EAAA,OAAOC,cAAQ,MAAM;AACnB,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,MAAM,cAAA,GACJ,QAAQ,OAAA,IACR,OAAO,QAAQ,OAAA,KAAY,QAAA,IAC3B,iBAAiB,OAAA,CAAQ,OAAA;AAE3B,IAAA,MAAM,SAAA,GACJ,QAAQ,OAAA,IACR,OAAO,QAAQ,OAAA,KAAY,QAAA,IAC3B,YAAY,OAAA,CAAQ,OAAA;AAEtB,IAAA,OAAO;AAAA,MACL,eAAe,OAAA,CAAQ,sBAAA;AAAA,MACvB,SAAS,OAAA,CAAQ,OAAA;AAAA,MACjB,kBAAkB,OAAA,CAAQ,iBAAA;AAAA,MAC1B,cAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACd","file":"index.cjs","sourcesContent":["import { useMemo } from 'react';\nimport { useCurrentPartner } from '@pfm-platform/partners-data-access';\n\nexport interface PartnerConfig {\n productName: string;\n browserTitle: string;\n domain: string;\n isDemo: boolean;\n}\n\n/**\n * Extract partner configuration details\n *\n * Business logic:\n * - Provides clean configuration object with core partner settings\n * - Normalizes field names (product_name → productName, browser_title → browserTitle)\n * - Includes demo flag for identifying demo environments\n *\n * @returns Partner configuration with product name, browser title, domain, demo flag\n */\nexport function usePartnerConfig(): PartnerConfig | null {\n const { data: partner } = useCurrentPartner();\n\n return useMemo(() => {\n if (!partner) {\n return null;\n }\n\n return {\n productName: partner.product_name,\n browserTitle: partner.browser_title,\n domain: partner.domain,\n isDemo: partner.demo,\n };\n }, [partner]);\n}\n","import { useMemo } from 'react';\nimport { useCurrentPartner } from '@pfm-platform/partners-data-access';\n\nexport interface PartnerFeatures {\n alertsEnabled: boolean;\n modules: Record<string, unknown>;\n featuredSearches: unknown[];\n hasAggregation: boolean;\n hasMobile: boolean;\n}\n\n/**\n * Extract partner feature flags and module configurations\n *\n * Business logic:\n * - Provides feature availability flags for conditional rendering\n * - Normalizes field names (partner_alerts_enabled → alertsEnabled)\n * - Checks common module availability (aggregation, mobile)\n * - Exposes dynamic modules and featured_searches for custom configuration\n *\n * @returns Partner feature flags and module configurations\n */\nexport function usePartnerFeatures(): PartnerFeatures | null {\n const { data: partner } = useCurrentPartner();\n\n return useMemo(() => {\n if (!partner) {\n return null;\n }\n\n // Check for common module configurations\n const hasAggregation =\n partner.modules &&\n typeof partner.modules === 'object' &&\n 'aggregation' in partner.modules;\n\n const hasMobile =\n partner.modules &&\n typeof partner.modules === 'object' &&\n 'mobile' in partner.modules;\n\n return {\n alertsEnabled: partner.partner_alerts_enabled,\n modules: partner.modules,\n featuredSearches: partner.featured_searches,\n hasAggregation,\n hasMobile,\n };\n }, [partner]);\n}\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
interface PartnerConfig {
|
|
2
|
+
productName: string;
|
|
3
|
+
browserTitle: string;
|
|
4
|
+
domain: string;
|
|
5
|
+
isDemo: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Extract partner configuration details
|
|
9
|
+
*
|
|
10
|
+
* Business logic:
|
|
11
|
+
* - Provides clean configuration object with core partner settings
|
|
12
|
+
* - Normalizes field names (product_name → productName, browser_title → browserTitle)
|
|
13
|
+
* - Includes demo flag for identifying demo environments
|
|
14
|
+
*
|
|
15
|
+
* @returns Partner configuration with product name, browser title, domain, demo flag
|
|
16
|
+
*/
|
|
17
|
+
declare function usePartnerConfig(): PartnerConfig | null;
|
|
18
|
+
|
|
19
|
+
interface PartnerFeatures {
|
|
20
|
+
alertsEnabled: boolean;
|
|
21
|
+
modules: Record<string, unknown>;
|
|
22
|
+
featuredSearches: unknown[];
|
|
23
|
+
hasAggregation: boolean;
|
|
24
|
+
hasMobile: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Extract partner feature flags and module configurations
|
|
28
|
+
*
|
|
29
|
+
* Business logic:
|
|
30
|
+
* - Provides feature availability flags for conditional rendering
|
|
31
|
+
* - Normalizes field names (partner_alerts_enabled → alertsEnabled)
|
|
32
|
+
* - Checks common module availability (aggregation, mobile)
|
|
33
|
+
* - Exposes dynamic modules and featured_searches for custom configuration
|
|
34
|
+
*
|
|
35
|
+
* @returns Partner feature flags and module configurations
|
|
36
|
+
*/
|
|
37
|
+
declare function usePartnerFeatures(): PartnerFeatures | null;
|
|
38
|
+
|
|
39
|
+
export { type PartnerConfig, type PartnerFeatures, usePartnerConfig, usePartnerFeatures };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
interface PartnerConfig {
|
|
2
|
+
productName: string;
|
|
3
|
+
browserTitle: string;
|
|
4
|
+
domain: string;
|
|
5
|
+
isDemo: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Extract partner configuration details
|
|
9
|
+
*
|
|
10
|
+
* Business logic:
|
|
11
|
+
* - Provides clean configuration object with core partner settings
|
|
12
|
+
* - Normalizes field names (product_name → productName, browser_title → browserTitle)
|
|
13
|
+
* - Includes demo flag for identifying demo environments
|
|
14
|
+
*
|
|
15
|
+
* @returns Partner configuration with product name, browser title, domain, demo flag
|
|
16
|
+
*/
|
|
17
|
+
declare function usePartnerConfig(): PartnerConfig | null;
|
|
18
|
+
|
|
19
|
+
interface PartnerFeatures {
|
|
20
|
+
alertsEnabled: boolean;
|
|
21
|
+
modules: Record<string, unknown>;
|
|
22
|
+
featuredSearches: unknown[];
|
|
23
|
+
hasAggregation: boolean;
|
|
24
|
+
hasMobile: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Extract partner feature flags and module configurations
|
|
28
|
+
*
|
|
29
|
+
* Business logic:
|
|
30
|
+
* - Provides feature availability flags for conditional rendering
|
|
31
|
+
* - Normalizes field names (partner_alerts_enabled → alertsEnabled)
|
|
32
|
+
* - Checks common module availability (aggregation, mobile)
|
|
33
|
+
* - Exposes dynamic modules and featured_searches for custom configuration
|
|
34
|
+
*
|
|
35
|
+
* @returns Partner feature flags and module configurations
|
|
36
|
+
*/
|
|
37
|
+
declare function usePartnerFeatures(): PartnerFeatures | null;
|
|
38
|
+
|
|
39
|
+
export { type PartnerConfig, type PartnerFeatures, usePartnerConfig, usePartnerFeatures };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { useCurrentPartner } from '@pfm-platform/partners-data-access';
|
|
3
|
+
|
|
4
|
+
// src/hooks/usePartnerConfig.ts
|
|
5
|
+
function usePartnerConfig() {
|
|
6
|
+
const { data: partner } = useCurrentPartner();
|
|
7
|
+
return useMemo(() => {
|
|
8
|
+
if (!partner) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
productName: partner.product_name,
|
|
13
|
+
browserTitle: partner.browser_title,
|
|
14
|
+
domain: partner.domain,
|
|
15
|
+
isDemo: partner.demo
|
|
16
|
+
};
|
|
17
|
+
}, [partner]);
|
|
18
|
+
}
|
|
19
|
+
function usePartnerFeatures() {
|
|
20
|
+
const { data: partner } = useCurrentPartner();
|
|
21
|
+
return useMemo(() => {
|
|
22
|
+
if (!partner) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const hasAggregation = partner.modules && typeof partner.modules === "object" && "aggregation" in partner.modules;
|
|
26
|
+
const hasMobile = partner.modules && typeof partner.modules === "object" && "mobile" in partner.modules;
|
|
27
|
+
return {
|
|
28
|
+
alertsEnabled: partner.partner_alerts_enabled,
|
|
29
|
+
modules: partner.modules,
|
|
30
|
+
featuredSearches: partner.featured_searches,
|
|
31
|
+
hasAggregation,
|
|
32
|
+
hasMobile
|
|
33
|
+
};
|
|
34
|
+
}, [partner]);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { usePartnerConfig, usePartnerFeatures };
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/usePartnerConfig.ts","../src/hooks/usePartnerFeatures.ts"],"names":["useCurrentPartner","useMemo"],"mappings":";;;;AAoBO,SAAS,gBAAA,GAAyC;AACvD,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAQ,GAAI,iBAAA,EAAkB;AAE5C,EAAA,OAAO,QAAQ,MAAM;AACnB,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO;AAAA,MACL,aAAa,OAAA,CAAQ,YAAA;AAAA,MACrB,cAAc,OAAA,CAAQ,aAAA;AAAA,MACtB,QAAQ,OAAA,CAAQ,MAAA;AAAA,MAChB,QAAQ,OAAA,CAAQ;AAAA,KAClB;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACd;ACbO,SAAS,kBAAA,GAA6C;AAC3D,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAQ,GAAIA,iBAAAA,EAAkB;AAE5C,EAAA,OAAOC,QAAQ,MAAM;AACnB,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,MAAM,cAAA,GACJ,QAAQ,OAAA,IACR,OAAO,QAAQ,OAAA,KAAY,QAAA,IAC3B,iBAAiB,OAAA,CAAQ,OAAA;AAE3B,IAAA,MAAM,SAAA,GACJ,QAAQ,OAAA,IACR,OAAO,QAAQ,OAAA,KAAY,QAAA,IAC3B,YAAY,OAAA,CAAQ,OAAA;AAEtB,IAAA,OAAO;AAAA,MACL,eAAe,OAAA,CAAQ,sBAAA;AAAA,MACvB,SAAS,OAAA,CAAQ,OAAA;AAAA,MACjB,kBAAkB,OAAA,CAAQ,iBAAA;AAAA,MAC1B,cAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACd","file":"index.js","sourcesContent":["import { useMemo } from 'react';\nimport { useCurrentPartner } from '@pfm-platform/partners-data-access';\n\nexport interface PartnerConfig {\n productName: string;\n browserTitle: string;\n domain: string;\n isDemo: boolean;\n}\n\n/**\n * Extract partner configuration details\n *\n * Business logic:\n * - Provides clean configuration object with core partner settings\n * - Normalizes field names (product_name → productName, browser_title → browserTitle)\n * - Includes demo flag for identifying demo environments\n *\n * @returns Partner configuration with product name, browser title, domain, demo flag\n */\nexport function usePartnerConfig(): PartnerConfig | null {\n const { data: partner } = useCurrentPartner();\n\n return useMemo(() => {\n if (!partner) {\n return null;\n }\n\n return {\n productName: partner.product_name,\n browserTitle: partner.browser_title,\n domain: partner.domain,\n isDemo: partner.demo,\n };\n }, [partner]);\n}\n","import { useMemo } from 'react';\nimport { useCurrentPartner } from '@pfm-platform/partners-data-access';\n\nexport interface PartnerFeatures {\n alertsEnabled: boolean;\n modules: Record<string, unknown>;\n featuredSearches: unknown[];\n hasAggregation: boolean;\n hasMobile: boolean;\n}\n\n/**\n * Extract partner feature flags and module configurations\n *\n * Business logic:\n * - Provides feature availability flags for conditional rendering\n * - Normalizes field names (partner_alerts_enabled → alertsEnabled)\n * - Checks common module availability (aggregation, mobile)\n * - Exposes dynamic modules and featured_searches for custom configuration\n *\n * @returns Partner feature flags and module configurations\n */\nexport function usePartnerFeatures(): PartnerFeatures | null {\n const { data: partner } = useCurrentPartner();\n\n return useMemo(() => {\n if (!partner) {\n return null;\n }\n\n // Check for common module configurations\n const hasAggregation =\n partner.modules &&\n typeof partner.modules === 'object' &&\n 'aggregation' in partner.modules;\n\n const hasMobile =\n partner.modules &&\n typeof partner.modules === 'object' &&\n 'mobile' in partner.modules;\n\n return {\n alertsEnabled: partner.partner_alerts_enabled,\n modules: partner.modules,\n featuredSearches: partner.featured_searches,\n hasAggregation,\n hasMobile,\n };\n }, [partner]);\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pfm-platform/partners-feature",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"react": "19.2.0",
|
|
8
|
+
"@pfm-platform/partners-data-access": "0.1.1",
|
|
9
|
+
"@pfm-platform/shared": "0.0.1"
|
|
10
|
+
},
|
|
11
|
+
"devDependencies": {
|
|
12
|
+
"@tanstack/react-query": "5.90.9",
|
|
13
|
+
"@testing-library/react": "^16.3.0",
|
|
14
|
+
"@types/react": "19.2.5",
|
|
15
|
+
"@vitejs/plugin-react": "^5.1.1",
|
|
16
|
+
"@vitest/coverage-v8": "^4.0.9",
|
|
17
|
+
"vitest": "4.0.9"
|
|
18
|
+
},
|
|
19
|
+
"module": "./dist/index.js",
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"import": "./dist/index.js",
|
|
25
|
+
"require": "./dist/index.cjs"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist",
|
|
30
|
+
"README.md"
|
|
31
|
+
],
|
|
32
|
+
"description": "Personal Finance Management - PARTNERS feature layer",
|
|
33
|
+
"keywords": [
|
|
34
|
+
"pfm",
|
|
35
|
+
"finance",
|
|
36
|
+
"partners",
|
|
37
|
+
"feature",
|
|
38
|
+
"react",
|
|
39
|
+
"typescript"
|
|
40
|
+
],
|
|
41
|
+
"author": "Lenny Miller",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "git",
|
|
45
|
+
"url": "https://github.com/lennylmiller/pfm-research",
|
|
46
|
+
"directory": "packages/partners/feature"
|
|
47
|
+
},
|
|
48
|
+
"bugs": "https://github.com/lennylmiller/pfm-research/issues",
|
|
49
|
+
"homepage": "https://github.com/lennylmiller/pfm-research#readme",
|
|
50
|
+
"scripts": {
|
|
51
|
+
"test": "vitest run",
|
|
52
|
+
"test:watch": "vitest",
|
|
53
|
+
"test:ui": "vitest --ui",
|
|
54
|
+
"test:coverage": "vitest run --coverage",
|
|
55
|
+
"build": "tsup src/index.ts --format cjs,esm --dts --clean"
|
|
56
|
+
}
|
|
57
|
+
}
|