@astro-api/n8n-nodes-astrology 0.7.0 → 0.8.0

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 (119) hide show
  1. package/dist/nodes/Astrology/Astrology.node.js +34 -0
  2. package/dist/nodes/Astrology/handlers/analysis.handler.d.ts +10 -0
  3. package/dist/nodes/Astrology/handlers/analysis.handler.js +137 -0
  4. package/dist/nodes/Astrology/handlers/astrocartography.handler.d.ts +10 -0
  5. package/dist/nodes/Astrology/handlers/astrocartography.handler.js +172 -0
  6. package/dist/nodes/Astrology/handlers/charts.handler.js +18 -93
  7. package/dist/nodes/Astrology/handlers/chinese.handler.d.ts +10 -0
  8. package/dist/nodes/Astrology/handlers/chinese.handler.js +117 -0
  9. package/dist/nodes/Astrology/handlers/data.handler.js +2 -4
  10. package/dist/nodes/Astrology/handlers/eclipses.handler.d.ts +10 -0
  11. package/dist/nodes/Astrology/handlers/eclipses.handler.js +96 -0
  12. package/dist/nodes/Astrology/handlers/enhanced.handler.d.ts +10 -0
  13. package/dist/nodes/Astrology/handlers/enhanced.handler.js +75 -0
  14. package/dist/nodes/Astrology/handlers/fengshui.handler.d.ts +10 -0
  15. package/dist/nodes/Astrology/handlers/fengshui.handler.js +63 -0
  16. package/dist/nodes/Astrology/handlers/fixedStars.handler.d.ts +10 -0
  17. package/dist/nodes/Astrology/handlers/fixedStars.handler.js +83 -0
  18. package/dist/nodes/Astrology/handlers/glossary.handler.d.ts +10 -0
  19. package/dist/nodes/Astrology/handlers/glossary.handler.js +91 -0
  20. package/dist/nodes/Astrology/handlers/horary.handler.d.ts +10 -0
  21. package/dist/nodes/Astrology/handlers/horary.handler.js +108 -0
  22. package/dist/nodes/Astrology/handlers/humanDesign.handler.js +6 -33
  23. package/dist/nodes/Astrology/handlers/index.d.ts +17 -0
  24. package/dist/nodes/Astrology/handlers/index.js +35 -1
  25. package/dist/nodes/Astrology/handlers/insights.handler.d.ts +10 -0
  26. package/dist/nodes/Astrology/handlers/insights.handler.js +214 -0
  27. package/dist/nodes/Astrology/handlers/kabbalah.handler.d.ts +10 -0
  28. package/dist/nodes/Astrology/handlers/kabbalah.handler.js +89 -0
  29. package/dist/nodes/Astrology/handlers/lunar.handler.d.ts +10 -0
  30. package/dist/nodes/Astrology/handlers/lunar.handler.js +49 -0
  31. package/dist/nodes/Astrology/handlers/numerology.handler.js +4 -18
  32. package/dist/nodes/Astrology/handlers/pdf.handler.d.ts +10 -0
  33. package/dist/nodes/Astrology/handlers/pdf.handler.js +144 -0
  34. package/dist/nodes/Astrology/handlers/render.handler.d.ts +10 -0
  35. package/dist/nodes/Astrology/handlers/render.handler.js +85 -0
  36. package/dist/nodes/Astrology/handlers/tarot.handler.js +9 -39
  37. package/dist/nodes/Astrology/handlers/traditional.handler.d.ts +10 -0
  38. package/dist/nodes/Astrology/handlers/traditional.handler.js +99 -0
  39. package/dist/nodes/Astrology/handlers/vedic.handler.d.ts +10 -0
  40. package/dist/nodes/Astrology/handlers/vedic.handler.js +185 -0
  41. package/dist/nodes/Astrology/handlers/ziwei.handler.d.ts +10 -0
  42. package/dist/nodes/Astrology/handlers/ziwei.handler.js +39 -0
  43. package/dist/nodes/Astrology/interfaces/types.d.ts +165 -1
  44. package/dist/nodes/Astrology/operations/analysis.operation.d.ts +5 -0
  45. package/dist/nodes/Astrology/operations/analysis.operation.js +229 -0
  46. package/dist/nodes/Astrology/operations/astrocartography.operation.d.ts +5 -0
  47. package/dist/nodes/Astrology/operations/astrocartography.operation.js +163 -0
  48. package/dist/nodes/Astrology/operations/charts.operation.js +1 -16
  49. package/dist/nodes/Astrology/operations/chinese.operation.d.ts +5 -0
  50. package/dist/nodes/Astrology/operations/chinese.operation.js +115 -0
  51. package/dist/nodes/Astrology/operations/data.operation.d.ts +4 -0
  52. package/dist/nodes/Astrology/operations/data.operation.js +1 -19
  53. package/dist/nodes/Astrology/operations/eclipses.operation.d.ts +5 -0
  54. package/dist/nodes/Astrology/operations/eclipses.operation.js +184 -0
  55. package/dist/nodes/Astrology/operations/enhanced.operation.d.ts +5 -0
  56. package/dist/nodes/Astrology/operations/enhanced.operation.js +126 -0
  57. package/dist/nodes/Astrology/operations/fengshui.operation.d.ts +5 -0
  58. package/dist/nodes/Astrology/operations/fengshui.operation.js +68 -0
  59. package/dist/nodes/Astrology/operations/fixedStars.operation.d.ts +5 -0
  60. package/dist/nodes/Astrology/operations/fixedStars.operation.js +80 -0
  61. package/dist/nodes/Astrology/operations/glossary.operation.d.ts +5 -0
  62. package/dist/nodes/Astrology/operations/glossary.operation.js +141 -0
  63. package/dist/nodes/Astrology/operations/horary.operation.d.ts +5 -0
  64. package/dist/nodes/Astrology/operations/horary.operation.js +96 -0
  65. package/dist/nodes/Astrology/operations/humanDesign.operation.js +2 -20
  66. package/dist/nodes/Astrology/operations/index.d.ts +17 -0
  67. package/dist/nodes/Astrology/operations/index.js +35 -1
  68. package/dist/nodes/Astrology/operations/insights.operation.d.ts +5 -0
  69. package/dist/nodes/Astrology/operations/insights.operation.js +325 -0
  70. package/dist/nodes/Astrology/operations/kabbalah.operation.d.ts +5 -0
  71. package/dist/nodes/Astrology/operations/kabbalah.operation.js +95 -0
  72. package/dist/nodes/Astrology/operations/lunar.operation.d.ts +5 -0
  73. package/dist/nodes/Astrology/operations/lunar.operation.js +87 -0
  74. package/dist/nodes/Astrology/operations/numerology.operation.js +1 -16
  75. package/dist/nodes/Astrology/operations/pdf.operation.d.ts +5 -0
  76. package/dist/nodes/Astrology/operations/pdf.operation.js +275 -0
  77. package/dist/nodes/Astrology/operations/render.operation.d.ts +5 -0
  78. package/dist/nodes/Astrology/operations/render.operation.js +67 -0
  79. package/dist/nodes/Astrology/operations/resource.options.js +85 -0
  80. package/dist/nodes/Astrology/operations/tarot.operation.js +2 -20
  81. package/dist/nodes/Astrology/operations/traditional.operation.d.ts +5 -0
  82. package/dist/nodes/Astrology/operations/traditional.operation.js +211 -0
  83. package/dist/nodes/Astrology/operations/vedic.operation.d.ts +5 -0
  84. package/dist/nodes/Astrology/operations/vedic.operation.js +209 -0
  85. package/dist/nodes/Astrology/operations/ziwei.operation.d.ts +5 -0
  86. package/dist/nodes/Astrology/operations/ziwei.operation.js +46 -0
  87. package/dist/nodes/Astrology/shared/astrocartography.fields.d.ts +50 -0
  88. package/dist/nodes/Astrology/shared/astrocartography.fields.js +315 -0
  89. package/dist/nodes/Astrology/shared/chinese.fields.d.ts +50 -0
  90. package/dist/nodes/Astrology/shared/chinese.fields.js +294 -0
  91. package/dist/nodes/Astrology/shared/dateTimeLocation.fields.d.ts +24 -0
  92. package/dist/nodes/Astrology/shared/dateTimeLocation.fields.js +251 -0
  93. package/dist/nodes/Astrology/shared/eclipses.fields.d.ts +21 -0
  94. package/dist/nodes/Astrology/shared/eclipses.fields.js +197 -0
  95. package/dist/nodes/Astrology/shared/fengshui.fields.d.ts +25 -0
  96. package/dist/nodes/Astrology/shared/fengshui.fields.js +134 -0
  97. package/dist/nodes/Astrology/shared/fixedStars.fields.d.ts +17 -0
  98. package/dist/nodes/Astrology/shared/fixedStars.fields.js +110 -0
  99. package/dist/nodes/Astrology/shared/glossary.fields.d.ts +17 -0
  100. package/dist/nodes/Astrology/shared/glossary.fields.js +123 -0
  101. package/dist/nodes/Astrology/shared/helpers.d.ts +49 -1
  102. package/dist/nodes/Astrology/shared/helpers.js +136 -0
  103. package/dist/nodes/Astrology/shared/horary.fields.d.ts +21 -0
  104. package/dist/nodes/Astrology/shared/horary.fields.js +231 -0
  105. package/dist/nodes/Astrology/shared/index.d.ts +15 -1
  106. package/dist/nodes/Astrology/shared/index.js +102 -1
  107. package/dist/nodes/Astrology/shared/insights.fields.d.ts +50 -0
  108. package/dist/nodes/Astrology/shared/insights.fields.js +280 -0
  109. package/dist/nodes/Astrology/shared/kabbalah.fields.d.ts +43 -0
  110. package/dist/nodes/Astrology/shared/kabbalah.fields.js +218 -0
  111. package/dist/nodes/Astrology/shared/pdf.fields.d.ts +21 -0
  112. package/dist/nodes/Astrology/shared/pdf.fields.js +230 -0
  113. package/dist/nodes/Astrology/shared/render.fields.d.ts +22 -0
  114. package/dist/nodes/Astrology/shared/render.fields.js +183 -0
  115. package/dist/nodes/Astrology/shared/simplify.fields.d.ts +10 -0
  116. package/dist/nodes/Astrology/shared/simplify.fields.js +31 -0
  117. package/dist/nodes/Astrology/shared/vedic.fields.d.ts +36 -0
  118. package/dist/nodes/Astrology/shared/vedic.fields.js +305 -0
  119. package/package.json +1 -1
