@nordcraft/core 1.0.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/README.md +5 -0
  2. package/dist/api/LegacyToddleApi.d.ts +34 -0
  3. package/dist/api/LegacyToddleApi.js +178 -0
  4. package/dist/api/LegacyToddleApi.js.map +1 -0
  5. package/dist/api/ToddleApiV2.d.ts +77 -0
  6. package/dist/api/ToddleApiV2.js +271 -0
  7. package/dist/api/ToddleApiV2.js.map +1 -0
  8. package/dist/api/api.d.ts +49 -0
  9. package/dist/api/api.js +276 -0
  10. package/dist/api/api.js.map +1 -0
  11. package/dist/api/apiTypes.d.ts +125 -0
  12. package/dist/api/apiTypes.js +11 -0
  13. package/dist/api/apiTypes.js.map +1 -0
  14. package/dist/api/headers.d.ts +10 -0
  15. package/dist/api/headers.js +36 -0
  16. package/dist/api/headers.js.map +1 -0
  17. package/dist/api/template.d.ts +5 -0
  18. package/dist/api/template.js +7 -0
  19. package/dist/api/template.js.map +1 -0
  20. package/dist/component/ToddleComponent.d.ts +45 -0
  21. package/dist/component/ToddleComponent.js +373 -0
  22. package/dist/component/ToddleComponent.js.map +1 -0
  23. package/dist/component/actionUtils.d.ts +2 -0
  24. package/dist/component/actionUtils.js +56 -0
  25. package/dist/component/actionUtils.js.map +1 -0
  26. package/dist/component/component.types.d.ts +313 -0
  27. package/dist/component/component.types.js +9 -0
  28. package/dist/component/component.types.js.map +1 -0
  29. package/dist/component/isPageComponent.d.ts +2 -0
  30. package/dist/component/isPageComponent.js +3 -0
  31. package/dist/component/isPageComponent.js.map +1 -0
  32. package/dist/formula/ToddleFormula.d.ts +15 -0
  33. package/dist/formula/ToddleFormula.js +20 -0
  34. package/dist/formula/ToddleFormula.js.map +1 -0
  35. package/dist/formula/formula.d.ts +103 -0
  36. package/dist/formula/formula.js +186 -0
  37. package/dist/formula/formula.js.map +1 -0
  38. package/dist/formula/formulaTypes.d.ts +30 -0
  39. package/dist/formula/formulaTypes.js +2 -0
  40. package/dist/formula/formulaTypes.js.map +1 -0
  41. package/dist/formula/formulaUtils.d.ts +18 -0
  42. package/dist/formula/formulaUtils.js +240 -0
  43. package/dist/formula/formulaUtils.js.map +1 -0
  44. package/dist/styling/className.d.ts +2 -0
  45. package/dist/styling/className.js +52 -0
  46. package/dist/styling/className.js.map +1 -0
  47. package/dist/styling/style.css.d.ts +5 -0
  48. package/dist/styling/style.css.js +242 -0
  49. package/dist/styling/style.css.js.map +1 -0
  50. package/dist/styling/theme.const.d.ts +3 -0
  51. package/dist/styling/theme.const.js +381 -0
  52. package/dist/styling/theme.const.js.map +1 -0
  53. package/dist/styling/theme.d.ts +72 -0
  54. package/dist/styling/theme.js +200 -0
  55. package/dist/styling/theme.js.map +1 -0
  56. package/dist/styling/variantSelector.d.ts +123 -0
  57. package/dist/styling/variantSelector.js +25 -0
  58. package/dist/styling/variantSelector.js.map +1 -0
  59. package/dist/types.d.ts +97 -0
  60. package/dist/types.js +2 -0
  61. package/dist/types.js.map +1 -0
  62. package/dist/utils/collections.d.ts +21 -0
  63. package/dist/utils/collections.js +75 -0
  64. package/dist/utils/collections.js.map +1 -0
  65. package/dist/utils/customElements.d.ts +6 -0
  66. package/dist/utils/customElements.js +15 -0
  67. package/dist/utils/customElements.js.map +1 -0
  68. package/dist/utils/hash.d.ts +1 -0
  69. package/dist/utils/hash.js +17 -0
  70. package/dist/utils/hash.js.map +1 -0
  71. package/dist/utils/json.d.ts +5 -0
  72. package/dist/utils/json.js +16 -0
  73. package/dist/utils/json.js.map +1 -0
  74. package/dist/utils/sha1.d.ts +2 -0
  75. package/dist/utils/sha1.js +13 -0
  76. package/dist/utils/sha1.js.map +1 -0
  77. package/dist/utils/url.d.ts +5 -0
  78. package/dist/utils/url.js +27 -0
  79. package/dist/utils/url.js.map +1 -0
  80. package/dist/utils/util.d.ts +3 -0
  81. package/dist/utils/util.js +4 -0
  82. package/dist/utils/util.js.map +1 -0
  83. package/package.json +18 -0
  84. package/src/api/LegacyToddleApi.ts +205 -0
  85. package/src/api/ToddleApiV2.ts +331 -0
  86. package/src/api/api.test.ts +319 -0
  87. package/src/api/api.ts +414 -0
  88. package/src/api/apiTypes.ts +145 -0
  89. package/src/api/headers.ts +41 -0
  90. package/src/api/template.ts +10 -0
  91. package/src/component/ToddleComponent.actionReferences.test.ts +75 -0
  92. package/src/component/ToddleComponent.formulasInComponent.test.ts +234 -0
  93. package/src/component/ToddleComponent.ts +470 -0
  94. package/src/component/actionUtils.ts +61 -0
  95. package/src/component/component.types.ts +362 -0
  96. package/src/component/isPageComponent.ts +6 -0
  97. package/src/formula/ToddleFormula.ts +30 -0
  98. package/src/formula/formula.ts +355 -0
  99. package/src/formula/formulaTypes.ts +45 -0
  100. package/src/formula/formulaUtils.ts +287 -0
  101. package/src/styling/className.test.ts +19 -0
  102. package/src/styling/className.ts +73 -0
  103. package/src/styling/style.css.ts +309 -0
  104. package/src/styling/theme.const.ts +390 -0
  105. package/src/styling/theme.ts +339 -0
  106. package/src/styling/variantSelector.ts +168 -0
  107. package/src/types.ts +158 -0
  108. package/src/utils/collections.test.ts +57 -0
  109. package/src/utils/collections.ts +122 -0
  110. package/src/utils/customElements.test.ts +40 -0
  111. package/src/utils/customElements.ts +16 -0
  112. package/src/utils/hash.test.ts +32 -0
  113. package/src/utils/hash.ts +18 -0
  114. package/src/utils/json.ts +18 -0
  115. package/src/utils/sha1.test.ts +50 -0
  116. package/src/utils/sha1.ts +17 -0
  117. package/src/utils/url.test.ts +17 -0
  118. package/src/utils/url.ts +33 -0
  119. package/src/utils/util.ts +8 -0
