@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 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
- return providers;
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;AAI3B,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;AACvB,CAAC;AAED,MAAM,UAAU,YAAY;IACxB,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACpC,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,YAAoB;IAC5C,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,OAAO,SAAS,EAAE,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;AAC7C,CAAC;AAED,SAAS,iBAAiB;IACtB,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"}
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.7",
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.7",
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://