polyapi 0.25.28 → 0.26.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.
Files changed (52) hide show
  1. package/LICENSE +1 -1
  2. package/build/api.d.ts +4 -4
  3. package/build/api.d.ts.map +1 -1
  4. package/build/api.js +3 -1
  5. package/build/api.js.map +1 -1
  6. package/build/cli.js +23 -3
  7. package/build/cli.js.map +1 -1
  8. package/build/commands/function.d.ts.map +1 -1
  9. package/build/commands/function.js +13 -3
  10. package/build/commands/function.js.map +1 -1
  11. package/build/commands/generate/index.d.ts.map +1 -1
  12. package/build/commands/generate/index.js.map +1 -1
  13. package/build/commands/generate/schemaTypes.d.ts.map +1 -1
  14. package/build/commands/generate/schemaTypes.js +8 -8
  15. package/build/commands/generate/schemaTypes.js.map +1 -1
  16. package/build/commands/generate/table.d.ts.map +1 -1
  17. package/build/commands/generate/table.js +11 -3
  18. package/build/commands/generate/table.js.map +1 -1
  19. package/build/commands/generate/types.js.map +1 -1
  20. package/build/commands/model/generate.d.ts.map +1 -1
  21. package/build/commands/model/generate.js.map +1 -1
  22. package/build/commands/model/train.d.ts.map +1 -1
  23. package/build/commands/model/train.js +4 -0
  24. package/build/commands/model/train.js.map +1 -1
  25. package/build/commands/prepare.d.ts.map +1 -1
  26. package/build/commands/prepare.js +9 -4
  27. package/build/commands/prepare.js.map +1 -1
  28. package/build/commands/sync.d.ts.map +1 -1
  29. package/build/commands/sync.js +5 -3
  30. package/build/commands/sync.js.map +1 -1
  31. package/build/deployables.d.ts.map +1 -1
  32. package/build/deployables.js +1 -4
  33. package/build/deployables.js.map +1 -1
  34. package/build/permissions.d.ts +14 -0
  35. package/build/permissions.d.ts.map +1 -0
  36. package/build/permissions.js +107 -0
  37. package/build/permissions.js.map +1 -0
  38. package/build/transpiler.d.ts +12 -2
  39. package/build/transpiler.d.ts.map +1 -1
  40. package/build/transpiler.js +246 -86
  41. package/build/transpiler.js.map +1 -1
  42. package/build/tsconfig.build.tsbuildinfo +1 -1
  43. package/build/types/auth.d.ts +1 -0
  44. package/build/types/auth.d.ts.map +1 -1
  45. package/build/utils.d.ts.map +1 -1
  46. package/build/utils.js +1 -1
  47. package/build/utils.js.map +1 -1
  48. package/build/version.d.ts +1 -1
  49. package/build/version.d.ts.map +1 -1
  50. package/build/version.js +12 -7
  51. package/build/version.js.map +1 -1
  52. package/package.json +1 -1
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ensurePermissions = exports.buildModelTrainingRequirements = exports.makeRequirement = exports.PERMISSION_ACTIONS = exports.clearPermissionsCache = exports.hasPermissionsSync = exports.loadCurrentPermissions = exports.getCurrentPermissions = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const shelljs_1 = __importDefault(require("shelljs"));
10
+ const api_1 = require("./api");
11
+ let cachedPermissions;
12
+ const extractPermissions = (authData) => {
13
+ const source = authData?.permissions;
14
+ if (!source)
15
+ return new Set();
16
+ const enabled = Object.keys(source).filter((k) => source[k] === true);
17
+ return new Set(enabled);
18
+ };
19
+ const getCurrentPermissions = async () => {
20
+ const baseUrl = process.env.POLY_API_BASE_URL || '';
21
+ const apiKey = process.env.POLY_API_KEY || '';
22
+ if (!baseUrl) {
23
+ throw new Error('Missing Poly API Base URL. Please run `poly setup` first.');
24
+ }
25
+ if (!apiKey) {
26
+ throw new Error('Missing Poly API Key. Please run `poly setup` first.');
27
+ }
28
+ const authData = await (0, api_1.getAuthData)(baseUrl, apiKey);
29
+ cachedPermissions = extractPermissions(authData);
30
+ return cachedPermissions;
31
+ };
32
+ exports.getCurrentPermissions = getCurrentPermissions;
33
+ const loadCurrentPermissions = async () => {
34
+ if (cachedPermissions)
35
+ return cachedPermissions;
36
+ cachedPermissions = await (0, exports.getCurrentPermissions)();
37
+ return cachedPermissions;
38
+ };
39
+ exports.loadCurrentPermissions = loadCurrentPermissions;
40
+ const hasPermissionsSync = (requirements) => {
41
+ if (!cachedPermissions)
42
+ return false;
43
+ return requirements.every((r) => cachedPermissions.has(r.permission));
44
+ };
45
+ exports.hasPermissionsSync = hasPermissionsSync;
46
+ const clearPermissionsCache = () => {
47
+ cachedPermissions = null;
48
+ };
49
+ exports.clearPermissionsCache = clearPermissionsCache;
50
+ exports.PERMISSION_ACTIONS = {
51
+ libraryGenerate: 'generate Poly library',
52
+ customDev: 'add Client or Server functions',
53
+ manageApiFunctions: 'add API functions',
54
+ manageSchemas: 'add schemas',
55
+ manageWebhooks: 'add webhooks',
56
+ };
57
+ const makeRequirement = (permission) => ({
58
+ permission,
59
+ action: exports.PERMISSION_ACTIONS[String(permission)] ?? String(permission),
60
+ });
61
+ exports.makeRequirement = makeRequirement;
62
+ const buildModelTrainingRequirements = (spec) => {
63
+ const reqs = [];
64
+ if (spec?.functions?.length)
65
+ reqs.push((0, exports.makeRequirement)('manageApiFunctions'));
66
+ if (spec?.schemas?.length)
67
+ reqs.push((0, exports.makeRequirement)('manageSchemas'));
68
+ if (spec?.webhooks?.length)
69
+ reqs.push((0, exports.makeRequirement)('manageWebhooks'));
70
+ return reqs;
71
+ };
72
+ exports.buildModelTrainingRequirements = buildModelTrainingRequirements;
73
+ const ensurePermissions = async (requirements) => {
74
+ if (!requirements.length)
75
+ return true;
76
+ try {
77
+ const permissions = cachedPermissions ?? (await (0, exports.getCurrentPermissions)());
78
+ cachedPermissions = permissions;
79
+ const missing = requirements.filter(({ permission }) => !permissions.has(permission));
80
+ if (!missing.length)
81
+ return true;
82
+ const actions = Array.from(new Set(missing.map((m) => m.action))).join(' | ');
83
+ const permsList = Array.from(new Set(missing.map((m) => m.permission)));
84
+ const perms = permsList.join(', ');
85
+ const youDontHave = permsList.length === 1
86
+ ? `You don't have permission to ${actions}.`
87
+ : `You don't have permissions to ${actions}.`;
88
+ const missingText = permsList.length === 1
89
+ ? `Missing permission: ${perms}.`
90
+ : `Missing permissions: ${perms}.`;
91
+ shelljs_1.default.echo(chalk_1.default.redBright('ERROR:'), `${youDontHave} ${missingText}`);
92
+ return false;
93
+ }
94
+ catch (error) {
95
+ const status = error?.response?.status;
96
+ const message = error?.response?.data?.message ||
97
+ error?.message ||
98
+ 'Unknown error while validating permissions.';
99
+ shelljs_1.default.echo(chalk_1.default.redBright('ERROR:'), `Unable to validate API key permissions via /auth${status ? ` (HTTP ${status})` : ''}. ${message}`);
100
+ if (axios_1.default.isAxiosError?.(error) && !error.response) {
101
+ shelljs_1.default.echo(chalk_1.default.red('Network error:'), error.message);
102
+ }
103
+ return false;
104
+ }
105
+ };
106
+ exports.ensurePermissions = ensurePermissions;
107
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,kDAA0B;AAC1B,sDAA4B;AAE5B,+BAAoC;AAgBpC,IAAI,iBAA8B,CAAC;AAEnC,MAAM,kBAAkB,GAAG,CAAC,QAAa,EAAe,EAAE;IACxD,MAAM,MAAM,GAAG,QAAQ,EAAE,WAAW,CAAC;IAErC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAE9B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAEtE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEK,MAAM,qBAAqB,GAAG,KAAK,IAA0B,EAAE;IACpE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;IAE9C,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;KAC9E;IAED,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;KACzE;IAED,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAW,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpD,iBAAiB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAChD,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAfW,QAAA,qBAAqB,yBAehC;AAEK,MAAM,sBAAsB,GAAG,KAAK,IAA0B,EAAE;IACrE,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAChD,iBAAiB,GAAG,MAAM,IAAA,6BAAqB,GAAE,CAAC;IAClD,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAJW,QAAA,sBAAsB,0BAIjC;AAEK,MAAM,kBAAkB,GAAG,CAAC,YAAqC,EAAW,EAAE;IACnF,IAAI,CAAC,iBAAiB;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC;AAHW,QAAA,kBAAkB,sBAG7B;AAEK,MAAM,qBAAqB,GAAG,GAAS,EAAE;IAC9C,iBAAiB,GAAG,IAAI,CAAC;AAC3B,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AAGW,QAAA,kBAAkB,GAA2B;IACxD,eAAe,EAAE,uBAAuB;IACxC,SAAS,EAAE,gCAAgC;IAC3C,kBAAkB,EAAE,mBAAmB;IACvC,aAAa,EAAE,aAAa;IAC5B,cAAc,EAAE,cAAc;CAC/B,CAAC;AAEK,MAAM,eAAe,GAAG,CAAC,UAA0B,EAAyB,EAAE,CAAC,CAAC;IACrF,UAAU;IACV,MAAM,EAAE,0BAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC;CACrE,CAAC,CAAC;AAHU,QAAA,eAAe,mBAGzB;AAEI,MAAM,8BAA8B,GAAG,CAAC,IAAS,EAA2B,EAAE;IACnF,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,IAAI,IAAI,EAAE,SAAS,EAAE,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9E,IAAI,IAAI,EAAE,OAAO,EAAE,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,eAAe,CAAC,CAAC,CAAC;IACvE,IAAI,IAAI,EAAE,QAAQ,EAAE,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,gBAAgB,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AANW,QAAA,8BAA8B,kCAMzC;AAEK,MAAM,iBAAiB,GAAG,KAAK,EACpC,YAAqC,EACnB,EAAE;IACpB,IAAI,CAAC,YAAY,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEtC,IAAI;QACF,MAAM,WAAW,GAAG,iBAAiB,IAAI,CAAC,MAAM,IAAA,6BAAqB,GAAE,CAAC,CAAC;QACzE,iBAAiB,GAAG,WAAW,CAAC;QAEhC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CACjC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CACjD,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CACpE,KAAK,CACN,CAAC;QACF,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,WAAW,GACf,SAAS,CAAC,MAAM,KAAK,CAAC;YACpB,CAAC,CAAC,gCAAgC,OAAO,GAAG;YAC5C,CAAC,CAAC,iCAAiC,OAAO,GAAG,CAAC;QAClD,MAAM,WAAW,GACf,SAAS,CAAC,MAAM,KAAK,CAAC;YACpB,CAAC,CAAC,uBAAuB,KAAK,GAAG;YACjC,CAAC,CAAC,wBAAwB,KAAK,GAAG,CAAC;QAEvC,iBAAK,CAAC,IAAI,CAAC,eAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,WAAW,IAAI,WAAW,EAAE,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC;KACd;IAAC,OAAO,KAAU,EAAE;QACnB,MAAM,MAAM,GAAG,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;QACvC,MAAM,OAAO,GACX,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO;YAC9B,KAAK,EAAE,OAAO;YACd,6CAA6C,CAAC;QAEhD,iBAAK,CAAC,IAAI,CACR,eAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EACzB,mDAAmD,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,CACnG,CAAC;QACF,IAAI,eAAK,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAClD,iBAAK,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;SACxD;QACD,OAAO,KAAK,CAAC;KACd;AACH,CAAC,CAAC;AA/CW,QAAA,iBAAiB,qBA+C5B"}
@@ -1,9 +1,19 @@
1
1
  import { DeployableRecord, Deployment } from './deployables';