@@ -22,6 +22,23 @@ const resourceHandlers = {
22
22
  humanDesign: handlers_1.handleHumanDesignResource,
23
23
  numerology: handlers_1.handleNumerologyResource,
24
24
  tarot: handlers_1.handleTarotResource,
25
+ lunar: handlers_1.handleLunarResource,
26
+ vedic: handlers_1.handleVedicResource,
27
+ analysis: handlers_1.handleAnalysisResource,
28
+ render: handlers_1.handleRenderResource,
29
+ insights: handlers_1.handleInsightsResource,
30
+ traditional: handlers_1.handleTraditionalResource,
31
+ astrocartography: handlers_1.handleAstrocartographyResource,
32
+ chinese: handlers_1.handleChineseResource,
33
+ kabbalah: handlers_1.handleKabbalahResource,
34
+ glossary: handlers_1.handleGlossaryResource,
35
+ horary: handlers_1.handleHoraryResource,
36
+ fengshui: handlers_1.handleFengshuiResource,
37
+ fixedStars: handlers_1.handleFixedStarsResource,
38
+ enhanced: handlers_1.handleEnhancedResource,
39
+ pdf: handlers_1.handlePdfResource,
40
+ eclipses: handlers_1.handleEclipsesResource,
41
+ ziwei: handlers_1.handleZiweiResource,
25
42
  };
