@cardelli/ambit 0.1.4 → 0.2.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 (141) hide show
  1. package/esm/cli/commands/create/index.d.ts +2 -0
  2. package/esm/cli/commands/create/index.d.ts.map +1 -0
  3. package/esm/cli/commands/create/index.js +292 -0
  4. package/esm/cli/commands/create/machine.d.ts +33 -0
  5. package/esm/cli/commands/create/machine.d.ts.map +1 -0
  6. package/esm/cli/commands/create/machine.js +162 -0
  7. package/esm/cli/commands/deploy/index.d.ts +2 -0
  8. package/esm/cli/commands/deploy/index.d.ts.map +1 -0
  9. package/esm/cli/commands/deploy/index.js +290 -0
  10. package/esm/cli/commands/deploy/machine.d.ts +52 -0
  11. package/esm/cli/commands/deploy/machine.d.ts.map +1 -0
  12. package/esm/cli/commands/deploy/machine.js +116 -0
  13. package/esm/cli/commands/deploy/modes.d.ts +18 -0
  14. package/esm/cli/commands/deploy/modes.d.ts.map +1 -0
  15. package/esm/cli/commands/deploy/modes.js +152 -0
  16. package/esm/cli/commands/destroy/app.d.ts +2 -0
  17. package/esm/cli/commands/destroy/app.d.ts.map +1 -0
  18. package/esm/cli/commands/destroy/app.js +173 -0
  19. package/esm/cli/commands/destroy/index.d.ts +2 -0
  20. package/esm/cli/commands/destroy/index.d.ts.map +1 -0
  21. package/esm/cli/commands/destroy/index.js +63 -0
  22. package/esm/cli/commands/destroy/network.d.ts +2 -0
  23. package/esm/cli/commands/destroy/network.d.ts.map +1 -0
  24. package/esm/cli/commands/destroy/network.js +210 -0
  25. package/esm/cli/commands/doctor.d.ts.map +1 -0
  26. package/esm/cli/commands/doctor.js +295 -0
  27. package/esm/{src/cli → cli}/commands/list.d.ts.map +1 -1
  28. package/esm/{src/cli → cli}/commands/list.js +39 -54
  29. package/esm/cli/commands/status.d.ts.map +1 -0
  30. package/esm/cli/commands/status.js +331 -0
  31. package/esm/cli/mod.d.ts.map +1 -0
  32. package/esm/{src/cli → cli}/mod.js +4 -4
  33. package/esm/deno.d.ts +4 -18
  34. package/esm/deno.js +5 -19
  35. package/esm/deps/jsr.io/@std/path/1.1.4/constants.d.ts +1 -1
  36. package/esm/deps/jsr.io/@zod/zod/4.3.6/src/v4/core/json-schema-generator.d.ts +1 -1
  37. package/esm/lib/args.d.ts +11 -0
  38. package/esm/lib/args.d.ts.map +1 -0
  39. package/esm/lib/args.js +28 -0
  40. package/esm/lib/cli.d.ts +0 -2
  41. package/esm/lib/cli.d.ts.map +1 -1
  42. package/esm/lib/cli.js +41 -27
  43. package/esm/lib/command.d.ts +21 -49
  44. package/esm/lib/command.d.ts.map +1 -1
  45. package/esm/lib/command.js +55 -95
  46. package/esm/lib/machine.d.ts +11 -0
  47. package/esm/lib/machine.d.ts.map +1 -0
  48. package/esm/lib/machine.js +15 -0
  49. package/esm/lib/output.d.ts +3 -2
  50. package/esm/lib/output.d.ts.map +1 -1
  51. package/esm/lib/output.js +25 -11
  52. package/esm/lib/result.d.ts +18 -7
  53. package/esm/lib/result.d.ts.map +1 -1
  54. package/esm/lib/result.js +46 -1
  55. package/esm/main.d.ts +6 -6
  56. package/esm/main.d.ts.map +1 -1
  57. package/esm/main.js +7 -9
  58. package/esm/providers/fly.d.ts +81 -0
  59. package/esm/providers/fly.d.ts.map +1 -0
  60. package/esm/providers/fly.js +372 -0
  61. package/esm/providers/tailscale.d.ts +31 -0
  62. package/esm/providers/tailscale.d.ts.map +1 -0
  63. package/esm/providers/tailscale.js +150 -0
  64. package/esm/{src/schemas → schemas}/fly.d.ts +1 -11
  65. package/esm/schemas/fly.d.ts.map +1 -0
  66. package/esm/{src/schemas → schemas}/fly.js +14 -56
  67. package/esm/{src/schemas → schemas}/tailscale.d.ts +1 -2
  68. package/esm/schemas/tailscale.d.ts.map +1 -0
  69. package/esm/{src/schemas → schemas}/tailscale.js +2 -3
  70. package/esm/src/{docker/router → router}/Dockerfile +0 -11
  71. package/esm/src/router/start.sh +101 -0
  72. package/esm/util/constants.d.ts +13 -0
  73. package/esm/util/constants.d.ts.map +1 -0
  74. package/esm/util/constants.js +34 -0
  75. package/esm/{src → util}/credentials.d.ts +0 -1
  76. package/esm/util/credentials.d.ts.map +1 -0
  77. package/esm/{src → util}/credentials.js +3 -5
  78. package/esm/{src → util}/discovery.d.ts +20 -4
  79. package/esm/util/discovery.d.ts.map +1 -0
  80. package/esm/{src → util}/discovery.js +38 -15
  81. package/esm/util/fly-transforms.d.ts +27 -0
  82. package/esm/util/fly-transforms.d.ts.map +1 -0
  83. package/esm/util/fly-transforms.js +87 -0
  84. package/esm/{src → util}/guard.d.ts +1 -2
  85. package/esm/util/guard.d.ts.map +1 -0
  86. package/esm/{src → util}/guard.js +27 -27
  87. package/esm/util/naming.d.ts +5 -0
  88. package/esm/util/naming.d.ts.map +1 -0
  89. package/esm/util/naming.js +12 -0
  90. package/esm/{src → util}/resolve.d.ts +2 -3
  91. package/esm/util/resolve.d.ts.map +1 -0
  92. package/esm/{src → util}/resolve.js +1 -2
  93. package/esm/util/session.d.ts +16 -0
  94. package/esm/util/session.d.ts.map +1 -0
  95. package/esm/util/session.js +19 -0
  96. package/esm/util/tailscale-local.d.ts +13 -0
  97. package/esm/util/tailscale-local.d.ts.map +1 -0
  98. package/esm/util/tailscale-local.js +63 -0
  99. package/esm/{src → util}/template.d.ts +2 -4
  100. package/esm/util/template.d.ts.map +1 -0
  101. package/esm/{src → util}/template.js +14 -17
  102. package/package.json +1 -43
  103. package/esm/lib/paths.d.ts +0 -3
  104. package/esm/lib/paths.d.ts.map +0 -1
  105. package/esm/lib/paths.js +0 -5
  106. package/esm/src/cli/commands/create.d.ts +0 -2
  107. package/esm/src/cli/commands/create.d.ts.map +0 -1
  108. package/esm/src/cli/commands/create.js +0 -294
  109. package/esm/src/cli/commands/deploy.d.ts +0 -2
  110. package/esm/src/cli/commands/deploy.d.ts.map +0 -1
  111. package/esm/src/cli/commands/deploy.js +0 -426
  112. package/esm/src/cli/commands/destroy.d.ts +0 -2
  113. package/esm/src/cli/commands/destroy.d.ts.map +0 -1
  114. package/esm/src/cli/commands/destroy.js +0 -340
  115. package/esm/src/cli/commands/doctor.d.ts.map +0 -1
  116. package/esm/src/cli/commands/doctor.js +0 -141
  117. package/esm/src/cli/commands/status.d.ts.map +0 -1
  118. package/esm/src/cli/commands/status.js +0 -152
  119. package/esm/src/cli/mod.d.ts.map +0 -1
  120. package/esm/src/credentials.d.ts.map +0 -1
  121. package/esm/src/discovery.d.ts.map +0 -1
  122. package/esm/src/docker/router/start.sh +0 -146
  123. package/esm/src/guard.d.ts.map +0 -1
  124. package/esm/src/providers/fly.d.ts +0 -70
  125. package/esm/src/providers/fly.d.ts.map +0 -1
  126. package/esm/src/providers/fly.js +0 -411
  127. package/esm/src/providers/tailscale.d.ts +0 -31
  128. package/esm/src/providers/tailscale.d.ts.map +0 -1
  129. package/esm/src/providers/tailscale.js +0 -195
  130. package/esm/src/resolve.d.ts.map +0 -1
  131. package/esm/src/schemas/config.d.ts +0 -5
  132. package/esm/src/schemas/config.d.ts.map +0 -1
  133. package/esm/src/schemas/config.js +0 -22
  134. package/esm/src/schemas/fly.d.ts.map +0 -1
  135. package/esm/src/schemas/tailscale.d.ts.map +0 -1
  136. package/esm/src/template.d.ts.map +0 -1
  137. /package/esm/{src/cli → cli}/commands/doctor.d.ts +0 -0
  138. /package/esm/{src/cli → cli}/commands/list.d.ts +0 -0
  139. /package/esm/{src/cli → cli}/commands/status.d.ts +0 -0
  140. /package/esm/{src/cli → cli}/mod.d.ts +0 -0
  141. /package/esm/src/{docker/router → router}/fly.toml +0 -0