2
2
  export declare const getTSConfig: () => any;
3
3
  export declare const getTSBaseUrl: (config?: any) => any;
4
- export declare const getDependencies: (code: string, fileName: string, baseUrl: string | undefined, ignoreDependencies: boolean) => Promise<{}[]>;
4
+ type InternalDependencyReference = {
5
+ id: string;
6
+ path: string;
7
+ tenantName?: string;
8
+ environmentName?: string;
9
+ };
10
+ export declare const getDependencies: (code: string, fileName: string, baseUrl: string | undefined, ignoreDependencies: boolean) => Promise<[
11
+ external: undefined | Record<string, string>,
12
+ internal: undefined | Record<string, InternalDependencyReference[] | string[]>
13
+ ]>;
5
14
  export declare const parseDeployComment: (comment: string) => Deployment;
6
15
  export declare const parseDeployable: (filePath: string, baseUrl: string, gitRevision: string) => Promise<[DeployableRecord, string]>;
7
16
  export declare const extractTypesFromAST: (filePath: string, functionName: string) => string[];
8
- export declare const generateTypeSchemas: (filePath: string, ignoredTypeNames?: string[], functionName?: string) => Record<string, any>;
17
+ export declare const generateTypeSchemas: (filePath: string, ignoredTypeNames?: string[], functionName?: string, referencedSchemas?: Record<string, any> | null) => Record<string, any>;
18
+ export {};
9
19
  //# sourceMappingURL=transpiler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transpiler.d.ts","sourceRoot":"","sources":["../src/transpiler.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,gBAAgB,EAIhB,UAAU,EAGX,MAAM,eAAe,CAAC;AAgDvB,eAAO,MAAM,WAAW,WAMvB,CAAC;AAEF,eAAO,MAAM,YAAY,uBACqB,CAAC;AAgB/C,eAAO,MAAM,eAAe,SACpB,MAAM,YACF,MAAM,WACP,MAAM,GAAG,SAAS,sBACP,OAAO,kBAwW5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAAa,MAAM,KAAG,UAmBpD,CAAC;AAgQF,eAAO,MAAM,eAAe,aAChB,MAAM,WACP,MAAM,eACF,MAAM,KAClB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CA4CpC,CAAC;AA6JF,eAAO,MAAM,mBAAmB,aAAc,MAAM,gBAAgB,MAAM,KAAG,MAAM,EAsDlF,CAAC;AAEF,eAAO,MAAM,mBAAmB,aACpB,MAAM,qBACE,MAAM,EAAE,iBACX,MAAM,KACpB,OAAO,MAAM,EAAE,GAAG,CAsCpB,CAAC"}