26
43
  class Astrology {
27
44
  constructor() {
@@ -53,6 +70,23 @@ class Astrology {
53
70
  ...operations_1.humanDesignOperations,
54
71
  ...operations_1.numerologyOperations,
55
72
  ...operations_1.tarotOperations,
73
+ ...operations_1.lunarOperations,
74
+ ...operations_1.vedicOperations,
75
+ ...operations_1.analysisOperations,
76
+ ...operations_1.renderOperations,
77
+ ...operations_1.insightsOperations,
78
+ ...operations_1.traditionalOperations,
79
+ ...operations_1.astrocartographyOperations,
80
+ ...operations_1.chineseOperations,
81
+ ...operations_1.kabbalahOperations,
82
+ ...operations_1.glossaryOperations,
83
+ ...operations_1.horaryOperations,
84
+ ...operations_1.fengshuiOperations,
85
+ ...operations_1.fixedStarsOperations,
86
+ ...operations_1.enhancedOperations,
87
+ ...operations_1.pdfOperations,
88
+ ...operations_1.eclipsesOperations,
89
+ ...operations_1.ziweiOperations,
56
90
  ],
57
91
  };
58
92
  }
@@ -0,0 +1,10 @@
1
+ import type { IDataObject } from "n8n-workflow";
2
+ import type { IHandlerContext } from "../interfaces/types";
3
+ /**
4
+ * Handles all analysis resource operations
5
+ *
6
+ * @param context - Handler context with execution functions and credentials
7
+ * @param operation - The operation to execute
8
+ * @returns API response data
9
+ */
10
+ export declare function handleAnalysisResource(context: IHandlerContext, operation: string): Promise<IDataObject>;
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleAnalysisResource = handleAnalysisResource;
4
+ const helpers_1 = require("../shared/helpers");
5
+ /**
6
+ * Endpoint mapping for analysis operations
7
+ */
8
+ const ANALYSIS_ENDPOINTS = {
9
+ natalReport: "/api/v3/analysis/natal-report",
10
+ synastryReport: "/api/v3/analysis/synastry-report",
11
+ transitReport: "/api/v3/analysis/transit-report",
12
+ compositeReport: "/api/v3/analysis/composite-report",
13
+ solarReturnReport: "/api/v3/analysis/solar-return-report",
14
+ lunarReturnReport: "/api/v3/analysis/lunar-return-report",
15
+ progressionReport: "/api/v3/analysis/progression-report",
16
+ directionReport: "/api/v3/analysis/direction-report",
17
+ natalTransitReport: "/api/v3/analysis/natal-transit-report",
18
+ solarReturnTransitReport: "/api/v3/analysis/solar-return-transit-report",
19
+ lunarReturnTransitReport: "/api/v3/analysis/lunar-return-transit-report",
20
+ lunarAnalysis: "/api/v3/analysis/lunar-analysis",
21
+ compatibility: "/api/v3/analysis/compatibility",
22
+ compatibilityScore: "/api/v3/analysis/compatibility-score",
23
+ relationship: "/api/v3/analysis/relationship",
24
+ relationshipScore: "/api/v3/analysis/relationship-score",
25
+ career: "/api/v3/analysis/career",
26
+ vocational: "/api/v3/analysis/vocational",
27
+ health: "/api/v3/analysis/health",
28
+ psychological: "/api/v3/analysis/psychological",
29
+ spiritual: "/api/v3/analysis/spiritual",
30
+ karmic: "/api/v3/analysis/karmic",
31
+ predictive: "/api/v3/analysis/predictive",
32
+ relocation: "/api/v3/analysis/relocation",
33
+ };
34
+ /**
35
+ * Operations that require two subjects
36
+ */
37
+ const TWO_SUBJECT_OPERATIONS = [
38
+ "synastryReport",
39
+ "compositeReport",
40
+ "compatibility",
41
+ "compatibilityScore",
42
+ "relationship",
43
+ "relationshipScore",
44
+ ];
45
+ /**
46
+ * Operations that require transit time
47
+ */
48
+ const TRANSIT_OPERATIONS = [
49
+ "transitReport",
50
+ "natalTransitReport",
51
+ "solarReturnTransitReport",
52
+ "lunarReturnTransitReport",
53
+ ];
54
+ /**
55
+ * Builds report options from node parameters
56
+ */
57
+ function buildReportOptions(context) {
58
+ const { executeFunctions, itemIndex } = context;
59
+ const reportOptions = {};
60
+ // Tradition (Western/Vedic)
61
+ const tradition = executeFunctions.getNodeParameter("tradition", itemIndex, "western");
62
+ if (tradition) {
63
+ reportOptions.tradition = tradition;
64
+ }
65
+ // Language
66
+ const language = executeFunctions.getNodeParameter("language", itemIndex, "en");
67
+ if (language) {
68
+ reportOptions.language = language;
69
+ }
70
+ return reportOptions;
71
+ }
72
+ /**
73
+ * Handles all analysis resource operations
74
+ *
75
+ * @param context - Handler context with execution functions and credentials
76
+ * @param operation - The operation to execute
77
+ * @returns API response data
78
+ */
79
+ async function handleAnalysisResource(context, operation) {
80
+ const { executeFunctions, itemIndex, baseUrl, apiKey } = context;
81
+ const op = operation;
82
+ const birthData = (0, helpers_1.buildBirthData)(executeFunctions, itemIndex);
83
+ const reportOptions = buildReportOptions(context);
84
+ const includeAspectPatterns = executeFunctions.getNodeParameter("includeAspectPatterns", itemIndex, false);
85
+ const endpoint = ANALYSIS_ENDPOINTS[op] || ANALYSIS_ENDPOINTS.natalReport;
86
+ let body;
87
+ // Two-subject operations
88
+ if (TWO_SUBJECT_OPERATIONS.includes(op)) {
89
+ const secondBirthData = (0, helpers_1.buildSecondSubjectBirthData)(executeFunctions, itemIndex);
90
+ body = {
91
+ subject1: {
92
+ birth_data: birthData,
93
+ },
94
+ subject2: {
95
+ birth_data: secondBirthData,
96
+ },
97
+ report_options: reportOptions,
98
+ include_aspect_patterns: includeAspectPatterns,
99
+ };
100
+ }
101
+ // Transit operations
102
+ else if (TRANSIT_OPERATIONS.includes(op)) {
103
+ const transitTime = (0, helpers_1.buildTransitTime)(executeFunctions, itemIndex);
104
+ // Check if date range is provided
105
+ let startDate;
106
+ let endDate;
107
+ try {
108
+ startDate = executeFunctions.getNodeParameter("startDate", itemIndex, "");
109
+ endDate = executeFunctions.getNodeParameter("endDate", itemIndex, "");
110
+ }
111
+ catch {
112
+ // Date range fields may not be available for all transit operations
113
+ }
114
+ body = {
115
+ ...(0, helpers_1.createSubjectRequest)(birthData),
116
+ transit_time: {
117
+ datetime: transitTime,
118
+ },
119
+ report_options: reportOptions,
120
+ include_aspect_patterns: includeAspectPatterns,
121
+ };
122
+ if (startDate && endDate) {
123
+ body.start_date = startDate;
124
+ body.end_date = endDate;
125
+ }
126
+ }
127
+ // Single subject operations
128
+ else {
129
+ body = {
130
+ ...(0, helpers_1.createSubjectRequest)(birthData),
131
+ report_options: reportOptions,
132
+ include_aspect_patterns: includeAspectPatterns,
133
+ };
134
+ }
135
+ const responseData = await (0, helpers_1.makeApiRequest)(executeFunctions, "POST", baseUrl, endpoint, apiKey, body);
136
+ return (0, helpers_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
137
+ }
@@ -0,0 +1,10 @@
1
+ import type { IDataObject } from "n8n-workflow";
2
+ import type { IHandlerContext } from "../interfaces/types";
3
+ /**
4
+ * Handles all astrocartography resource operations
5
+ *
6
+ * @param context - Handler context with execution functions and credentials
7
+ * @param operation - The operation to execute
8
+ * @returns API response data
9
+ */
10
+ export declare function handleAstrocartographyResource(context: IHandlerContext, operation: string): Promise<IDataObject>;
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleAstrocartographyResource = handleAstrocartographyResource;
4
+ const helpers_1 = require("../shared/helpers");
5
+ /**
6
+ * Endpoint mapping for astrocartography operations
7
+ */
8
+ const ASTROCARTOGRAPHY_ENDPOINTS = {
9
+ supportedFeatures: "/api/v3/astrocartography/supported-features",
10
+ lineMeanings: "/api/v3/astrocartography/line-meanings",
11
+ map: "/api/v3/astrocartography/map",
12
+ render: "/api/v3/astrocartography/render",
13
+ lines: "/api/v3/astrocartography/lines",
14
+ locationAnalysis: "/api/v3/astrocartography/location-analysis",
15
+ searchLocations: "/api/v3/astrocartography/search-locations",
16
+ compareLocations: "/api/v3/astrocartography/compare-locations",
17
+ relocationChart: "/api/v3/astrocartography/relocation-chart",
18
+ powerZones: "/api/v3/astrocartography/power-zones",
19
+ paranMap: "/api/v3/astrocartography/paran-map",
20
+ astrodynes: "/api/v3/astrocartography/astrodynes",
21
+ astrodynesCompare: "/api/v3/astrocartography/astrodynes/compare",
22
+ };
23
+ /**
24
+ * GET operations (no body required)
25
+ */
26
+ const GET_OPERATIONS = [
27
+ "supportedFeatures",
28
+ "lineMeanings",
29
+ ];
30
+ /**
31
+ * Operations that use planets selection
32
+ */
33
+ const PLANETS_OPERATIONS = [
34
+ "map",
35
+ "render",
36
+ "lines",
37
+ "paranMap",
38
+ ];
39
+ /**
40
+ * Operations that use line types
41
+ */
42
+ const LINE_TYPES_OPERATIONS = [
43
+ "map",
44
+ "render",
45
+ "lines",
46
+ ];
47
+ /**
48
+ * Operations that use target location
49
+ */
50
+ const TARGET_LOCATION_OPERATIONS = [
51
+ "locationAnalysis",
52
+ "relocationChart",
53
+ "astrodynes",
54
+ ];
55
+ /**
56
+ * Operations that use map visual options
57
+ */
58
+ const MAP_VISUAL_OPERATIONS = [
59
+ "map",
60
+ "render",
61
+ "paranMap",
62
+ ];
63
+ /**
64
+ * Builds map options from node parameters
65
+ */
66
+ function buildMapOptions(context, op) {
67
+ const { executeFunctions, itemIndex } = context;
68
+ const mapOptions = {};
69
+ if (PLANETS_OPERATIONS.includes(op)) {
70
+ const planets = executeFunctions.getNodeParameter("acPlanets", itemIndex, [
71
+ "Sun",
72
+ "Moon",
73
+ "Venus",
74
+ "Mars",
75
+ "Jupiter",
76
+ ]);
77
+ mapOptions.planets = planets;
78
+ }
79
+ if (LINE_TYPES_OPERATIONS.includes(op)) {
80
+ const lineTypes = executeFunctions.getNodeParameter("lineTypes", itemIndex, ["AC", "MC"]);
81
+ mapOptions.line_types = lineTypes;
82
+ }
83
+ if (op === "lines") {
84
+ const coordinatePrecision = executeFunctions.getNodeParameter("coordinatePrecision", itemIndex, 4);
85
+ mapOptions.coordinate_precision = coordinatePrecision;
86
+ }
87
+ return mapOptions;
88
+ }
89
+ /**
90
+ * Builds visual options from node parameters
91
+ */
92
+ function buildVisualOptions(context) {
93
+ const { executeFunctions, itemIndex } = context;
94
+ const theme = executeFunctions.getNodeParameter("mapTheme", itemIndex, "light");
95
+ const width = executeFunctions.getNodeParameter("mapWidth", itemIndex, 1200);
96
+ const height = executeFunctions.getNodeParameter("mapHeight", itemIndex, 800);
97
+ return {
98
+ theme,
99
+ width,
100
+ height,
101
+ };
102
+ }
103
+ /**
104
+ * Builds target location from node parameters
105
+ */
106
+ function buildTargetLocation(context) {
107
+ const { executeFunctions, itemIndex } = context;
108
+ const city = executeFunctions.getNodeParameter("targetCity", itemIndex, "");
109
+ const countryCode = executeFunctions.getNodeParameter("targetCountryCode", itemIndex, "");
110
+ const latitude = executeFunctions.getNodeParameter("targetLatitude", itemIndex, 0);
111
+ const longitude = executeFunctions.getNodeParameter("targetLongitude", itemIndex, 0);
112
+ const location = {};
113
+ if (city)
114
+ location.city = city;
115
+ if (countryCode)
116
+ location.country_code = countryCode;
117
+ if (latitude !== 0)
118
+ location.latitude = latitude;
119
+ if (longitude !== 0)
120
+ location.longitude = longitude;
121
+ return location;
122
+ }
123
+ /**
124
+ * Handles all astrocartography resource operations
125
+ *
126
+ * @param context - Handler context with execution functions and credentials
127
+ * @param operation - The operation to execute
128
+ * @returns API response data
129
+ */
130
+ async function handleAstrocartographyResource(context, operation) {
131
+ const { executeFunctions, itemIndex, baseUrl, apiKey } = context;
132
+ const op = operation;
133
+ const endpoint = ASTROCARTOGRAPHY_ENDPOINTS[op] || ASTROCARTOGRAPHY_ENDPOINTS.map;
134
+ // GET operations - no body
135
+ if (GET_OPERATIONS.includes(op)) {
136
+ const responseData = await (0, helpers_1.makeApiRequest)(executeFunctions, "GET", baseUrl, endpoint, apiKey);
137
+ return (0, helpers_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
138
+ }
139
+ // POST operations with birth data
140
+ const birthData = (0, helpers_1.buildBirthData)(executeFunctions, itemIndex);
141
+ const body = {
142
+ ...(0, helpers_1.createSubjectRequest)(birthData),
143
+ };
144
+ // Add map options
145
+ const mapOptions = buildMapOptions(context, op);
146
+ if (Object.keys(mapOptions).length > 0) {
147
+ body.map_options = mapOptions;
148
+ }
149
+ // Add coordinate density for lines operation
150
+ if (op === "lines") {
151
+ const coordinateDensity = executeFunctions.getNodeParameter("coordinateDensity", itemIndex, 100);
152
+ body.coordinate_density = coordinateDensity;
153
+ }
154
+ // Add visual options
155
+ if (MAP_VISUAL_OPERATIONS.includes(op)) {
156
+ body.visual_options = buildVisualOptions(context);
157
+ }
158
+ // Add target location
159
+ if (TARGET_LOCATION_OPERATIONS.includes(op)) {
160
+ const targetLocation = buildTargetLocation(context);
161
+ if (Object.keys(targetLocation).length > 0) {
162
+ body.target_location = targetLocation;
163
+ }
164
+ }
165
+ // Add power type for power zones and search
166
+ if (op === "powerZones" || op === "searchLocations") {
167
+ const powerType = executeFunctions.getNodeParameter("powerType", itemIndex, "overall");
168
+ body.power_type = powerType;
169
+ }
170
+ const responseData = await (0, helpers_1.makeApiRequest)(executeFunctions, "POST", baseUrl, endpoint, apiKey, body);
171
+ return (0, helpers_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
172
+ }
@@ -234,52 +234,7 @@ async function handleNatalChart(context) {
234
234
  options,
235
235
  };
236
236
  const responseData = await (0, shared_1.makeApiRequest)(executeFunctions, "POST", baseUrl, "/api/v3/charts/natal", apiKey, body);
237
- const simplify = executeFunctions.getNodeParameter("simplify", itemIndex, true);
238
- return simplify ? (0, shared_1.simplifyResponse)(responseData) : responseData;
239
- }
240
- /**
241
- * Builds second subject birth data from subject2* prefixed fields
242
- */
243
- function buildSecondSubjectBirthData(executeFunctions, itemIndex) {
244
- const locationType = executeFunctions.getNodeParameter("subject2LocationType", itemIndex);
245
- const birthData = {
246
- year: executeFunctions.getNodeParameter("subject2Year", itemIndex),
247
- month: executeFunctions.getNodeParameter("subject2Month", itemIndex),
248
- day: executeFunctions.getNodeParameter("subject2Day", itemIndex),
249
- hour: executeFunctions.getNodeParameter("subject2Hour", itemIndex),
250
- minute: executeFunctions.getNodeParameter("subject2Minute", itemIndex),
251
- };
252
- if (locationType === "city") {
253
- birthData.city = executeFunctions.getNodeParameter("subject2City", itemIndex);
254
- birthData.country_code = executeFunctions.getNodeParameter("subject2CountryCode", itemIndex);
255
- }
256
- else {
257
- birthData.latitude = executeFunctions.getNodeParameter("subject2Latitude", itemIndex);
258
- birthData.longitude = executeFunctions.getNodeParameter("subject2Longitude", itemIndex);
259
- }
260
- return birthData;
261
- }
262
- /**
263
- * Builds transit time object from transit* prefixed fields
264
- */
265
- function buildTransitTime(executeFunctions, itemIndex) {
266
- const locationType = executeFunctions.getNodeParameter("transitLocationType", itemIndex);
267
- const transitTime = {
268
- year: executeFunctions.getNodeParameter("transitYear", itemIndex),
269
- month: executeFunctions.getNodeParameter("transitMonth", itemIndex),
270
- day: executeFunctions.getNodeParameter("transitDay", itemIndex),
271
- hour: executeFunctions.getNodeParameter("transitHour", itemIndex),
272
- minute: executeFunctions.getNodeParameter("transitMinute", itemIndex),
273
- };
274
- if (locationType === "city") {
275
- transitTime.city = executeFunctions.getNodeParameter("transitCity", itemIndex);
276
- transitTime.country_code = executeFunctions.getNodeParameter("transitCountryCode", itemIndex);
277
- }
278
- else {
279
- transitTime.latitude = executeFunctions.getNodeParameter("transitLatitude", itemIndex);
280
- transitTime.longitude = executeFunctions.getNodeParameter("transitLongitude", itemIndex);
281
- }
282
- return transitTime;
237
+ return (0, shared_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
283
238
  }
284
239
  /**
285
240
  * Gets common chart options
@@ -315,7 +270,7 @@ async function handleSynastryChart(context) {
315
270
  const birthData1 = (0, shared_1.buildBirthData)(executeFunctions, itemIndex);
316
271
  const subjectName1 = executeFunctions.getNodeParameter("subjectName", itemIndex, "");
317
272
  // Build subject 2
318
- const birthData2 = buildSecondSubjectBirthData(executeFunctions, itemIndex);
273
+ const birthData2 = (0, shared_1.buildSecondSubjectBirthData)(executeFunctions, itemIndex);
319
274
  const subjectName2 = executeFunctions.getNodeParameter("subject2Name", itemIndex, "");
320
275
  // Get options
321
276
  const options = getChartOptions(executeFunctions, itemIndex);
@@ -332,8 +287,7 @@ async function handleSynastryChart(context) {
332
287
  options,
333
288
  };
334
289
  const responseData = await (0, shared_1.makeApiRequest)(executeFunctions, "POST", baseUrl, CHARTS_ENDPOINTS.synastry, apiKey, body);
335
- const simplify = executeFunctions.getNodeParameter("simplify", itemIndex, true);
336
- return simplify ? (0, shared_1.simplifyResponse)(responseData) : responseData;
290
+ return (0, shared_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
337
291
  }
338
292
  /**
339
293
  * Handles transit chart generation (transits overlay on natal)
@@ -344,7 +298,7 @@ async function handleTransitChart(context) {
344
298
  const birthData = (0, shared_1.buildBirthData)(executeFunctions, itemIndex);
345
299
  const subjectName = executeFunctions.getNodeParameter("subjectName", itemIndex, "");
346
300
  // Build transit time
347
- const transitTime = buildTransitTime(executeFunctions, itemIndex);
301
+ const transitTime = (0, shared_1.buildTransitTime)(executeFunctions, itemIndex);
348
302
  // Get options
349
303
  const options = getChartOptions(executeFunctions, itemIndex);
350
304
  // Build request body
@@ -359,8 +313,7 @@ async function handleTransitChart(context) {
359
313
  options,
360
314
  };
361
315
  const responseData = await (0, shared_1.makeApiRequest)(executeFunctions, "POST", baseUrl, CHARTS_ENDPOINTS.transit, apiKey, body);
362
- const simplify = executeFunctions.getNodeParameter("simplify", itemIndex, true);
363
- return simplify ? (0, shared_1.simplifyResponse)(responseData) : responseData;
316
+ return (0, shared_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
364
317
  }
365
318
  /**
366
319
  * Handles composite chart generation (merged relationship chart)
@@ -371,7 +324,7 @@ async function handleCompositeChart(context) {
371
324
  const birthData1 = (0, shared_1.buildBirthData)(executeFunctions, itemIndex);
372
325
  const subjectName1 = executeFunctions.getNodeParameter("subjectName", itemIndex, "");
373
326
  // Build subject 2
374
- const birthData2 = buildSecondSubjectBirthData(executeFunctions, itemIndex);
327
+ const birthData2 = (0, shared_1.buildSecondSubjectBirthData)(executeFunctions, itemIndex);
375
328
  const subjectName2 = executeFunctions.getNodeParameter("subject2Name", itemIndex, "");
376
329
  // Get options
377
330
  const options = getChartOptions(executeFunctions, itemIndex);
@@ -388,8 +341,7 @@ async function handleCompositeChart(context) {
388
341
  options,
389
342
  };
390
343
  const responseData = await (0, shared_1.makeApiRequest)(executeFunctions, "POST", baseUrl, CHARTS_ENDPOINTS.composite, apiKey, body);
391
- const simplify = executeFunctions.getNodeParameter("simplify", itemIndex, true);
392
- return simplify ? (0, shared_1.simplifyResponse)(responseData) : responseData;
344
+ return (0, shared_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
393
345
  }
394
346
  /**
395
347
  * Handles solar return chart generation (birthday year forecast)
@@ -413,23 +365,12 @@ async function handleSolarReturnChart(context) {
413
365
  options,
414
366
  };
415
367
  // Handle relocated return location
416
- const useRelocatedReturn = executeFunctions.getNodeParameter("useRelocatedReturn", itemIndex, false);
417
- if (useRelocatedReturn) {
418
- const returnLocationType = executeFunctions.getNodeParameter("returnLocationType", itemIndex);
419
- const returnLocation = {};
420
- if (returnLocationType === "city") {
421
- returnLocation.city = executeFunctions.getNodeParameter("returnCity", itemIndex);
422
- returnLocation.country_code = executeFunctions.getNodeParameter("returnCountryCode", itemIndex);
423
- }
424
- else {
425
- returnLocation.latitude = executeFunctions.getNodeParameter("returnLatitude", itemIndex);
426
- returnLocation.longitude = executeFunctions.getNodeParameter("returnLongitude", itemIndex);
427
- }
368
+ const returnLocation = (0, shared_1.buildReturnLocation)(executeFunctions, itemIndex);
369
+ if (returnLocation) {
428
370
  body.return_location = returnLocation;
429
371
  }
430
372
  const responseData = await (0, shared_1.makeApiRequest)(executeFunctions, "POST", baseUrl, CHARTS_ENDPOINTS.solarReturn, apiKey, body);
431
- const simplify = executeFunctions.getNodeParameter("simplify", itemIndex, true);
432
- return simplify ? (0, shared_1.simplifyResponse)(responseData) : responseData;
373
+ return (0, shared_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
433
374
  }
434
375
  /**
435
376
  * Handles lunar return chart generation (monthly forecast)
@@ -455,8 +396,7 @@ async function handleLunarReturnChart(context) {
455
396
  body.return_date = lunarReturnDate;
456
397
  }
457
398
  const responseData = await (0, shared_1.makeApiRequest)(executeFunctions, "POST", baseUrl, CHARTS_ENDPOINTS.lunarReturn, apiKey, body);
458
- const simplify = executeFunctions.getNodeParameter("simplify", itemIndex, true);
459
- return simplify ? (0, shared_1.simplifyResponse)(responseData) : responseData;
399
+ return (0, shared_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
460
400
  }
461
401
  /**
462
402
  * Handles progressions chart generation (secondary progressions)
@@ -480,8 +420,7 @@ async function handleProgressionsChart(context) {
480
420
  options,
481
421
  };
482
422
  const responseData = await (0, shared_1.makeApiRequest)(executeFunctions, "POST", baseUrl, CHARTS_ENDPOINTS.progressions, apiKey, body);
483
- const simplify = executeFunctions.getNodeParameter("simplify", itemIndex, true);
484
- return simplify ? (0, shared_1.simplifyResponse)(responseData) : responseData;
423
+ return (0, shared_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
485
424
  }
486
425
  /**
487
426
  * Handles natal transits analysis (transit period over date range)
@@ -504,8 +443,7 @@ async function handleNatalTransits(context) {
504
443
  end_date: endDate,
505
444
  };
506
445
  const responseData = await (0, shared_1.makeApiRequest)(executeFunctions, "POST", baseUrl, CHARTS_ENDPOINTS.natalTransits, apiKey, body);
507
- const simplify = executeFunctions.getNodeParameter("simplify", itemIndex, true);
508
- return simplify ? (0, shared_1.simplifyResponse)(responseData) : responseData;
446
+ return (0, shared_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
509
447
  }
510
448
  /**
511
449
  * Handles directions chart generation (primary directions)
@@ -529,8 +467,7 @@ async function handleDirectionsChart(context) {
529
467
  options,
530
468
  };
531
469
  const responseData = await (0, shared_1.makeApiRequest)(executeFunctions, "POST", baseUrl, CHARTS_ENDPOINTS.directions, apiKey, body);
532
- const simplify = executeFunctions.getNodeParameter("simplify", itemIndex, true);
533
- return simplify ? (0, shared_1.simplifyResponse)(responseData) : responseData;
470
+ return (0, shared_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
534
471
  }
535
472
  /**
536
473
  * Handles solar return transits (transits to solar return chart over a date range)
@@ -558,23 +495,12 @@ async function handleSolarReturnTransits(context) {
558
495
  orb,
559
496
  };
560
497
  // Handle relocated return location
561
- const useRelocatedReturn = executeFunctions.getNodeParameter("useRelocatedReturn", itemIndex, false);
562
- if (useRelocatedReturn) {
563
- const returnLocationType = executeFunctions.getNodeParameter("returnLocationType", itemIndex);
564
- const returnLocation = {};
565
- if (returnLocationType === "city") {
566
- returnLocation.city = executeFunctions.getNodeParameter("returnCity", itemIndex);
567
- returnLocation.country_code = executeFunctions.getNodeParameter("returnCountryCode", itemIndex);
568
- }
569
- else {
570
- returnLocation.latitude = executeFunctions.getNodeParameter("returnLatitude", itemIndex);
571
- returnLocation.longitude = executeFunctions.getNodeParameter("returnLongitude", itemIndex);
572
- }
498
+ const returnLocation = (0, shared_1.buildReturnLocation)(executeFunctions, itemIndex);
499
+ if (returnLocation) {
573
500
  body.return_location = returnLocation;
574
501
  }
575
502
  const responseData = await (0, shared_1.makeApiRequest)(executeFunctions, "POST", baseUrl, CHARTS_ENDPOINTS.solarReturnTransits, apiKey, body);
576
- const simplify = executeFunctions.getNodeParameter("simplify", itemIndex, true);
577
- return simplify ? (0, shared_1.simplifyResponse)(responseData) : responseData;
503
+ return (0, shared_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
578
504
  }
579
505
  /**
580
506
  * Handles lunar return transits (transits to lunar return chart over a date range)
@@ -604,6 +530,5 @@ async function handleLunarReturnTransits(context) {
604
530
  body.return_date = lunarReturnDate;
605
531
  }
606
532
  const responseData = await (0, shared_1.makeApiRequest)(executeFunctions, "POST", baseUrl, CHARTS_ENDPOINTS.lunarReturnTransits, apiKey, body);
607
- const simplify = executeFunctions.getNodeParameter("simplify", itemIndex, true);
608
- return simplify ? (0, shared_1.simplifyResponse)(responseData) : responseData;
533
+ return (0, shared_1.applySimplifyIfEnabled)(executeFunctions, itemIndex, responseData);
609
534
  }
@@ -0,0 +1,10 @@
1
+ import type { IDataObject } from "n8n-workflow";
2
+ import type { IHandlerContext } from "../interfaces/types";
3
+ /**
4
+ * Handles all chinese resource operations
5
+ *
6
+ * @param context - Handler context with execution functions and credentials
7
+ * @param operation - The operation to execute
8
+ * @returns API response data
9
+ */
10
+ export declare function handleChineseResource(context: IHandlerContext, operation: string): Promise<IDataObject>;