@buoy-gg/angular 0.0.0-stage → 7.0.64
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.
- package/README.md +385 -2
- package/lib/auto.d.ts +5 -0
- package/lib/auto.mjs +1 -0
- package/lib/builders/ANGULAR-LICENSE +21 -0
- package/lib/builders/application.cjs +1 -0
- package/lib/builders/application.schema.json +759 -0
- package/lib/builders/auto-module.mjs +68 -0
- package/lib/builders/builders.json +14 -0
- package/lib/builders/dev-server.cjs +1 -0
- package/lib/builders/dev-server.schema.json +153 -0
- package/lib/builders/plugin.mjs +1 -0
- package/lib/builders/runtime.cjs +1 -0
- package/lib/disabled/highlights.mjs +1 -0
- package/lib/disabled/index.mjs +1 -0
- package/lib/disabled/ngrx.mjs +1 -0
- package/lib/disabled/ngxs.mjs +1 -0
- package/lib/disabled/register.mjs +1 -0
- package/lib/disabled/router.mjs +1 -0
- package/lib/disabled.d.ts +16 -0
- package/lib/disabled.mjs +1 -0
- package/lib/highlights.d.ts +14 -0
- package/lib/highlights.mjs +1 -0
- package/lib/index.d.ts +18 -0
- package/lib/index.mjs +1 -0
- package/lib/ngrx.d.ts +44 -0
- package/lib/ngrx.mjs +1 -0
- package/lib/ngxs.d.ts +14 -0
- package/lib/ngxs.mjs +1 -0
- package/lib/register.d.ts +1 -0
- package/lib/register.mjs +1 -0
- package/lib/router.d.ts +5 -0
- package/lib/router.mjs +1 -0
- package/lib/schematics/collection.json +7 -0
- package/lib/schematics/ng-add/index.cjs +8 -0
- package/lib/schematics/ng-add/schema.json +1 -0
- package/lib/schematics/ng-add/setup.schema.json +162 -0
- package/lib/schematics/ng-add/tools.json +110 -0
- package/package.json +92 -3
package/README.md
CHANGED
|
@@ -1,3 +1,386 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Buoy for Angular
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Let your coding agent install Buoy.
|
|
4
|
+
Copy the [Angular install prompt](https://buoy.gg/buoy/latest/docs/web/angular#start-here).
|
|
5
|
+
Its guide is [install-angular.md](https://buoy.gg/install-angular.md).
|
|
6
|
+
Watch the trailer on the [Angular page](https://buoy.gg/buoy/latest/docs/web/angular).
|
|
7
|
+
|
|
8
|
+
Buoy runs in Angular as a beta.
|
|
9
|
+
It starts after the first view, outside Angular's zone.
|
|
10
|
+
It stops with the app and skips the server.
|
|
11
|
+
Your app keeps its Angular views and state.
|
|
12
|
+
Buoy uses React for its own UI.
|
|
13
|
+
|
|
14
|
+
## Install and sign in
|
|
15
|
+
|
|
16
|
+
Run these from your app folder:
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
ng add @buoy-gg/angular
|
|
20
|
+
npx buoy login
|
|
21
|
+
ng serve
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Pick the tools you want in the prompt.
|
|
25
|
+
Network, Console, Storage, Events, and Env start checked.
|
|
26
|
+
The prompt also checks tools that fit the app:
|
|
27
|
+
|
|
28
|
+
- Routes if the app has Angular Router.
|
|
29
|
+
- Query if it has Angular Query.
|
|
30
|
+
- Redux if it has NgRx or NGXS.
|
|
31
|
+
- Highlight on Angular 20 or newer.
|
|
32
|
+
|
|
33
|
+
React, React DOM, and RN Web come with Buoy.
|
|
34
|
+
Use the same version for all Buoy packages.
|
|
35
|
+
To add a tool later, install its Buoy package.
|
|
36
|
+
Restart `ng serve` to load the new list.
|
|
37
|
+
The server prints a restart note when that list changes.
|
|
38
|
+
A second `ng add` run leaves your files alone.
|
|
39
|
+
|
|
40
|
+
For more than one app, choose it by name:
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
ng add @buoy-gg/angular --project my-app
|
|
44
|
+
npx buoy login --project my-app
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Login writes `src/environments/buoy.ts` under the app's source root.
|
|
48
|
+
The builder reads its `BUOY_KEY` for you.
|
|
49
|
+
Login also writes an env file for local Buoy tools.
|
|
50
|
+
It adds both files to `.gitignore`. Do not commit them.
|
|
51
|
+
Free keys keep their dev guard in the key file.
|
|
52
|
+
Each person signs in with their own account.
|
|
53
|
+
|
|
54
|
+
## What ng add writes
|
|
55
|
+
|
|
56
|
+
In `angular.json`, it changes two builder names:
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"build": {
|
|
61
|
+
"builder": "@buoy-gg/angular:application"
|
|
62
|
+
},
|
|
63
|
+
"serve": {
|
|
64
|
+
"builder": "@buoy-gg/angular:dev-server"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Keep each target's other fields and build configs.
|
|
70
|
+
`ng add` keeps those fields when it makes the change.
|
|
71
|
+
It adds this call last in `app.config.ts`:
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
import { ApplicationConfig } from '@angular/core';
|
|
75
|
+
import { provideRouter } from '@angular/router';
|
|
76
|
+
import { provideBuoy } from '@buoy-gg/angular';
|
|
77
|
+
import { routes } from './app.routes';
|
|
78
|
+
|
|
79
|
+
export const appConfig: ApplicationConfig = {
|
|
80
|
+
providers: [
|
|
81
|
+
provideRouter(routes),
|
|
82
|
+
// Keep the app's other providers here.
|
|
83
|
+
provideBuoy(),
|
|
84
|
+
],
|
|
85
|
+
};
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
For NgModule apps, it puts the call last in `@NgModule.providers`.
|
|
89
|
+
The builder adds the light hook before the app starts.
|
|
90
|
+
That lets Network see calls from the first app initializer.
|
|
91
|
+
It loads all installed tools. You need no `buoy.ts` list.
|
|
92
|
+
You need no Buoy guard or prod condition here.
|
|
93
|
+
|
|
94
|
+
Prod swaps Buoy for a small, empty provider.
|
|
95
|
+
The host, tools, React DOM, and RN Web stay out.
|
|
96
|
+
NgRx DevTools needs its own dev guard, shown below.
|
|
97
|
+
SSR and prerender builds keep Buoy out of server code.
|
|
98
|
+
Watch builds use the same rules.
|
|
99
|
+
|
|
100
|
+
## QA builds
|
|
101
|
+
|
|
102
|
+
To keep Buoy in a QA build, set this build option:
|
|
103
|
+
|
|
104
|
+
```json
|
|
105
|
+
{
|
|
106
|
+
"buoy": { "release": true }
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Put it in the QA config under `build.configurations`.
|
|
111
|
+
It keeps the browser tools and turns on the early hook.
|
|
112
|
+
The server bundle still uses the empty provider.
|
|
113
|
+
Use a paid key or sign in for release access.
|
|
114
|
+
Your app's access rules and plan still apply.
|
|
115
|
+
Free keys from login stay out of prod code.
|
|
116
|
+
NgRx, NGXS, and Highlight still need Angular dev mode.
|
|
117
|
+
|
|
118
|
+
## NgRx Store
|
|
119
|
+
|
|
120
|
+
Keep your normal store and effects setup.
|
|
121
|
+
Add `@ngrx/store-devtools` and select the Redux tool.
|
|
122
|
+
Keep NgRx DevTools in a dev guard.
|
|
123
|
+
Put `provideBuoy()` last in the provider list:
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
import { provideStoreDevtools } from '@ngrx/store-devtools';
|
|
127
|
+
import { provideBuoy } from '@buoy-gg/angular';
|
|
128
|
+
|
|
129
|
+
declare const ngDevMode: boolean | undefined;
|
|
130
|
+
|
|
131
|
+
// At the end of the app's providers:
|
|
132
|
+
(typeof ngDevMode === 'undefined' || ngDevMode)
|
|
133
|
+
? provideStoreDevtools({ maxAge: 50 })
|
|
134
|
+
: [],
|
|
135
|
+
provideBuoy(),
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
No extra NgRx bridge call is needed with the builder.
|
|
139
|
+
Buoy provides `REDUX_DEVTOOLS_EXTENSION` through DI.
|
|
140
|
+
It never claims `window.__REDUX_DEVTOOLS_EXTENSION__`.
|
|
141
|
+
If another provider wins, dev builds print this warning:
|
|
142
|
+
|
|
143
|
+
```text
|
|
144
|
+
[Buoy] NgRx has no Buoy link. Move provideBuoy() last in providers.
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
The tool shows actions, state, and diffs.
|
|
148
|
+
Replay adds a new row. Jump restores the chosen state.
|
|
149
|
+
A state jump may take one second.
|
|
150
|
+
The guard keeps NgRx DevTools out of prod.
|
|
151
|
+
`logOnly` alone still ships that code.
|
|
152
|
+
Old setups can keep `provideBuoyNgRx()` after `provideStoreDevtools()`.
|
|
153
|
+
|
|
154
|
+
## NGXS
|
|
155
|
+
|
|
156
|
+
Select the Redux tool and keep the app's NGXS store.
|
|
157
|
+
NGXS still needs its own adapter call:
|
|
158
|
+
|
|
159
|
+
```ts
|
|
160
|
+
import { provideBuoy } from '@buoy-gg/angular';
|
|
161
|
+
import { provideBuoyNgxs } from '@buoy-gg/angular/ngxs';
|
|
162
|
+
|
|
163
|
+
declare const ngDevMode: boolean | undefined;
|
|
164
|
+
|
|
165
|
+
// At the end of the app's providers:
|
|
166
|
+
(typeof ngDevMode === 'undefined' || ngDevMode)
|
|
167
|
+
? provideBuoyNgxs()
|
|
168
|
+
: [],
|
|
169
|
+
provideBuoy(),
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
This uses `NGXS_PLUGINS` through DI.
|
|
173
|
+
It needs no browser global or `@ngxs/devtools-plugin`.
|
|
174
|
+
We tested NGXS 22 with RxJS 7.8.
|
|
175
|
+
Use one adapter. Do not mix NgRx and NGXS bridges.
|
|
176
|
+
Jump calls `Store.reset`. Replay calls `Store.dispatch`.
|
|
177
|
+
Async actions show when they end. Errors still reach NGXS.
|
|
178
|
+
Canceled actions with no result add no row.
|
|
179
|
+
|
|
180
|
+
## Router, Query, and Highlight
|
|
181
|
+
|
|
182
|
+
With the builder, `provideBuoy()` links these tools through DI.
|
|
183
|
+
Routes reads the app's Router and route list.
|
|
184
|
+
Go asks for `id` in a path like `/pokemon/:id`.
|
|
185
|
+
Lazy child routes show once the app loads them.
|
|
186
|
+
|
|
187
|
+
Query uses the app's Angular Query client.
|
|
188
|
+
Keep your normal `provideTanStackQuery(queryClient)` call.
|
|
189
|
+
When you choose Query, `ng add` adds `@tanstack/react-query`.
|
|
190
|
+
Buoy's UI needs that peer next to `@buoy-gg/react-query`.
|
|
191
|
+
Match its version to `@tanstack/angular-query-experimental`.
|
|
192
|
+
Both must resolve the same `@tanstack/query-core` version and copy.
|
|
193
|
+
Check with `pnpm why @tanstack/query-core` or `npm ls @tanstack/query-core`.
|
|
194
|
+
Split copies can break types or the offline switch.
|
|
195
|
+
Keys, data, and refetch all use the app's client.
|
|
196
|
+
|
|
197
|
+
Highlight draws boxes and counts checks for each view.
|
|
198
|
+
It needs Angular 20 or newer and the dev hook.
|
|
199
|
+
Missing hooks show "Not in this app."
|
|
200
|
+
Buoy leaves other hooks in place and stops its own.
|
|
201
|
+
Counts are view checks, not paints or DOM writes.
|
|
202
|
+
The list holds up to 200 views.
|
|
203
|
+
It does not give React's cause or timing data.
|
|
204
|
+
The hook is private API. Check it on Angular upgrades.
|
|
205
|
+
|
|
206
|
+
## Angular 19 and custom builders
|
|
207
|
+
|
|
208
|
+
The Buoy builders work with CLI 19, 20, 21, and 22.
|
|
209
|
+
Fresh app runs cover 19, 20, and 22.
|
|
210
|
+
CLI 21 was checked from its types and schema.
|
|
211
|
+
Highlight stays off on Angular 19.
|
|
212
|
+
|
|
213
|
+
CLI 19 has no `conditions` option.
|
|
214
|
+
The Buoy builder does its own prod swap on that CLI.
|
|
215
|
+
A fresh CLI 19 app may use `@angular-devkit/build-angular`.
|
|
216
|
+
`ng add` keeps that builder and writes the manual setup.
|
|
217
|
+
|
|
218
|
+
The same rule applies to custom builders and Nx targets.
|
|
219
|
+
`ng add` reads the targets in `angular.json`.
|
|
220
|
+
It only swaps `@angular/build` builder names.
|
|
221
|
+
For other builders, it prints why it kept them.
|
|
222
|
+
It writes the hook, tool list, dev guard, and prod config.
|
|
223
|
+
CLI 20+ gets the `buoy-disabled` condition.
|
|
224
|
+
Check that your custom builder accepts `conditions`.
|
|
225
|
+
If it does not, use entry file swaps instead.
|
|
226
|
+
CLI 19 and webpack get entry file swaps instead.
|
|
227
|
+
The tool list gets a prod file swap too.
|
|
228
|
+
Keep manual app links for Router, Query, and state tools.
|
|
229
|
+
For Nx layouts with no `angular.json`, use manual setup.
|
|
230
|
+
|
|
231
|
+
## Other stores and phone apps
|
|
232
|
+
|
|
233
|
+
Vanilla Zustand stores need named store objects.
|
|
234
|
+
Pass `zustandStores: { ui: uiStore }` in app options.
|
|
235
|
+
Install the Zustand tool. The builder finds it.
|
|
236
|
+
It shows state, changes, diffs, and edits.
|
|
237
|
+
|
|
238
|
+
SignalStore has no Buoy DI feature yet.
|
|
239
|
+
Do not use the NgRx bridge for SignalStore.
|
|
240
|
+
A Signals view is planned. It has not shipped.
|
|
241
|
+
It would show signals used by the current page.
|
|
242
|
+
It cannot list every signal in an app.
|
|
243
|
+
Jotai needs an app with Jotai state.
|
|
244
|
+
|
|
245
|
+
Angular 22 uses fetch for HttpClient by default.
|
|
246
|
+
Use `provideHttpClient(withXhr())` if the app needs XHR.
|
|
247
|
+
For Ionic Angular phones, see the [Capacitor guide](https://buoy.gg/buoy/latest/docs/capacitor).
|
|
248
|
+
Desktop links and phone boot hooks still need their own setup.
|
|
249
|
+
|
|
250
|
+
## App options
|
|
251
|
+
|
|
252
|
+
Options add to the setup the builder finds.
|
|
253
|
+
Keep the Buoy call last in the provider list.
|
|
254
|
+
Pass an object, or a factory that calls `inject()`:
|
|
255
|
+
|
|
256
|
+
```ts
|
|
257
|
+
provideBuoy({ zustandStores: { ui: uiStore } }),
|
|
258
|
+
|
|
259
|
+
// Or use a factory for app services:
|
|
260
|
+
provideBuoy(() => ({ queryClient: inject(QueryClient) })),
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Choose one call. Do not use both.
|
|
264
|
+
The factory runs once in the app's DI context.
|
|
265
|
+
It can read the store with `inject(Store)` too.
|
|
266
|
+
Router, Query, Highlight, and NgRx still get their links.
|
|
267
|
+
The builder still loads each installed tool.
|
|
268
|
+
Custom `apps`, Sentry, and a test broker work here too.
|
|
269
|
+
|
|
270
|
+
The merge rules are:
|
|
271
|
+
|
|
272
|
+
- App keys replace auto keys. Your `queryClient` wins.
|
|
273
|
+
- `load()` adds its keys last, after the app options.
|
|
274
|
+
- Lists and nested objects replace the whole value.
|
|
275
|
+
This includes `apps`, `zustandStores`, and `externalSync`.
|
|
276
|
+
- `links` merges by tool id. Your link wins for that id.
|
|
277
|
+
Each link runs after render and returns a stop function.
|
|
278
|
+
Buoy calls each stop on teardown, plus your `onDestroy`.
|
|
279
|
+
- An explicit `modules` map or loader turns auto off.
|
|
280
|
+
It keeps the manual path below, with your own links.
|
|
281
|
+
|
|
282
|
+
To use your own Routes link, pass this in the options:
|
|
283
|
+
|
|
284
|
+
```ts
|
|
285
|
+
links: {
|
|
286
|
+
'route-events': async () => {
|
|
287
|
+
const { connectBuoyRouter } = await import('@buoy-gg/angular/router');
|
|
288
|
+
return zone.runOutsideAngular(() =>
|
|
289
|
+
connectBuoyRouter(router, fn => zone.run(fn)),
|
|
290
|
+
);
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
Get `router` and `zone` with `inject()` in the factory.
|
|
296
|
+
This replaces just the Routes link. Highlight stays on.
|
|
297
|
+
Use `highlight-updates` to replace that link too.
|
|
298
|
+
For lazy app settings, let `load()` return mount options.
|
|
299
|
+
Leave out `modules` to keep the builder's tool list.
|
|
300
|
+
The loader and link callbacks run outside the zone.
|
|
301
|
+
They run later, so call `inject()` in the factory.
|
|
302
|
+
|
|
303
|
+
## Manual setup
|
|
304
|
+
|
|
305
|
+
Use this path when you pass your own tool list.
|
|
306
|
+
Existing `provideBuoy({ modules, ... })` calls still work.
|
|
307
|
+
A factory, `provideBuoy(() => options)`, can call `inject()`.
|
|
308
|
+
`load` can return all mount settings at once.
|
|
309
|
+
`onDestroy` stops app hooks; `onMount` gets the stop function.
|
|
310
|
+
An explicit `modules` map or loader selects this path.
|
|
311
|
+
With the builder, other options keep the auto links.
|
|
312
|
+
|
|
313
|
+
Put the light hook first in `src/main.ts`:
|
|
314
|
+
|
|
315
|
+
```ts
|
|
316
|
+
import '@buoy-gg/angular/register';
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Do not use the React inspector hook from `@buoy-gg/core/web/register`.
|
|
320
|
+
Make a tool list, then pass it behind a dev guard:
|
|
321
|
+
|
|
322
|
+
```ts
|
|
323
|
+
// src/buoy.ts
|
|
324
|
+
import { BUOY_KEY } from './environments/buoy';
|
|
325
|
+
export const buoyOptions = {
|
|
326
|
+
licenseKey: BUOY_KEY,
|
|
327
|
+
modules: async () => ({
|
|
328
|
+
network: await import('@buoy-gg/network/web'),
|
|
329
|
+
}),
|
|
330
|
+
};
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
```ts
|
|
334
|
+
// src/app/app.config.ts
|
|
335
|
+
import { provideBuoy } from '@buoy-gg/angular';
|
|
336
|
+
import { buoyOptions } from '../buoy';
|
|
337
|
+
|
|
338
|
+
declare const ngDevMode: boolean | undefined;
|
|
339
|
+
|
|
340
|
+
// Last in the app's providers:
|
|
341
|
+
(typeof ngDevMode === 'undefined' || ngDevMode)
|
|
342
|
+
? provideBuoy(buoyOptions)
|
|
343
|
+
: [],
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
For CLI 20+ esbuild builders that accept `conditions`, use:
|
|
347
|
+
|
|
348
|
+
```json
|
|
349
|
+
{
|
|
350
|
+
"conditions": ["buoy-disabled", "module", "production"],
|
|
351
|
+
"fileReplacements": [
|
|
352
|
+
{ "replace": "src/buoy.ts", "with": "src/buoy.prod.ts" }
|
|
353
|
+
]
|
|
354
|
+
}
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
```ts
|
|
358
|
+
// src/buoy.prod.ts
|
|
359
|
+
export const buoyOptions = {};
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
Keep both the guard and the file swap.
|
|
363
|
+
A runtime `isDevMode()` check alone leaves tool chunks.
|
|
364
|
+
For CLI 19 or webpack, let `ng add` write entry swaps.
|
|
365
|
+
Or use prod entry and config files with no Buoy imports.
|
|
366
|
+
Keep the app's own providers in those prod files.
|
|
367
|
+
|
|
368
|
+
In a manual loader, use these app links as needed:
|
|
369
|
+
|
|
370
|
+
| Tool | Manual link |
|
|
371
|
+
|---|---|
|
|
372
|
+
| Routes | Call `connectBuoyRouter(router, fn => zone.run(fn))` from `@buoy-gg/angular/router`. Stop it in `onDestroy`. |
|
|
373
|
+
| Highlight | Call `connectBuoyHighlights(module.HighlightUpdatesController, fn => zone.runOutsideAngular(fn))` from `@buoy-gg/angular/highlights`. Stop it in `onDestroy`. |
|
|
374
|
+
| NgRx | Put `provideBuoyNgRx()` after NgRx DevTools, inside the same dev guard. |
|
|
375
|
+
| Query | Pass the app's `queryClient` and the `'react-query'` module. |
|
|
376
|
+
| Zustand | Pass `zustandStores` and the `zustand` module. |
|
|
377
|
+
|
|
378
|
+
Manual QA builds also need `enableInRelease: true`.
|
|
379
|
+
Keep their app guard true and omit the prod swaps.
|
|
380
|
+
Start `registerBrowserNetwork({ enableInRelease: true })` from the light hook entry.
|
|
381
|
+
A Desktop link needs `externalSync: { enableInRelease: true }` too.
|
|
382
|
+
Keep that flag in the settings returned by `load`.
|
|
383
|
+
Remote phone checks may need these calls before tools open:
|
|
384
|
+
`bootLifecycle()`, `installLocationAdapters()`, `installPermissions()`, and
|
|
385
|
+
`installCapacitorNotificationCapture({ enableInRelease: true })`.
|
|
386
|
+
Use only the modules installed in that app.
|
package/lib/auto.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { EnvironmentProviders } from '@angular/core';
|
|
2
|
+
import type { BuoyOptions } from './index';
|
|
3
|
+
/** The builder replaces this entry with links for the installed tools. */
|
|
4
|
+
export declare function captureBuoyLinks(): BuoyOptions;
|
|
5
|
+
export declare function wrapBuoyInitializer(initializer: EnvironmentProviders, _readOptions: () => BuoyOptions, _manual: boolean): EnvironmentProviders;
|
package/lib/auto.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function n(){return{}}function t(r,u,i){return r}export{n as captureBuoyLinks,t as wrapBuoyInitializer};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2010-2026 Google LLC. https://angular.dev/license
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const{architect,application,schemaOptions}=require("./runtime.cjs");module.exports=architect().createBuilder(async function*(i,o){const{root:t,sourceRoot:n,api:s}=await application(o);const{buildOptions:c,toolPlugin:l}=await import("./plugin.mjs");const{buoy:u,buoyRelease:r,...p}=i;const d=await o.validateOptions(schemaOptions(t,"application",p),"@angular/build:application");const a=u?.release??r??false;const e=c({...d,buoy:{release:a}},o.target?.configuration);const b=l(t,{disabled:e.disabled,release:a,sourceRoot:n}).plugin;yield*s.buildApplication(e.options,o,{codePlugins:[b]})});
|