1
+ {"version":3,"file":"transpiler.d.ts","sourceRoot":"","sources":["../src/transpiler.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,gBAAgB,EAIhB,UAAU,EAGX,MAAM,eAAe,CAAC;AA+CvB,eAAO,MAAM,WAAW,WAMvB,CAAC;AAEF,eAAO,MAAM,YAAY,uBACqB,CAAC;AAgB/C,KAAK,2BAA2B,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,eAAe,SACpB,MAAM,YACF,MAAM,WACP,MAAM,GAAG,SAAS,sBACP,OAAO,KAC1B,QACD;IACE,QAAQ,EAAE,SAAS,GAAG,OAAO,MAAM,EAAE,MAAM,CAAC;IAC5C,QAAQ,EACJ,SAAS,GACT,OAAO,MAAM,EAAE,2BAA2B,EAAE,GAAG,MAAM,EAAE,CAAC;CAC7D,CAohBF,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAAa,MAAM,KAAG,UAmBpD,CAAC;AAyRF,eAAO,MAAM,eAAe,aAChB,MAAM,WACP,MAAM,eACF,MAAM,KAClB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAoDpC,CAAC;AAiLF,eAAO,MAAM,mBAAmB,aACpB,MAAM,gBACF,MAAM,KACnB,MAAM,EAsER,CAAC;AAEF,eAAO,MAAM,mBAAmB,aACpB,MAAM,qBACE,MAAM,EAAE,iBACX,MAAM,sBACF,OAAO,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,KAC5C,OAAO,MAAM,EAAE,GAAG,CA6CpB,CAAC"}