bps-mcp-server 0.1.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 (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +197 -0
  3. package/dist/auth/api-key.provider.d.ts +12 -0
  4. package/dist/auth/api-key.provider.d.ts.map +1 -0
  5. package/dist/auth/api-key.provider.js +28 -0
  6. package/dist/auth/api-key.provider.js.map +1 -0
  7. package/dist/auth/factory.d.ts +4 -0
  8. package/dist/auth/factory.d.ts.map +1 -0
  9. package/dist/auth/factory.js +13 -0
  10. package/dist/auth/factory.js.map +1 -0
  11. package/dist/auth/oauth2.provider.d.ts +22 -0
  12. package/dist/auth/oauth2.provider.d.ts.map +1 -0
  13. package/dist/auth/oauth2.provider.js +64 -0
  14. package/dist/auth/oauth2.provider.js.map +1 -0
  15. package/dist/auth/types.d.ts +13 -0
  16. package/dist/auth/types.d.ts.map +1 -0
  17. package/dist/auth/types.js +2 -0
  18. package/dist/auth/types.js.map +1 -0
  19. package/dist/client/bps-client.d.ts +93 -0
  20. package/dist/client/bps-client.d.ts.map +1 -0
  21. package/dist/client/bps-client.js +255 -0
  22. package/dist/client/bps-client.js.map +1 -0
  23. package/dist/client/endpoints.d.ts +57 -0
  24. package/dist/client/endpoints.d.ts.map +1 -0
  25. package/dist/client/endpoints.js +166 -0
  26. package/dist/client/endpoints.js.map +1 -0
  27. package/dist/client/types.d.ts +273 -0
  28. package/dist/client/types.d.ts.map +1 -0
  29. package/dist/client/types.js +2 -0
  30. package/dist/client/types.js.map +1 -0
  31. package/dist/config/defaults.d.ts +24 -0
  32. package/dist/config/defaults.d.ts.map +1 -0
  33. package/dist/config/defaults.js +26 -0
  34. package/dist/config/defaults.js.map +1 -0
  35. package/dist/config/domain-aliases.d.ts +6 -0
  36. package/dist/config/domain-aliases.d.ts.map +1 -0
  37. package/dist/config/domain-aliases.js +105 -0
  38. package/dist/config/domain-aliases.js.map +1 -0
  39. package/dist/config/index.d.ts +71 -0
  40. package/dist/config/index.d.ts.map +1 -0
  41. package/dist/config/index.js +52 -0
  42. package/dist/config/index.js.map +1 -0
  43. package/dist/index.d.ts +3 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +31 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/prompts/analysis.prompts.d.ts +3 -0
  48. package/dist/prompts/analysis.prompts.d.ts.map +1 -0
  49. package/dist/prompts/analysis.prompts.js +171 -0
  50. package/dist/prompts/analysis.prompts.js.map +1 -0
  51. package/dist/resources/domain.resources.d.ts +5 -0
  52. package/dist/resources/domain.resources.d.ts.map +1 -0
  53. package/dist/resources/domain.resources.js +62 -0
  54. package/dist/resources/domain.resources.js.map +1 -0
  55. package/dist/server.d.ts +12 -0
  56. package/dist/server.d.ts.map +1 -0
  57. package/dist/server.js +43 -0
  58. package/dist/server.js.map +1 -0
  59. package/dist/services/attribution.d.ts +3 -0
  60. package/dist/services/attribution.d.ts.map +1 -0
  61. package/dist/services/attribution.js +8 -0
  62. package/dist/services/attribution.js.map +1 -0
  63. package/dist/services/cache.d.ts +21 -0
  64. package/dist/services/cache.d.ts.map +1 -0
  65. package/dist/services/cache.js +47 -0
  66. package/dist/services/cache.js.map +1 -0
  67. package/dist/services/data-formatter.d.ts +13 -0
  68. package/dist/services/data-formatter.d.ts.map +1 -0
  69. package/dist/services/data-formatter.js +166 -0
  70. package/dist/services/data-formatter.js.map +1 -0
  71. package/dist/services/domain-resolver.d.ts +22 -0
  72. package/dist/services/domain-resolver.d.ts.map +1 -0
  73. package/dist/services/domain-resolver.js +101 -0
  74. package/dist/services/domain-resolver.js.map +1 -0
  75. package/dist/tools/census.tools.d.ts +4 -0
  76. package/dist/tools/census.tools.d.ts.map +1 -0
  77. package/dist/tools/census.tools.js +28 -0
  78. package/dist/tools/census.tools.js.map +1 -0
  79. package/dist/tools/csa.tools.d.ts +4 -0
  80. package/dist/tools/csa.tools.d.ts.map +1 -0
  81. package/dist/tools/csa.tools.js +77 -0
  82. package/dist/tools/csa.tools.js.map +1 -0
  83. package/dist/tools/domain.tools.d.ts +5 -0
  84. package/dist/tools/domain.tools.d.ts.map +1 -0
  85. package/dist/tools/domain.tools.js +44 -0
  86. package/dist/tools/domain.tools.js.map +1 -0
  87. package/dist/tools/dynamic-data.tools.d.ts +5 -0
  88. package/dist/tools/dynamic-data.tools.d.ts.map +1 -0
  89. package/dist/tools/dynamic-data.tools.js +136 -0
  90. package/dist/tools/dynamic-data.tools.js.map +1 -0
  91. package/dist/tools/glossary.tools.d.ts +4 -0
  92. package/dist/tools/glossary.tools.d.ts.map +1 -0
  93. package/dist/tools/glossary.tools.js +32 -0
  94. package/dist/tools/glossary.tools.js.map +1 -0
  95. package/dist/tools/infographic.tools.d.ts +4 -0
  96. package/dist/tools/infographic.tools.d.ts.map +1 -0
  97. package/dist/tools/infographic.tools.js +60 -0
  98. package/dist/tools/infographic.tools.js.map +1 -0
  99. package/dist/tools/news.tools.d.ts +4 -0
  100. package/dist/tools/news.tools.d.ts.map +1 -0
  101. package/dist/tools/news.tools.js +55 -0
  102. package/dist/tools/news.tools.js.map +1 -0
  103. package/dist/tools/publication.tools.d.ts +4 -0
  104. package/dist/tools/publication.tools.d.ts.map +1 -0
  105. package/dist/tools/publication.tools.js +101 -0
  106. package/dist/tools/publication.tools.js.map +1 -0
  107. package/dist/tools/reference.tools.d.ts +4 -0
  108. package/dist/tools/reference.tools.d.ts.map +1 -0
  109. package/dist/tools/reference.tools.js +20 -0
  110. package/dist/tools/reference.tools.js.map +1 -0
  111. package/dist/tools/search.tools.d.ts +4 -0
  112. package/dist/tools/search.tools.d.ts.map +1 -0
  113. package/dist/tools/search.tools.js +22 -0
  114. package/dist/tools/search.tools.js.map +1 -0
  115. package/dist/tools/static-table.tools.d.ts +4 -0
  116. package/dist/tools/static-table.tools.d.ts.map +1 -0
  117. package/dist/tools/static-table.tools.js +47 -0
  118. package/dist/tools/static-table.tools.js.map +1 -0
  119. package/dist/tools/trade.tools.d.ts +4 -0
  120. package/dist/tools/trade.tools.d.ts.map +1 -0
  121. package/dist/tools/trade.tools.js +25 -0
  122. package/dist/tools/trade.tools.js.map +1 -0
  123. package/dist/tools/utility.tools.d.ts +4 -0
  124. package/dist/tools/utility.tools.d.ts.map +1 -0
  125. package/dist/tools/utility.tools.js +10 -0
  126. package/dist/tools/utility.tools.js.map +1 -0
  127. package/dist/transport/stdio.d.ts +3 -0
  128. package/dist/transport/stdio.d.ts.map +1 -0
  129. package/dist/transport/stdio.js +9 -0
  130. package/dist/transport/stdio.js.map +1 -0
  131. package/dist/utils/error.d.ts +13 -0
  132. package/dist/utils/error.d.ts.map +1 -0
  133. package/dist/utils/error.js +38 -0
  134. package/dist/utils/error.js.map +1 -0
  135. package/dist/utils/logger.d.ts +12 -0
  136. package/dist/utils/logger.d.ts.map +1 -0
  137. package/dist/utils/logger.js +47 -0
  138. package/dist/utils/logger.js.map +1 -0
  139. package/dist/utils/pagination.d.ts +11 -0
  140. package/dist/utils/pagination.d.ts.map +1 -0
  141. package/dist/utils/pagination.js +19 -0
  142. package/dist/utils/pagination.js.map +1 -0
  143. package/package.json +60 -0
@@ -0,0 +1,255 @@
1
+ import { buildListUrl, buildViewUrl, buildDomainUrl, buildTradeUrl, buildInteropUrl, MODELS, } from "./endpoints.js";
2
+ import { BpsApiError, BpsAuthError, BpsNotFoundError } from "../utils/error.js";
3
+ import { logger } from "../utils/logger.js";
4
+ export class BpsClient {
5
+ auth;
6
+ cache;
7
+ baseUrl;
8
+ defaultLang;
9
+ defaultDomain;
10
+ constructor(auth, cache, config) {
11
+ this.auth = auth;
12
+ this.cache = cache;
13
+ this.baseUrl = config.apiBaseUrl;
14
+ this.defaultLang = config.defaultLang;
15
+ this.defaultDomain = config.defaultDomain;
16
+ }
17
+ async fetchJson(url, cacheKey, ttl) {
18
+ // Check cache
19
+ if (this.cache && ttl) {
20
+ const cached = await this.cache.get(cacheKey);
21
+ if (cached) {
22
+ logger.debug(`Cache hit: ${cacheKey}`);
23
+ return JSON.parse(cached);
24
+ }
25
+ }
26
+ logger.debug(`Fetching: ${url}`);
27
+ const authHeaders = await this.auth.getHeaders();
28
+ const res = await fetch(url, {
29
+ headers: {
30
+ Accept: "application/json",
31
+ ...authHeaders,
32
+ },
33
+ });
34
+ if (res.status === 401 || res.status === 403) {
35
+ throw new BpsAuthError();
36
+ }
37
+ if (!res.ok) {
38
+ throw new BpsApiError(`BPS API error: ${res.status} ${res.statusText}`, res.status, url);
39
+ }
40
+ const json = await res.json();
41
+ // BPS API returns status field - check for errors
42
+ const apiResponse = json;
43
+ if (apiResponse.status === "400" || apiResponse["data-availability"] === "list-not-available") {
44
+ throw new BpsNotFoundError(cacheKey);
45
+ }
46
+ // Cache result
47
+ if (this.cache && ttl) {
48
+ await this.cache.set(cacheKey, JSON.stringify(json), ttl);
49
+ }
50
+ return json;
51
+ }
52
+ async authParams() {
53
+ return this.auth.getQueryParams();
54
+ }
55
+ /**
56
+ * Perform a list request: /api/list/model/{model}/...
57
+ */
58
+ async listRequest(model, params, ttl) {
59
+ const auth = await this.authParams();
60
+ const allParams = {
61
+ domain: params.domain ?? this.defaultDomain,
62
+ ...params,
63
+ lang: params.lang ?? this.defaultLang,
64
+ ...auth,
65
+ };
66
+ const url = buildListUrl(this.baseUrl, model, allParams);
67
+ const cacheKey = `list:${model}:${JSON.stringify(allParams)}`;
68
+ return this.fetchJson(url, cacheKey, ttl);
69
+ }
70
+ /**
71
+ * Perform a view request: /api/view/model/{model}/...
72
+ */
73
+ async viewRequest(model, params, ttl) {
74
+ const auth = await this.authParams();
75
+ const allParams = {
76
+ domain: params.domain ?? this.defaultDomain,
77
+ ...params,
78
+ lang: params.lang ?? this.defaultLang,
79
+ ...auth,
80
+ };
81
+ const url = buildViewUrl(this.baseUrl, model, allParams);
82
+ const cacheKey = `view:${model}:${JSON.stringify(allParams)}`;
83
+ return this.fetchJson(url, cacheKey, ttl);
84
+ }
85
+ extractPaginated(res) {
86
+ if (Array.isArray(res.data) && res.data.length === 2 && typeof res.data[0] === "object" && "page" in res.data[0]) {
87
+ return { data: res.data[1], page: res.data[0] };
88
+ }
89
+ // Fallback: data might be a flat array in some edge cases
90
+ return { data: res.data ?? [] };
91
+ }
92
+ // ========== Domain ==========
93
+ async listDomains(type = "all", provId) {
94
+ const auth = await this.authParams();
95
+ const params = {
96
+ type,
97
+ prov: provId,
98
+ lang: this.defaultLang,
99
+ ...auth,
100
+ };
101
+ const url = buildDomainUrl(this.baseUrl, params);
102
+ const cacheKey = `domain:${JSON.stringify(params)}`;
103
+ const res = await this.fetchJson(url, cacheKey, 24 * 60 * 60);
104
+ return this.extractPaginated(res);
105
+ }
106
+ // ========== Subjects ==========
107
+ async listSubjects(domain, subcat) {
108
+ const res = await this.listRequest(MODELS.SUBJECT, { domain, subcat }, 24 * 60 * 60);
109
+ return this.extractPaginated(res);
110
+ }
111
+ async listSubjectCategories(domain) {
112
+ const res = await this.listRequest(MODELS.SUBJECT_CATEGORY, { domain }, 24 * 60 * 60);
113
+ const result = this.extractPaginated(res);
114
+ return result.data;
115
+ }
116
+ // ========== Variables ==========
117
+ async listVariables(domain, subject, year, page, perPage) {
118
+ const res = await this.listRequest(MODELS.VARIABLE, { domain, subject, year, page, perpage: perPage }, 12 * 60 * 60);
119
+ return this.extractPaginated(res);
120
+ }
121
+ async listVerticalVariables(domain, varId) {
122
+ const res = await this.listRequest(MODELS.VERTICAL_VARIABLE, { domain, var: varId }, 12 * 60 * 60);
123
+ return this.extractPaginated(res).data;
124
+ }
125
+ async listDerivedVariables(domain, varId) {
126
+ const res = await this.listRequest(MODELS.DERIVED_VARIABLE, { domain, var: varId }, 12 * 60 * 60);
127
+ return this.extractPaginated(res).data;
128
+ }
129
+ async listPeriods(domain, varId) {
130
+ const res = await this.listRequest(MODELS.PERIOD, { domain, var: varId }, 12 * 60 * 60);
131
+ return this.extractPaginated(res).data;
132
+ }
133
+ async listDerivedPeriods(domain, varId) {
134
+ const res = await this.listRequest(MODELS.DERIVED_PERIOD, { domain, var: varId }, 12 * 60 * 60);
135
+ return this.extractPaginated(res).data;
136
+ }
137
+ async listUnits(domain) {
138
+ const res = await this.listRequest(MODELS.UNIT, { domain }, 24 * 60 * 60);
139
+ return this.extractPaginated(res).data;
140
+ }
141
+ // ========== Dynamic Data ==========
142
+ async getDynamicData(domain, varId, th, turvar, vervar, turth) {
143
+ return this.listRequest(MODELS.DATA, { domain, var: varId, th, turvar, vervar, turth }, 60 * 60);
144
+ }
145
+ // ========== Static Tables ==========
146
+ async listStaticTables(domain, keyword, year, month, page) {
147
+ const res = await this.listRequest(MODELS.STATIC_TABLE, { domain, keyword, year, month, page }, 6 * 60 * 60);
148
+ return this.extractPaginated(res);
149
+ }
150
+ async getStaticTable(domain, id) {
151
+ const res = await this.viewRequest(MODELS.STATIC_TABLE, { domain, id }, 6 * 60 * 60);
152
+ return res.data;
153
+ }
154
+ // ========== Press Releases ==========
155
+ async listPressReleases(domain, keyword, year, month, page) {
156
+ const res = await this.listRequest(MODELS.PRESS_RELEASE, { domain, keyword, year, month, page }, 30 * 60);
157
+ return this.extractPaginated(res);
158
+ }
159
+ async getPressRelease(domain, id) {
160
+ const res = await this.viewRequest(MODELS.PRESS_RELEASE, { domain, id }, 30 * 60);
161
+ return res.data;
162
+ }
163
+ // ========== Publications ==========
164
+ async listPublications(domain, keyword, year, month, page) {
165
+ const res = await this.listRequest(MODELS.PUBLICATION, { domain, keyword, year, month, page }, 6 * 60 * 60);
166
+ return this.extractPaginated(res);
167
+ }
168
+ async getPublication(domain, id) {
169
+ const res = await this.viewRequest(MODELS.PUBLICATION, { domain, id }, 6 * 60 * 60);
170
+ return res.data;
171
+ }
172
+ // ========== Strategic Indicators ==========
173
+ async listStrategicIndicators(domain, varId, page) {
174
+ const res = await this.listRequest(MODELS.STRATEGIC_INDICATOR, { domain, var: varId, page }, 60 * 60);
175
+ return this.extractPaginated(res);
176
+ }
177
+ // ========== Trade ==========
178
+ async getTradeData(source, hsCode, hsType, year, period) {
179
+ const auth = await this.authParams();
180
+ const params = {
181
+ sumber: source,
182
+ kodehs: hsCode,
183
+ jenishs: hsType,
184
+ tahun: year,
185
+ periode: period,
186
+ lang: this.defaultLang,
187
+ ...auth,
188
+ };
189
+ const url = buildTradeUrl(this.baseUrl, params);
190
+ const cacheKey = `trade:${JSON.stringify(params)}`;
191
+ return this.fetchJson(url, cacheKey, 60 * 60);
192
+ }
193
+ // ========== Infographics ==========
194
+ async listInfographics(domain, keyword, page) {
195
+ const res = await this.listRequest(MODELS.INFOGRAPHIC, { domain, keyword, page }, 6 * 60 * 60);
196
+ return this.extractPaginated(res);
197
+ }
198
+ async getInfographic(domain, id) {
199
+ const res = await this.viewRequest(MODELS.INFOGRAPHIC, { domain, id }, 6 * 60 * 60);
200
+ return res.data;
201
+ }
202
+ // ========== News ==========
203
+ async listNews(domain, keyword, page) {
204
+ const res = await this.listRequest(MODELS.NEWS, { domain, keyword, page }, 30 * 60);
205
+ return this.extractPaginated(res);
206
+ }
207
+ async getNews(domain, id) {
208
+ const res = await this.viewRequest(MODELS.NEWS, { domain, id }, 30 * 60);
209
+ return res.data;
210
+ }
211
+ // ========== Glossary (Glosarium) ==========
212
+ async listGlossary(domain, keyword, page) {
213
+ const res = await this.listRequest(MODELS.GLOSSARY, { domain, keyword, page }, 24 * 60 * 60);
214
+ return this.extractPaginated(res);
215
+ }
216
+ // ========== CSA (Classification of Statistical Activities) ==========
217
+ async listCsaSubjectCategories(domain) {
218
+ const res = await this.listRequest(MODELS.CSA_SUBJECT_CATEGORY, { domain }, 24 * 60 * 60);
219
+ return this.extractPaginated(res).data;
220
+ }
221
+ async listCsaSubjects(domain, subcat) {
222
+ const res = await this.listRequest(MODELS.CSA_SUBJECT, { domain, subcat }, 24 * 60 * 60);
223
+ return this.extractPaginated(res);
224
+ }
225
+ async listCsaTables(domain, subject, page) {
226
+ const res = await this.listRequest(MODELS.CSA_TABLE, { domain, subject, page }, 6 * 60 * 60);
227
+ return this.extractPaginated(res);
228
+ }
229
+ async getCsaTable(domain, id) {
230
+ const res = await this.viewRequest(MODELS.CSA_TABLE, { domain, id }, 6 * 60 * 60);
231
+ return res.data;
232
+ }
233
+ // ========== Census (Sensus) via Interoperabilitas ==========
234
+ async listCensusEvents() {
235
+ const auth = await this.authParams();
236
+ const url = buildInteropUrl(this.baseUrl, "sensus", { id: 37, ...auth });
237
+ const cacheKey = `census:events`;
238
+ const res = await this.fetchJson(url, cacheKey, 24 * 60 * 60);
239
+ return this.extractPaginated(res).data;
240
+ }
241
+ async listCensusTopics(kegiatan) {
242
+ const auth = await this.authParams();
243
+ const url = buildInteropUrl(this.baseUrl, "sensus", { id: 38, kegiatan, ...auth });
244
+ const cacheKey = `census:topics:${kegiatan}`;
245
+ const res = await this.fetchJson(url, cacheKey, 24 * 60 * 60);
246
+ return this.extractPaginated(res).data;
247
+ }
248
+ // ========== Search ==========
249
+ async search(domain, keyword, model, page) {
250
+ const listModel = model ?? MODELS.STATIC_TABLE;
251
+ const res = await this.listRequest(listModel, { domain, keyword, page }, 30 * 60);
252
+ return this.extractPaginated(res);
253
+ }
254
+ }
255
+ //# sourceMappingURL=bps-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bps-client.js","sourceRoot":"","sources":["../../src/client/bps-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * BPS API endpoint URL builders.
3
+ *
4
+ * BPS Web API uses path-based routing:
5
+ * List: {baseUrl}/api/list/model/{model}/domain/{domain}/key/{key}/lang/{lang}/?page=X&keyword=Y
6
+ * View: {baseUrl}/api/view/model/{model}/domain/{domain}/lang/{lang}/key/{key}/?id=X
7
+ * Domain: {baseUrl}/api/domain/type/{type}/key/{key}/lang/{lang}/
8
+ * Trade: {baseUrl}/api/dataexim/sumber/{s}/kodehs/{hs}/jenishs/{j}/tahun/{y}/periode/{p}/lang/{lang}/key/{key}/
9
+ * Census: {baseUrl}/api/interoperabilitas/datasource/sensus/id/{id}/key/{key}/
10
+ * SIMDASI:{baseUrl}/api/interoperabilitas/datasource/simdasi/id/{id}/wilayah/{w}/key/{key}/
11
+ *
12
+ * Path params are inserted into the URL path. Remaining params (page, keyword, etc.)
13
+ * become query string parameters.
14
+ */
15
+ /**
16
+ * Build a list URL: /api/list/model/{model}/param1/val1/.../key/{key}/?queryparams
17
+ */
18
+ export declare function buildListUrl(baseUrl: string, model: string, params: Record<string, string | number | undefined>): string;
19
+ /**
20
+ * Build a view URL: /api/view/model/{model}/param1/val1/.../key/{key}/?queryparams
21
+ */
22
+ export declare function buildViewUrl(baseUrl: string, model: string, params: Record<string, string | number | undefined>): string;
23
+ /**
24
+ * Build a domain URL: /api/domain/type/{type}/key/{key}/lang/{lang}/
25
+ */
26
+ export declare function buildDomainUrl(baseUrl: string, params: Record<string, string | number | undefined>): string;
27
+ /**
28
+ * Build a trade (dataexim) URL: /api/dataexim/param1/val1/.../key/{key}/
29
+ */
30
+ export declare function buildTradeUrl(baseUrl: string, params: Record<string, string | number | undefined>): string;
31
+ /**
32
+ * Build an interoperabilitas URL: /api/interoperabilitas/datasource/{source}/id/{id}/.../key/{key}/
33
+ */
34
+ export declare function buildInteropUrl(baseUrl: string, datasource: string, params: Record<string, string | number | undefined>): string;
35
+ export declare const MODELS: {
36
+ readonly DOMAIN: "domain";
37
+ readonly SUBJECT: "subject";
38
+ readonly SUBJECT_CATEGORY: "subcat";
39
+ readonly VARIABLE: "var";
40
+ readonly VERTICAL_VARIABLE: "vervar";
41
+ readonly DERIVED_VARIABLE: "turvar";
42
+ readonly PERIOD: "th";
43
+ readonly DERIVED_PERIOD: "turth";
44
+ readonly UNIT: "unit";
45
+ readonly DATA: "data";
46
+ readonly STATIC_TABLE: "statictable";
47
+ readonly PRESS_RELEASE: "pressrelease";
48
+ readonly PUBLICATION: "publication";
49
+ readonly STRATEGIC_INDICATOR: "indicators";
50
+ readonly INFOGRAPHIC: "infographic";
51
+ readonly NEWS: "news";
52
+ readonly GLOSSARY: "glosarium";
53
+ readonly CSA_SUBJECT_CATEGORY: "subcatcsa";
54
+ readonly CSA_SUBJECT: "subjectcsa";
55
+ readonly CSA_TABLE: "tablestatistic";
56
+ };
57
+ //# sourceMappingURL=endpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../src/client/endpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAClD,MAAM,CAsBR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAClD,MAAM,CAqBR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAClD,MAAM,CAUR;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAClD,MAAM,CAqBR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAClD,MAAM,CAqBR;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;CA4CT,CAAC"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * BPS API endpoint URL builders.
3
+ *
4
+ * BPS Web API uses path-based routing:
5
+ * List: {baseUrl}/api/list/model/{model}/domain/{domain}/key/{key}/lang/{lang}/?page=X&keyword=Y
6
+ * View: {baseUrl}/api/view/model/{model}/domain/{domain}/lang/{lang}/key/{key}/?id=X
7
+ * Domain: {baseUrl}/api/domain/type/{type}/key/{key}/lang/{lang}/
8
+ * Trade: {baseUrl}/api/dataexim/sumber/{s}/kodehs/{hs}/jenishs/{j}/tahun/{y}/periode/{p}/lang/{lang}/key/{key}/
9
+ * Census: {baseUrl}/api/interoperabilitas/datasource/sensus/id/{id}/key/{key}/
10
+ * SIMDASI:{baseUrl}/api/interoperabilitas/datasource/simdasi/id/{id}/wilayah/{w}/key/{key}/
11
+ *
12
+ * Path params are inserted into the URL path. Remaining params (page, keyword, etc.)
13
+ * become query string parameters.
14
+ */
15
+ /** Parameters that go into the URL path for list/view endpoints */
16
+ const PATH_PARAMS = new Set(["domain", "key", "lang", "id", "var", "th", "turvar", "vervar", "turth", "subject", "subcat", "type", "prov"]);
17
+ /** Parameters that go into the URL path for the trade (dataexim) endpoint */
18
+ const TRADE_PATH_PARAMS = new Set(["sumber", "kodehs", "jenishs", "tahun", "periode", "lang", "key"]);
19
+ /** Parameters that go into the URL path for interoperabilitas endpoints */
20
+ const INTEROP_PATH_PARAMS = new Set(["datasource", "id", "kegiatan", "topik", "wilayah", "key"]);
21
+ /**
22
+ * Build a list URL: /api/list/model/{model}/param1/val1/.../key/{key}/?queryparams
23
+ */
24
+ export function buildListUrl(baseUrl, model, params) {
25
+ let path = `${baseUrl}/api/list/model/${model}`;
26
+ const queryParams = {};
27
+ for (const [key, value] of Object.entries(params)) {
28
+ if (value === undefined || value === "")
29
+ continue;
30
+ if (PATH_PARAMS.has(key)) {
31
+ path += `/${key}/${encodeURIComponent(String(value))}`;
32
+ }
33
+ else {
34
+ queryParams[key] = String(value);
35
+ }
36
+ }
37
+ // Ensure path ends with /
38
+ if (!path.endsWith("/"))
39
+ path += "/";
40
+ const url = new URL(path);
41
+ for (const [key, value] of Object.entries(queryParams)) {
42
+ url.searchParams.set(key, value);
43
+ }
44
+ return url.toString();
45
+ }
46
+ /**
47
+ * Build a view URL: /api/view/model/{model}/param1/val1/.../key/{key}/?queryparams
48
+ */
49
+ export function buildViewUrl(baseUrl, model, params) {
50
+ let path = `${baseUrl}/api/view/model/${model}`;
51
+ const queryParams = {};
52
+ for (const [key, value] of Object.entries(params)) {
53
+ if (value === undefined || value === "")
54
+ continue;
55
+ if (PATH_PARAMS.has(key)) {
56
+ path += `/${key}/${encodeURIComponent(String(value))}`;
57
+ }
58
+ else {
59
+ queryParams[key] = String(value);
60
+ }
61
+ }
62
+ if (!path.endsWith("/"))
63
+ path += "/";
64
+ const url = new URL(path);
65
+ for (const [key, value] of Object.entries(queryParams)) {
66
+ url.searchParams.set(key, value);
67
+ }
68
+ return url.toString();
69
+ }
70
+ /**
71
+ * Build a domain URL: /api/domain/type/{type}/key/{key}/lang/{lang}/
72
+ */
73
+ export function buildDomainUrl(baseUrl, params) {
74
+ let path = `${baseUrl}/api/domain`;
75
+ for (const [key, value] of Object.entries(params)) {
76
+ if (value === undefined || value === "")
77
+ continue;
78
+ path += `/${key}/${encodeURIComponent(String(value))}`;
79
+ }
80
+ if (!path.endsWith("/"))
81
+ path += "/";
82
+ return new URL(path).toString();
83
+ }
84
+ /**
85
+ * Build a trade (dataexim) URL: /api/dataexim/param1/val1/.../key/{key}/
86
+ */
87
+ export function buildTradeUrl(baseUrl, params) {
88
+ let path = `${baseUrl}/api/dataexim`;
89
+ const queryParams = {};
90
+ for (const [key, value] of Object.entries(params)) {
91
+ if (value === undefined || value === "")
92
+ continue;
93
+ if (TRADE_PATH_PARAMS.has(key)) {
94
+ path += `/${key}/${encodeURIComponent(String(value))}`;
95
+ }
96
+ else {
97
+ queryParams[key] = String(value);
98
+ }
99
+ }
100
+ if (!path.endsWith("/"))
101
+ path += "/";
102
+ const url = new URL(path);
103
+ for (const [key, value] of Object.entries(queryParams)) {
104
+ url.searchParams.set(key, value);
105
+ }
106
+ return url.toString();
107
+ }
108
+ /**
109
+ * Build an interoperabilitas URL: /api/interoperabilitas/datasource/{source}/id/{id}/.../key/{key}/
110
+ */
111
+ export function buildInteropUrl(baseUrl, datasource, params) {
112
+ let path = `${baseUrl}/api/interoperabilitas/datasource/${datasource}`;
113
+ const queryParams = {};
114
+ for (const [key, value] of Object.entries(params)) {
115
+ if (value === undefined || value === "")
116
+ continue;
117
+ if (INTEROP_PATH_PARAMS.has(key)) {
118
+ path += `/${key}/${encodeURIComponent(String(value))}`;
119
+ }
120
+ else {
121
+ queryParams[key] = String(value);
122
+ }
123
+ }
124
+ if (!path.endsWith("/"))
125
+ path += "/";
126
+ const url = new URL(path);
127
+ for (const [key, value] of Object.entries(queryParams)) {
128
+ url.searchParams.set(key, value);
129
+ }
130
+ return url.toString();
131
+ }
132
+ export const MODELS = {
133
+ // Domain (special — uses /api/domain/ directly)
134
+ DOMAIN: "domain",
135
+ // Subject & Category
136
+ SUBJECT: "subject",
137
+ SUBJECT_CATEGORY: "subcat",
138
+ // Variables
139
+ VARIABLE: "var",
140
+ VERTICAL_VARIABLE: "vervar",
141
+ DERIVED_VARIABLE: "turvar",
142
+ PERIOD: "th",
143
+ DERIVED_PERIOD: "turth",
144
+ UNIT: "unit",
145
+ // Dynamic data
146
+ DATA: "data",
147
+ // Static tables
148
+ STATIC_TABLE: "statictable",
149
+ // Press Release
150
+ PRESS_RELEASE: "pressrelease",
151
+ // Publication
152
+ PUBLICATION: "publication",
153
+ // Strategic Indicator
154
+ STRATEGIC_INDICATOR: "indicators",
155
+ // Infographic
156
+ INFOGRAPHIC: "infographic",
157
+ // News
158
+ NEWS: "news",
159
+ // Glossary
160
+ GLOSSARY: "glosarium",
161
+ // CSA (Classification of Statistical Activities)
162
+ CSA_SUBJECT_CATEGORY: "subcatcsa",
163
+ CSA_SUBJECT: "subjectcsa",
164
+ CSA_TABLE: "tablestatistic",
165
+ };
166
+ //# sourceMappingURL=endpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/client/endpoints.ts"],"names":[],"mappings":"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"}