@@ -0,0 +1,276 @@
1
+ import { applyFormula } from '../formula/formula';
2
+ import { omitKeys, sortObjectEntries } from '../utils/collections';
3
+ import { hash } from '../utils/hash';
4
+ import { isDefined, isObject, toBoolean } from '../utils/util';
5
+ import { ApiMethod } from './apiTypes';
6
+ import { LegacyToddleApi } from './LegacyToddleApi';
7
+ import { ToddleApiV2 } from './ToddleApiV2';
8
+ export const NON_BODY_RESPONSE_CODES = [101, 204, 205, 304];
9
+ export const isLegacyApi = (api) => api instanceof LegacyToddleApi ? true : !('version' in api);
10
+ export const createApiRequest = ({ api, formulaContext, baseUrl, defaultHeaders, }) => {
11
+ const url = getUrl(api, formulaContext, baseUrl);
12
+ const requestSettings = getRequestSettings({
13
+ api,
14
+ formulaContext,
15
+ defaultHeaders,
16
+ });
17
+ return { url, requestSettings };
18
+ };
19
+ export const getUrl = (api, formulaContext, baseUrl) => {
20
+ let urlPathname = '';
21
+ let urlQueryParams = new URLSearchParams();
22
+ let parsedUrl;
23
+ const url = applyFormula(api.url, formulaContext);
24
+ if (['string', 'number'].includes(typeof url)) {
25
+ const urlInput = typeof url === 'number' ? String(url) : url;
26
+ try {
27
+ // Try to parse the URL to extract potential path and query parameters
28
+ parsedUrl = new URL(urlInput, baseUrl);
29
+ urlPathname = parsedUrl.pathname;
30
+ urlQueryParams = parsedUrl.searchParams;
31
+ // eslint-disable-next-line no-empty
32
+ }
33
+ catch { }
34
+ }
35
+ const pathParams = getRequestPath(api.path, formulaContext);
36
+ // Combine potential path parameters from the url declaration with the actual path parameters
37
+ const path = `${urlPathname}${pathParams.length > 0 && !urlPathname.endsWith('/') ? '/' : ''}${pathParams}`;
38
+ // Combine potential query parameters from the url declaration with the actual query parameters
39
+ const queryParams = new URLSearchParams([
40
+ ...urlQueryParams,
41
+ ...getRequestQueryParams(api.queryParams, formulaContext),
42
+ ]);
43
+ const queryString = [...queryParams.entries()].length > 0 ? `?${queryParams.toString()}` : '';
44
+ if (parsedUrl) {
45
+ const combinedUrl = new URL(parsedUrl.origin, baseUrl);
46
+ combinedUrl.pathname = path;
47
+ combinedUrl.search = queryParams.toString();
48
+ return combinedUrl;
49
+ }
50
+ else {
51
+ return new URL(`${path}${queryString}`, baseUrl);
52
+ }
53
+ };
54
+ const HttpMethodsWithAllowedBody = [
55
+ ApiMethod.POST,
56
+ ApiMethod.DELETE,
57
+ ApiMethod.PUT,
58
+ ApiMethod.PATCH,
59
+ ApiMethod.OPTIONS,
60
+ ];
61
+ export const applyAbortSignal = (api, requestSettings, formulaContext) => {
62
+ if (api.timeout) {
63
+ const timeout = applyFormula(api.timeout.formula, formulaContext);
64
+ if (typeof timeout === 'number' && !Number.isNaN(timeout) && timeout > 0) {
65
+ requestSettings.signal = AbortSignal.timeout(timeout);
66
+ }
67
+ }
68
+ };
69
+ const getRequestSettings = ({ api, formulaContext, defaultHeaders, }) => {
70
+ const method = Object.values(ApiMethod).includes(api.method)
71
+ ? api.method
72
+ : ApiMethod.GET;
73
+ const headers = getRequestHeaders({
74
+ apiHeaders: api.headers,
75
+ formulaContext,
76
+ defaultHeaders,
77
+ });
78
+ const body = getRequestBody({ api, formulaContext, headers, method });
79
+ if (headers.get('content-type') === 'multipart/form-data') {
80
+ headers.delete('content-type');
81
+ }
82
+ const requestSettings = {
83
+ method,
84
+ headers,
85
+ body,
86
+ };
87
+ applyAbortSignal(api, requestSettings, formulaContext);
88
+ return requestSettings;
89
+ };
90
+ export const getRequestPath = (path, formulaContext) => sortObjectEntries(path ?? {}, ([_, p]) => p.index)
91
+ .map(([_, p]) => applyFormula(p.formula, formulaContext))
92
+ .join('/');
93
+ export const getRequestQueryParams = (params, formulaContext) => {
94
+ const queryParams = new URLSearchParams();
95
+ Object.entries(params ?? {}).forEach(([key, param]) => {
96
+ const enabled = isDefined(param.enabled)
97
+ ? applyFormula(param.enabled, formulaContext)
98
+ : true;
99
+ if (!enabled) {
100
+ return;
101
+ }
102
+ const value = applyFormula(param.formula, formulaContext);
103
+ if (!isDefined(value)) {
104
+ // Ignore null/undefined values
105
+ return;
106
+ }
107
+ if (Array.isArray(value)) {
108
+ // Support encoding 1-dimensional arrays
109
+ value.forEach((v) => queryParams.append(key, String(v)));
110
+ }
111
+ else if (isObject(value)) {
112
+ // Support encoding (nested) objects, but cast any non-object to a String
113
+ const encodeObject = (obj, prefix) => {
114
+ Object.entries(obj).forEach(([key, val]) => {
115
+ if (!Array.isArray(val) && isObject(val)) {
116
+ return encodeObject(val, `${prefix}[${key}]`);
117
+ }
118
+ else {
119
+ queryParams.set(`${prefix}[${key}]`, String(val));
120
+ }
121
+ });
122
+ };
123
+ encodeObject(value, key);
124
+ }
125
+ else {
126
+ queryParams.set(key, String(value));
127
+ }
128
+ });
129
+ return queryParams;
130
+ };
131
+ export const getRequestHeaders = ({ apiHeaders, formulaContext, defaultHeaders, }) => {
132
+ const headers = new Headers(defaultHeaders);
133
+ Object.entries(apiHeaders ?? {}).forEach(([key, param]) => {
134
+ const enabled = isDefined(param.enabled)
135
+ ? applyFormula(param.enabled, formulaContext)
136
+ : true;
137
+ if (enabled) {
138
+ const value = applyFormula(param.formula, formulaContext);
139
+ if (isDefined(value)) {
140
+ try {
141
+ headers.set(key.trim(), (typeof value === 'string' ? value : String(value)).trim());
142
+ // eslint-disable-next-line no-empty
143
+ }
144
+ catch { }
145
+ }
146
+ }
147
+ });
148
+ return headers;
149
+ };
150
+ export const getBaseUrl = ({ origin, url, }) => !isDefined(url) || url === '' || url.startsWith('/') ? origin + url : url;
151
+ /**
152
+ * Calculate the hash of a Request object based on its properties
153
+ */
154
+ export const requestHash = (url, request) => hash(JSON.stringify({
155
+ url: url.href,
156
+ method: request.method,
157
+ headers: omitKeys(Object.fromEntries(Object.entries(request.headers ?? {})), ['host', 'cookie']),
158
+ body: request.body ?? null,
159
+ }));
160
+ export const isApiError = ({ apiName, response, formulaContext, errorFormula, performance, }) => {
161
+ const errorFormulaRes = errorFormula
162
+ ? applyFormula(errorFormula.formula, {
163
+ component: formulaContext.component,
164
+ package: formulaContext.package,
165
+ toddle: formulaContext.toddle,
166
+ data: {
167
+ Attributes: {},
168
+ Args: formulaContext.data.Args,
169
+ Apis: {
170
+ // The errorFormula will only have access to the data of the current API
171
+ [apiName]: {
172
+ isLoading: false,
173
+ data: response.body,
174
+ error: null,
175
+ response: {
176
+ status: response.status,
177
+ headers: response.headers,
178
+ performance,
179
+ },
180
+ },
181
+ },
182
+ },
183
+ env: formulaContext.env,
184
+ })
185
+ : null;
186
+ if (errorFormulaRes === null || errorFormulaRes === undefined) {
187
+ return !response.ok;
188
+ }
189
+ return toBoolean(errorFormulaRes);
190
+ };
191
+ const getRequestBody = ({ api, formulaContext, headers, method, }) => {
192
+ if (!api.body || !HttpMethodsWithAllowedBody.includes(method)) {
193
+ return;
194
+ }
195
+ const body = applyFormula(api.body, formulaContext);
196
+ if (!body) {
197
+ return;
198
+ }
199
+ switch (headers.get('content-type')) {
200
+ case 'application/x-www-form-urlencoded': {
201
+ if (typeof body === 'object' && body !== null) {
202
+ return Object.entries(body)
203
+ .map(([key, value]) => {
204
+ if (Array.isArray(value)) {
205
+ return value
206
+ .map((v) => `${encodeURIComponent(key)}=${encodeURIComponent(v)}`)
207
+ .join('&');
208
+ }
209
+ else {
210
+ return `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`;
211
+ }
212
+ })
213
+ .join('&');
214
+ }
215
+ return '';
216
+ }
217
+ case 'multipart/form-data': {
218
+ const formData = new FormData();
219
+ if (typeof body === 'object' && body !== null) {
220
+ Object.entries(body).forEach(([key, value]) => {
221
+ formData.set(key, value);
222
+ });
223
+ }
224
+ return formData;
225
+ }
226
+ case 'text/plain':
227
+ return String(body);
228
+ default:
229
+ return JSON.stringify(body);
230
+ }
231
+ };
232
+ export const createApiEvent = (eventName, detail) => {
233
+ return new CustomEvent(eventName, {
234
+ detail,
235
+ });
236
+ };
237
+ const compareApiDependencies = (a, b) => {
238
+ const isADependentOnB = a.apiReferences.has(b.name);
239
+ const isBDependentOnA = b.apiReferences.has(a.name);
240
+ if (isADependentOnB === isBDependentOnA) {
241
+ return 0;
242
+ }
243
+ // 1 means A goes last - hence B is evaluated before A
244
+ return isADependentOnB ? 1 : -1;
245
+ };
246
+ export const sortApiObjects = (apis) => {
247
+ const apiMap = new Map();
248
+ const getApi = (apiObj, key) => {
249
+ let api = apiMap.get(key);
250
+ if (!api) {
251
+ api =
252
+ apiObj.version === 2
253
+ ? new ToddleApiV2(apiObj, key,
254
+ // global formulas are not required for sorting
255
+ {
256
+ formulas: {},
257
+ packages: {},
258
+ })
259
+ : new LegacyToddleApi(apiObj, key,
260
+ // global formulas are not required for sorting
261
+ {
262
+ formulas: {},
263
+ packages: {},
264
+ });
265
+ apiMap.set(key, api);
266
+ }
267
+ return api;
268
+ };
269
+ return [...apis].sort(([aKey, aObj], [bKey, bObj]) => {
270
+ const a = getApi(aObj, aKey);
271
+ const b = getApi(bObj, bKey);
272
+ return compareApiDependencies(a, b);
273
+ });
274
+ };
275
+ export const sortApiEntries = (apis) => [...apis].sort(([_, a], [__, b]) => compareApiDependencies(a, b));
276
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ import type { EventModel } from '../component/component.types';
2
+ import type { Formula } from '../formula/formula';
3
+ import type { ToddleMetadata } from '../types';
4
+ export type ComponentAPI = LegacyComponentAPI | ApiRequest;
5
+ export interface LegacyComponentAPI {
6
+ name: string;
7
+ type: 'REST';
8
+ autoFetch?: Formula | null;
9
+ url?: Formula;
10
+ path?: {
11
+ formula: Formula;
12
+ }[];
13
+ proxy?: boolean;
14
+ queryParams?: Record<string, {
15
+ name: string;
16
+ formula: Formula;
17
+ }>;
18
+ headers?: Record<string, Formula> | Formula;
19
+ method?: 'GET' | 'POST' | 'DELETE' | 'PUT';
20
+ body?: Formula;
21
+ auth?: {
22
+ type: 'Bearer id_token' | 'Bearer access_token';
23
+ };
24
+ throttle?: number | null;
25
+ debounce?: number | null;
26
+ onCompleted: EventModel | null;
27
+ onFailed: EventModel | null;
28
+ version?: never;
29
+ }
30
+ export interface LegacyApiStatus {
31
+ data: unknown;
32
+ isLoading: boolean;
33
+ error: unknown;
34
+ response?: never;
35
+ }
36
+ export declare enum ApiMethod {
37
+ GET = "GET",
38
+ POST = "POST",
39
+ DELETE = "DELETE",
40
+ PUT = "PUT",
41
+ PATCH = "PATCH",
42
+ HEAD = "HEAD",
43
+ OPTIONS = "OPTIONS"
44
+ }
45
+ export type RedirectStatusCode = 300 | 301 | 302 | 303 | 304 | 307 | 308;
46
+ export type ApiParserMode = 'auto' | 'text' | 'json' | 'event-stream' | 'json-stream' | 'blob';
47
+ export interface ApiBase extends ToddleMetadata {
48
+ url?: Formula;
49
+ path?: Record<string, {
50
+ formula: Formula;
51
+ index: number;
52
+ }>;
53
+ queryParams?: Record<string, {
54
+ formula: Formula;
55
+ enabled?: Formula | null;
56
+ }>;
57
+ }
58
+ export interface ApiRequest extends ApiBase {
59
+ version: 2;
60
+ name: string;
61
+ type: 'http' | 'ws';
62
+ autoFetch?: Formula | null;
63
+ headers?: Record<string, {
64
+ formula: Formula;
65
+ enabled?: Formula | null;
66
+ }>;
67
+ method?: ApiMethod;
68
+ body?: Formula;
69
+ inputs: Record<string, {
70
+ formula: Formula | null;
71
+ }>;
72
+ service?: string | null;
73
+ servicePath?: string | null;
74
+ server?: {
75
+ proxy?: {
76
+ enabled: {
77
+ formula: Formula;
78
+ };
79
+ } | null;
80
+ ssr?: {
81
+ enabled?: {
82
+ formula: Formula;
83
+ } | null;
84
+ };
85
+ };
86
+ client?: {
87
+ debounce?: {
88
+ formula: Formula;
89
+ } | null;
90
+ onCompleted?: EventModel | null;
91
+ onFailed?: EventModel | null;
92
+ onMessage?: EventModel | null;
93
+ parserMode: ApiParserMode;
94
+ };
95
+ redirectRules?: Record<string, {
96
+ formula: Formula;
97
+ statusCode?: RedirectStatusCode | null;
98
+ index: number;
99
+ }> | null;
100
+ isError?: {
101
+ formula: Formula;
102
+ } | null;
103
+ timeout?: {
104
+ formula: Formula;
105
+ } | null;
106
+ }
107
+ export interface ApiStatus {
108
+ data: unknown;
109
+ isLoading: boolean;
110
+ error: unknown;
111
+ response?: {
112
+ status?: number;
113
+ headers?: Record<string, string> | null;
114
+ performance?: ApiPerformance;
115
+ debug?: null | unknown;
116
+ };
117
+ }
118
+ export interface ApiPerformance {
119
+ requestStart: number | null;
120
+ responseStart: number | null;
121
+ responseEnd: number | null;
122
+ }
123
+ export interface ToddleRequestInit extends RequestInit {
124
+ headers: Headers;
125
+ }
@@ -0,0 +1,11 @@
1
+ export var ApiMethod;
2
+ (function (ApiMethod) {
3
+ ApiMethod["GET"] = "GET";
4
+ ApiMethod["POST"] = "POST";
5
+ ApiMethod["DELETE"] = "DELETE";
6
+ ApiMethod["PUT"] = "PUT";
7
+ ApiMethod["PATCH"] = "PATCH";
8
+ ApiMethod["HEAD"] = "HEAD";
9
+ ApiMethod["OPTIONS"] = "OPTIONS";
10
+ })(ApiMethod || (ApiMethod = {}));
11
+ //# sourceMappingURL=apiTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiTypes.js","sourceRoot":"","sources":["../../src/api/apiTypes.ts"],"names":[],"mappings":"AAkCA,MAAM,CAAN,IAAY,SAQX;AARD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,0BAAa,CAAA;IACb,8BAAiB,CAAA;IACjB,wBAAW,CAAA;IACX,4BAAe,CAAA;IACf,0BAAa,CAAA;IACb,gCAAmB,CAAA;AACrB,CAAC,EARW,SAAS,KAAT,SAAS,QAQpB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Checks if a header is a json (content-type) header
3
+ * Also supports edge cases like application/vnd.api+json and application/vnd.contentful.delivery.v1+json
4
+ * See https://jsonapi.org/#mime-types
5
+ */
6
+ export declare const isJsonHeader: (header?: string | null) => boolean;
7
+ export declare const isTextHeader: (header?: string | null) => boolean;
8
+ export declare const isEventStreamHeader: (header?: string | null) => boolean;
9
+ export declare const isJsonStreamHeader: (header?: string | null) => boolean;
10
+ export declare const isImageHeader: (header?: string | null) => boolean;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Checks if a header is a json (content-type) header
3
+ * Also supports edge cases like application/vnd.api+json and application/vnd.contentful.delivery.v1+json
4
+ * See https://jsonapi.org/#mime-types
5
+ */
6
+ export const isJsonHeader = (header) => {
7
+ if (typeof header !== 'string') {
8
+ return false;
9
+ }
10
+ return /^application\/(json|.*\+json)/.test(header);
11
+ };
12
+ export const isTextHeader = (header) => {
13
+ if (typeof header !== 'string') {
14
+ return false;
15
+ }
16
+ return /^(text\/|application\/x-www-form-urlencoded|application\/(xml|.*\+xml))/.test(header);
17
+ };
18
+ export const isEventStreamHeader = (header) => {
19
+ if (typeof header !== 'string') {
20
+ return false;
21
+ }
22
+ return /^text\/event-stream/.test(header);
23
+ };
24
+ export const isJsonStreamHeader = (header) => {
25
+ if (typeof header !== 'string') {
26
+ return false;
27
+ }
28
+ return /^(application\/stream\+json|application\/x-ndjson)/.test(header);
29
+ };
30
+ export const isImageHeader = (header) => {
31
+ if (typeof header !== 'string') {
32
+ return false;
33
+ }
34
+ return /^image\//.test(header);
35
+ };
36
+ //# sourceMappingURL=headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/api/headers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAE,EAAE;IACrD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAE,EAAE;IACrD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,yEAAyE,CAAC,IAAI,CACnF,MAAM,CACP,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAsB,EAAE,EAAE;IAC5D,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC3C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAsB,EAAE,EAAE;IAC3D,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,oDAAoD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC1E,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAsB,EAAE,EAAE;IACtD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare const STRING_TEMPLATE: (type: keyof typeof templateTypes, name: string) => string;
2
+ declare const templateTypes: {
3
+ cookies: string;
4
+ };
5
+ export {};
@@ -0,0 +1,7 @@
1
+ export const STRING_TEMPLATE = (type, name) => {
2
+ return `{{ ${templateTypes[type]}.${name} }}`;
3
+ };
4
+ const templateTypes = {
5
+ cookies: 'cookies',
6
+ };
7
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/api/template.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAgC,EAChC,IAAY,EACZ,EAAE;IACF,OAAO,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAA;AAC/C,CAAC,CAAA;AAED,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE,SAAS;CACnB,CAAA"}
@@ -0,0 +1,45 @@
1
+ import { LegacyToddleApi } from '../api/LegacyToddleApi';
2
+ import { ToddleApiV2 } from '../api/ToddleApiV2';
3
+ import type { Formula } from '../formula/formula';
4
+ import type { GlobalFormulas } from '../formula/formulaTypes';
5
+ import type { ActionModel, Component, NodeModel } from './component.types';
6
+ export declare class ToddleComponent<Handler> {
7
+ private component;
8
+ private globalFormulas;
9
+ private getComponent;
10
+ packageName?: string;
11
+ constructor({ component, getComponent, packageName, globalFormulas, }: {
12
+ component: Component;
13
+ getComponent: (name: string, packageName?: string) => Component | undefined;
14
+ packageName: string | undefined;
15
+ globalFormulas: GlobalFormulas<Handler>;
16
+ });
17
+ get uniqueSubComponents(): ToddleComponent<Handler>[];
18
+ get formulaReferences(): Set<string>;
19
+ get actionReferences(): Set<string>;
20
+ /**
21
+ * Traverse all formulas in the component.
22
+ * @returns An iterable that yields the path and formula.
23
+ */
24
+ formulasInComponent(): Generator<[(string | number)[], Formula]>;
25
+ /**
26
+ * Traverse all actions in the component.
27
+ * @returns An iterable that yields the path and action.
28
+ */
29
+ actionModelsInComponent(): Generator<[(string | number)[], ActionModel]>;
30
+ get formulas(): Record<string, import("./component.types").ComponentFormula> | undefined;
31
+ get name(): string;
32
+ get route(): import("./component.types").PageRoute | null | undefined;
33
+ get attributes(): Record<string, import("./component.types").ComponentAttribute>;
34
+ get variables(): Record<string, import("./component.types").ComponentVariable>;
35
+ get workflows(): Record<string, import("./component.types").ComponentWorkflow> | undefined;
36
+ get apis(): {
37
+ [k: string]: LegacyToddleApi<Handler> | ToddleApiV2<Handler>;
38
+ };
39
+ get nodes(): Record<string, NodeModel>;
40
+ get events(): import("./component.types").ComponentEvent[] | undefined;
41
+ get onLoad(): import("./component.types").EventModel | undefined;
42
+ get onAttributeChange(): import("./component.types").EventModel | undefined;
43
+ get isPage(): boolean;
44
+ get contexts(): Record<string, import("./component.types").ComponentContext> | undefined;
45
+ }