@nangohq/providers 0.59.7 → 0.59.8
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.d.ts +3 -2
- package/dist/index.js +11 -5
- package/dist/index.js.map +1 -1
- package/dist/localization.d.ts +4 -0
- package/dist/localization.js +52 -0
- package/dist/localization.js.map +1 -0
- package/package.json +2 -2
- package/providers.yaml +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Provider } from '@nangohq/types';
|
|
2
2
|
export declare function updateProviderCache(update: Record<string, Provider>): void;
|
|
3
|
-
export declare function getProviders(): Record<string, Provider> | undefined;
|
|
4
|
-
export declare function getProvider(providerName: string): Provider | null;
|
|
3
|
+
export declare function getProviders(language?: string): Record<string, Provider> | undefined;
|
|
4
|
+
export declare function getProvider(providerName: string, language?: string): Provider | null;
|
|
5
|
+
export declare function loadProvidersYaml(): Record<string, Provider> | undefined;
|
package/dist/index.js
CHANGED
|
@@ -2,23 +2,29 @@ import fs from 'node:fs';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import yaml from 'js-yaml';
|
|
5
|
+
import { clearLocalizationCache, getLocalizedProviders } from './localization.js';
|
|
5
6
|
const __filename = fileURLToPath(import.meta.url);
|
|
6
7
|
const pkgRoot = path.join(__filename, '../../');
|
|
7
8
|
let providers = undefined;
|
|
8
9
|
export function updateProviderCache(update) {
|
|
9
10
|
providers = update;
|
|
11
|
+
// Clear language cache when base providers are updated
|
|
12
|
+
clearLocalizationCache();
|
|
10
13
|
}
|
|
11
|
-
export function getProviders() {
|
|
14
|
+
export function getProviders(language) {
|
|
12
15
|
if (!providers) {
|
|
13
16
|
providers = loadProvidersYaml();
|
|
14
17
|
}
|
|
15
|
-
|
|
18
|
+
if (!providers || !language) {
|
|
19
|
+
return providers;
|
|
20
|
+
}
|
|
21
|
+
return getLocalizedProviders(providers, language);
|
|
16
22
|
}
|
|
17
|
-
export function getProvider(providerName) {
|
|
18
|
-
const providers = getProviders();
|
|
23
|
+
export function getProvider(providerName, language) {
|
|
24
|
+
const providers = getProviders(language);
|
|
19
25
|
return providers?.[providerName] ?? null;
|
|
20
26
|
}
|
|
21
|
-
function loadProvidersYaml() {
|
|
27
|
+
export function loadProvidersYaml() {
|
|
22
28
|
try {
|
|
23
29
|
const providersYamlPath = path.join(pkgRoot, 'providers.yaml');
|
|
24
30
|
const fileEntries = yaml.load(fs.readFileSync(providersYamlPath).toString());
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,IAAI,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAIlF,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAEhD,IAAI,SAAS,GAAyC,SAAS,CAAC;AAEhE,MAAM,UAAU,mBAAmB,CAAC,MAAgC;IAChE,SAAS,GAAG,MAAM,CAAC;IACnB,uDAAuD;IACvD,sBAAsB,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAiB;IAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,qBAAqB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,YAAoB,EAAE,QAAiB;IAC/D,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO,SAAS,EAAE,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC7B,IAAI,CAAC;QACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAA6C,CAAC;QAEzH,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACxD,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAE/B,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;gBAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACjC,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;oBACnD,SAAS;gBACb,CAAC;gBAED,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;gBACtC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAa,CAAC;gBACvD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC;YACtD,CAAC;QACL,CAAC;QAED,OAAO,WAAuC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,OAAO;AACX,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Provider } from '@nangohq/types';
|
|
2
|
+
export declare function clearLocalizationCache(): void;
|
|
3
|
+
export declare function getLocalizedProviders(baseProviders: Record<string, Provider>, language: string): Record<string, Provider>;
|
|
4
|
+
export declare function loadLanguageOverrides(language: string): Record<string, any>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
5
|
+
const pkgRoot = path.join(__filename, '../../');
|
|
6
|
+
let overridesCache = {};
|
|
7
|
+
export function clearLocalizationCache() {
|
|
8
|
+
overridesCache = {};
|
|
9
|
+
}
|
|
10
|
+
export function getLocalizedProviders(baseProviders, language) {
|
|
11
|
+
const languageOverrides = getLanguageOverrides(language);
|
|
12
|
+
return applyLanguageOverrides(baseProviders, languageOverrides);
|
|
13
|
+
}
|
|
14
|
+
function getLanguageOverrides(language) {
|
|
15
|
+
if (overridesCache[language]) {
|
|
16
|
+
return overridesCache[language];
|
|
17
|
+
}
|
|
18
|
+
const overrides = loadLanguageOverrides(language);
|
|
19
|
+
overridesCache[language] = overrides;
|
|
20
|
+
return overrides;
|
|
21
|
+
}
|
|
22
|
+
export function loadLanguageOverrides(language) {
|
|
23
|
+
try {
|
|
24
|
+
const languageFilePath = path.join(pkgRoot, 'i18n', `providers.${language}.json`);
|
|
25
|
+
if (!fs.existsSync(languageFilePath)) {
|
|
26
|
+
return {};
|
|
27
|
+
}
|
|
28
|
+
const fileContent = fs.readFileSync(languageFilePath, 'utf8');
|
|
29
|
+
const overrides = JSON.parse(fileContent);
|
|
30
|
+
return overrides || {};
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
console.error(`Failed to load language overrides for ${language}`, err);
|
|
34
|
+
return {};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function applyLanguageOverrides(baseProviders, overrides) {
|
|
38
|
+
return deepMerge(baseProviders, overrides);
|
|
39
|
+
}
|
|
40
|
+
function deepMerge(target, source) {
|
|
41
|
+
const result = { ...target };
|
|
42
|
+
for (const key in source) {
|
|
43
|
+
if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {
|
|
44
|
+
result[key] = deepMerge(result[key] || {}, source[key]);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
result[key] = source[key];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=localization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localization.js","sourceRoot":"","sources":["../lib/localization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAEhD,IAAI,cAAc,GAAwC,EAAE,CAAC;AAE7D,MAAM,UAAU,sBAAsB;IAClC,cAAc,GAAG,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,aAAuC,EAAE,QAAgB;IAC3F,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACzD,OAAO,sBAAsB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC1C,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAClD,cAAc,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IACrC,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IAClD,IAAI,CAAC;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,QAAQ,OAAO,CAAC,CAAC;QAElF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAwB,CAAC;QAEjE,OAAO,SAAS,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,yCAAyC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;QACxE,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,aAAuC,EAAE,SAA8B;IACnG,OAAO,SAAS,CAAC,aAAa,EAAE,SAAS,CAA6B,CAAC;AAC3E,CAAC;AAED,SAAS,SAAS,CAAC,MAAW,EAAE,MAAW;IACvC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAChF,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nangohq/providers",
|
|
3
|
-
"version": "0.59.
|
|
3
|
+
"version": "0.59.8",
|
|
4
4
|
"description": "Nango's providers.yaml and getters",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"js-yaml": "4.1.0"
|
|
12
12
|
},
|
|
13
13
|
"devDependencies": {
|
|
14
|
-
"@nangohq/types": "0.59.
|
|
14
|
+
"@nangohq/types": "0.59.8",
|
|
15
15
|
"vitest": "3.1.2"
|
|
16
16
|
},
|
|
17
17
|
"files": [
|
package/providers.yaml
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
domain:
|
|
19
19
|
type: string
|
|
20
20
|
title: 1Password SCIM Bridge URL
|
|
21
|
-
description: The domain for your 1Password SCIM Bridge
|
|
21
|
+
description: The domain for your 1Password SCIM Bridge. Note this URL is a service hosted in your infrastructure so needs to be setup already by your IT team. Please see the instructions for more info.
|
|
22
22
|
example: scim.example.com
|
|
23
23
|
pattern: '^[a-zA-Z0-9.-]+$'
|
|
24
24
|
prefix: https://
|