@@ -1,195 +0,0 @@
1
- // =============================================================================
2
- // Tailscale API Client
3
- // =============================================================================
4
- import "../../_dnt.polyfills.js";
5
- import { commandExists, die } from "../../lib/cli.js";
6
- import { runCommand } from "../../lib/command.js";
7
- import { createAuthKeyPayload, TailscaleDevicesListSchema, } from "../schemas/tailscale.js";
8
- // =============================================================================
9
- // Constants
10
- // =============================================================================
11
- const API_BASE = "https://api.tailscale.com/api/v2";
12
- // =============================================================================
13
- // Create Tailscale Provider
14
- // =============================================================================
15
- export const createTailscaleProvider = (tailnet, apiKey) => {
16
- const headers = () => ({
17
- "Content-Type": "application/json",
18
- Accept: "application/json",
19
- Authorization: `Basic ${btoa(apiKey + ":")}`,
20
- });
21
- const request = async (method, path, body) => {
22
- try {
23
- const response = await fetch(`${API_BASE}${path}`, {
24
- method,
25
- headers: headers(),
26
- body: body ? JSON.stringify(body) : undefined,
27
- });
28
- if (!response.ok) {
29
- const text = await response.text();
30
- return {
31
- ok: false,
32
- status: response.status,
33
- error: text || `HTTP ${response.status}`,
34
- };
35
- }
36
- const text = await response.text();
37
- if (!text) {
38
- return { ok: true, status: response.status };
39
- }
40
- return { ok: true, status: response.status, data: JSON.parse(text) };
41
- }
42
- catch (error) {
43
- return {
44
- ok: false,
45
- status: 0,
46
- error: error instanceof Error ? error.message : String(error),
47
- };
48
- }
49
- };
50
- const effectiveTailnet = tailnet || "-";
51
- return {
52
- async validateApiKey() {
53
- const result = await request("GET", `/tailnet/${effectiveTailnet}/devices`);
54
- return result.ok;
55
- },
56
- async createAuthKey(opts) {
57
- const payload = createAuthKeyPayload(opts ?? {});
58
- const result = await request("POST", `/tailnet/${effectiveTailnet}/keys`, payload);
59
- if (!result.ok || !result.data?.key) {
60
- return die(`Failed to Create Auth Key: ${result.error}`);
61
- }
62
- return result.data.key;
63
- },
64
- async listDevices() {
65
- const result = await request("GET", `/tailnet/${effectiveTailnet}/devices`);
66
- if (!result.ok) {
67
- return die(`Failed to List Devices: ${result.error}`);
68
- }
69
- const parsed = TailscaleDevicesListSchema.safeParse(result.data);
70
- return parsed.success ? parsed.data.devices : [];
71
- },
72
- async getDeviceByHostname(hostname) {
73
- const devices = await this.listDevices();
74
- // Exact match first (expected with persistent state)
75
- const exact = devices.find((d) => d.hostname === hostname);
76
- if (exact)
77
- return exact;
78
- // Fallback: find by prefix if Tailscale added suffix (e.g., hostname-1)
79
- // Prefer online devices, then most recently seen
80
- const prefixMatches = devices
81
- .filter((d) => d.hostname.startsWith(hostname + "-"))
82
- .sort((a, b) => {
83
- if (a.online && !b.online)
84
- return -1;
85
- if (!a.online && b.online)
86
- return 1;
87
- const aTime = a.lastSeen ? new Date(a.lastSeen).getTime() : 0;
88
- const bTime = b.lastSeen ? new Date(b.lastSeen).getTime() : 0;
89
- return bTime - aTime;
90
- });
91
- return prefixMatches[0] ?? null;
92
- },
93
- async deleteDevice(id) {
94
- const result = await request("DELETE", `/device/${id}`);
95
- if (!result.ok) {
96
- return die(`Failed to Delete Device: ${result.error}`);
97
- }
98
- },
99
- async approveSubnetRoutes(deviceId, routes) {
100
- const result = await request("POST", `/device/${deviceId}/routes`, { routes });
101
- if (!result.ok) {
102
- return die(`Failed to Approve Routes: ${result.error}`);
103
- }
104
- },
105
- async setSplitDns(domain, nameservers) {
106
- // PATCH performs partial update - only specified domains are modified
107
- const result = await request("PATCH", `/tailnet/${effectiveTailnet}/dns/split-dns`, { [domain]: nameservers });
108
- if (!result.ok) {
109
- return die(`Failed to Configure Split DNS: ${result.error}`);
110
- }
111
- },
112
- async clearSplitDns(domain) {
113
- const result = await request("PATCH", `/tailnet/${effectiveTailnet}/dns/split-dns`, { [domain]: null });
114
- if (!result.ok) {
115
- return die(`Failed to Clear Split DNS: ${result.error}`);
116
- }
117
- },
118
- async getPolicyFile() {
119
- const result = await request("GET", `/tailnet/${effectiveTailnet}/acl`);
120
- if (!result.ok || !result.data) {
121
- return null;
122
- }
123
- return result.data;
124
- },
125
- async isTagOwnerConfigured(tag) {
126
- const policy = await this.getPolicyFile();
127
- if (!policy)
128
- return false;
129
- const tagOwners = policy.tagOwners;
130
- if (!tagOwners)
131
- return false;
132
- return tag in tagOwners;
133
- },
134
- async isAutoApproverConfigured(tag) {
135
- const policy = await this.getPolicyFile();
136
- if (!policy)
137
- return false;
138
- const autoApprovers = policy.autoApprovers;
139
- if (!autoApprovers)
140
- return false;
141
- const routes = autoApprovers.routes;
142
- if (!routes)
143
- return false;
144
- return Object.values(routes).some((approvers) => Array.isArray(approvers) && approvers.includes(tag));
145
- },
146
- };
147
- };
148
- // =============================================================================
149
- // Wait for Device
150
- // =============================================================================
151
- export const waitForDevice = async (provider, hostname, timeoutMs = 120000) => {
152
- const startTime = Date.now();
153
- const pollInterval = 5000;
154
- while (Date.now() - startTime < timeoutMs) {
155
- const device = await provider.getDeviceByHostname(hostname);
156
- if (device) {
157
- return device;
158
- }
159
- await new Promise((resolve) => setTimeout(resolve, pollInterval));
160
- }
161
- return die(`Timeout Waiting for Device '${hostname}'`);
162
- };
163
- // =============================================================================
164
- // Local Tailscale CLI
165
- // =============================================================================
166
- /**
167
- * Check if the tailscale CLI is installed.
168
- */
169
- export const isTailscaleInstalled = async () => {
170
- return await commandExists("tailscale");
171
- };
172
- /**
173
- * Check if accept-routes is enabled on the local client.
174
- */
175
- export const isAcceptRoutesEnabled = async () => {
176
- const result = await runCommand(["tailscale", "debug", "prefs"]);
177
- if (!result.success) {
178
- return false;
179
- }
180
- try {
181
- const prefs = JSON.parse(result.stdout);
182
- return prefs.RouteAll === true;
183
- }
184
- catch {
185
- return false;
186
- }
187
- };
188
- /**
189
- * Enable accept-routes on the local client.
190
- * Returns true if successful, false if it failed (likely permissions).
191
- */
192
- export const enableAcceptRoutes = async () => {
193
- const result = await runCommand(["tailscale", "set", "--accept-routes"]);
194
- return result.success;
195
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/src/resolve.ts"],"names":[],"mappings":"AAGA,OAAO,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMtD;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,KAAK,WAAW,EAChB,MAAM;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EACtC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KACnC,OAAO,CAAC,MAAM,CA6BhB,CAAC"}
@@ -1,5 +0,0 @@
1
- import "../../_dnt.polyfills.js";
2
- export declare const getRouterTag: (network: string) => string;
3
- export declare const extractSubnet: (privateIp: string) => string;
4
- export declare const getConfigDir: () => string;
5
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/src/schemas/config.ts"],"names":[],"mappings":"AAOA,OAAO,yBAAyB,CAAC;AAKjC,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,MAAgC,CAAC;AAEhF,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,KAAG,MAKjD,CAAC;AAMF,eAAO,MAAM,YAAY,QAAO,MAG/B,CAAC"}
@@ -1,22 +0,0 @@
1
- // =============================================================================
2
- // Configuration Helpers
3
- // =============================================================================
4
- // =============================================================================
5
- // Derived Values
6
- // =============================================================================
7
- import "../../_dnt.polyfills.js";
8
- import * as dntShim from "../../_dnt.shims.js";
9
- export const getRouterTag = (network) => `tag:ambit-${network}`;
10
- export const extractSubnet = (privateIp) => {
11
- // privateIp format: fdaa:X:XXXX::Y
12
- // Extract first 3 hextets and append ::/48
13
- const parts = privateIp.split(":");
14
- return `${parts[0]}:${parts[1]}:${parts[2]}::/48`;
15
- };
16
- // =============================================================================
17
- // Config Directory
18
- // =============================================================================
19
- export const getConfigDir = () => {
20
- const home = dntShim.Deno.env.get("HOME") || dntShim.Deno.env.get("USERPROFILE") || "";
21
- return `${home}/.config/ambit`;
22
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"fly.d.ts","sourceRoot":"","sources":["../../../src/src/schemas/fly.ts"],"names":[],"mappings":"AAGA,OAAO,yBAAyB,CAAC;AAGjC,OAAO,EAAE,CAAC,EAAE,MAAM,+CAA+C,CAAC;AAMlE,eAAO,MAAM,aAAa;;iBAEV,CAAC;AAEjB,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAMpD,eAAO,MAAM,YAAY;;;;;;iBAMT,CAAC;AAEjB,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,iBAAiB;;;;;;kBAAwB,CAAC;AAMvD,eAAO,MAAM,eAAe;;;;;iBAKZ,CAAC;AAEjB,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAMxD,eAAO,MAAM,qBAAqB;;;;iBAIlB,CAAC;AAEjB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;iBAgBnB,CAAC;AAEjB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;iBASb,CAAC;AAEjB,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;kBAA4B,CAAC;AAM/D,eAAO,MAAM,aAAa,uCAAmC,CAAC;AAM9D,eAAO,MAAM,eAAe;;;iBAGZ,CAAC;AAMjB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,MAAM,KACf,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,QAiBtC,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,KAC5C,eAAe,GAAG,eAAe,GAAG,eAOtC,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAMpD,eAAO,MAAM,kBAAkB;;;;;iBAGf,CAAC;AAEjB,eAAO,MAAM,WAAW;;;;;;;;;;;;iBAOR,CAAC;AAEjB,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD,eAAO,MAAM,eAAe;;;;;;;;;;;;kBAAuB,CAAC;AAMpD,eAAO,MAAM,gBAAgB;;;;;;;iBAKb,CAAC;AAEjB,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAGjB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tailscale.d.ts","sourceRoot":"","sources":["../../../src/src/schemas/tailscale.ts"],"names":[],"mappings":"AAGA,OAAO,yBAAyB,CAAC;AAGjC,OAAO,EAAE,CAAC,EAAE,MAAM,+CAA+C,CAAC;AAMlE,eAAO,MAAM,sBAAsB;;;;;iBAKjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAMtE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBAclB,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;iBAErC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAM9E,eAAO,MAAM,qBAAqB;;;iBAGhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAMpE,eAAO,MAAM,6BAA6B;;iBAExC,CAAC;AAEH,eAAO,MAAM,uBAAuB,mDAGnC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAMxE,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMlE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,oBAAoB,GAAI,MAAM,mBAAmB,KAAG,MA+BhE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/src/template.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAM/C,2EAA2E;AAC3E,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,aAAa,GACb,WAAW,GACX,kBAAkB,GAClB,cAAc,GACd,kBAAkB,GAClB,cAAc,GACd,cAAc,CAAC;AAMnB,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAED,iDAAiD;AACjD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACtC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EACxC,iBAAiB,CAClB,CAAC;AAgCF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,WAAW,GAAG,IAyB5D,CAAC;AAMF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GACxB,KAAK,WAAW,KACf,OAAO,CAAC,mBAAmB,CAsH7B,CAAC"}
File without changes
File without changes
File without changes
File without changes
File without changes