@ankhorage/studio 2.5.7 → 2.6.1

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 (35) hide show
  1. package/README.md +2 -2
  2. package/apm/update.json +124 -0
  3. package/dist/apm.d.ts +18 -0
  4. package/dist/apm.d.ts.map +1 -0
  5. package/dist/apm.js +18 -0
  6. package/dist/apm.js.map +1 -0
  7. package/dist/features/project-updates/adapters/inbound/studioUpdateExtension.d.ts +4 -0
  8. package/dist/features/project-updates/adapters/inbound/studioUpdateExtension.d.ts.map +1 -0
  9. package/dist/features/project-updates/adapters/inbound/studioUpdateExtension.js +176 -0
  10. package/dist/features/project-updates/adapters/inbound/studioUpdateExtension.js.map +1 -0
  11. package/dist/features/project-updates/adapters/outbound/getGeneratedPackagePolicy.d.ts +4 -0
  12. package/dist/features/project-updates/adapters/outbound/getGeneratedPackagePolicy.d.ts.map +1 -0
  13. package/dist/{host/orchestrator/generatedPackagePolicy.js → features/project-updates/adapters/outbound/getGeneratedPackagePolicy.js} +8 -6
  14. package/dist/features/project-updates/adapters/outbound/getGeneratedPackagePolicy.js.map +1 -0
  15. package/dist/features/project-updates/composition/applyCurrentGeneratedPackagePolicy.d.ts +4 -0
  16. package/dist/features/project-updates/composition/applyCurrentGeneratedPackagePolicy.d.ts.map +1 -0
  17. package/dist/features/project-updates/composition/applyCurrentGeneratedPackagePolicy.js +7 -0
  18. package/dist/features/project-updates/composition/applyCurrentGeneratedPackagePolicy.js.map +1 -0
  19. package/dist/features/project-updates/domain/applyGeneratedPackagePolicy.d.ts +4 -0
  20. package/dist/features/project-updates/domain/applyGeneratedPackagePolicy.d.ts.map +1 -0
  21. package/dist/{host/orchestrator → features/project-updates/domain}/applyGeneratedPackagePolicy.js +2 -4
  22. package/dist/features/project-updates/domain/applyGeneratedPackagePolicy.js.map +1 -0
  23. package/dist/host/orchestrator/syncGeneratedPackagePolicyAsync.js +2 -2
  24. package/dist/host/orchestrator/syncGeneratedPackagePolicyAsync.js.map +1 -1
  25. package/dist/host/orchestrator/templates.js +2 -2
  26. package/dist/host/orchestrator/templates.js.map +1 -1
  27. package/dist/types/project-updates.d.ts +37 -0
  28. package/dist/types/project-updates.d.ts.map +1 -1
  29. package/package.json +17 -5
  30. package/dist/host/orchestrator/applyGeneratedPackagePolicy.d.ts +0 -9
  31. package/dist/host/orchestrator/applyGeneratedPackagePolicy.d.ts.map +0 -1
  32. package/dist/host/orchestrator/applyGeneratedPackagePolicy.js.map +0 -1
  33. package/dist/host/orchestrator/generatedPackagePolicy.d.ts +0 -33
  34. package/dist/host/orchestrator/generatedPackagePolicy.d.ts.map +0 -1
  35. package/dist/host/orchestrator/generatedPackagePolicy.js.map +0 -1
package/README.md CHANGED
@@ -3,9 +3,9 @@
3
3
 
4
4
  # @ankhorage/studio
5
5
 
6
- ![license: MIT](././paradox/badges/license.svg) ![npm: v2.4.10](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
6
+ ![license: MIT](././paradox/badges/license.svg) ![npm: v2.6.0](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
7
7
 
8
- Standalone Studio authoring package for Ankhorage apps.
8
+ Studio authoring package for Ankhorage apps
9
9
 
10
10
  ## Usage
11
11
 
@@ -0,0 +1,124 @@
1
+ {
2
+ "protocolVersion": 1,
3
+ "schemaVersion": 1,
4
+ "owner": { "name": "@ankhorage/studio", "version": "2.6.1" },
5
+ "history": {
6
+ "supported": [{ "sourceRange": ">=2.5.7 <3.0.0", "mode": "no-migration" }],
7
+ "unsupported": [],
8
+ "downgrade": "unsupported"
9
+ },
10
+ "compatibility": [],
11
+ "migrations": [],
12
+ "projections": [
13
+ {
14
+ "id": "generated-package-policy",
15
+ "claims": [
16
+ { "kind": "json-pointer", "path": "package.json", "pointer": "/packageManager" },
17
+ {
18
+ "kind": "json-pointer",
19
+ "path": "package.json",
20
+ "pointer": "/dependencies/@ankhorage~1contracts"
21
+ },
22
+ {
23
+ "kind": "json-pointer",
24
+ "path": "package.json",
25
+ "pointer": "/dependencies/@ankhorage~1data-sources"
26
+ },
27
+ {
28
+ "kind": "json-pointer",
29
+ "path": "package.json",
30
+ "pointer": "/dependencies/@ankhorage~1expo-runtime"
31
+ },
32
+ {
33
+ "kind": "json-pointer",
34
+ "path": "package.json",
35
+ "pointer": "/dependencies/@ankhorage~1navigator"
36
+ },
37
+ {
38
+ "kind": "json-pointer",
39
+ "path": "package.json",
40
+ "pointer": "/dependencies/@ankhorage~1runtime"
41
+ },
42
+ {
43
+ "kind": "json-pointer",
44
+ "path": "package.json",
45
+ "pointer": "/dependencies/@ankhorage~1studio"
46
+ },
47
+ {
48
+ "kind": "json-pointer",
49
+ "path": "package.json",
50
+ "pointer": "/dependencies/@ankhorage~1utility"
51
+ },
52
+ {
53
+ "kind": "json-pointer",
54
+ "path": "package.json",
55
+ "pointer": "/dependencies/@ankhorage~1supabase-auth"
56
+ },
57
+ {
58
+ "kind": "json-pointer",
59
+ "path": "package.json",
60
+ "pointer": "/dependencies/@ankhorage~1supabase-storage"
61
+ },
62
+ {
63
+ "kind": "json-pointer",
64
+ "path": "package.json",
65
+ "pointer": "/dependencies/@ankhorage~1zora"
66
+ },
67
+ {
68
+ "kind": "json-pointer",
69
+ "path": "package.json",
70
+ "pointer": "/dependencies/@react-native-picker~1picker"
71
+ },
72
+ {
73
+ "kind": "json-pointer",
74
+ "path": "package.json",
75
+ "pointer": "/dependencies/@react-native-vector-icons~1fontawesome"
76
+ },
77
+ {
78
+ "kind": "json-pointer",
79
+ "path": "package.json",
80
+ "pointer": "/dependencies/@react-native-vector-icons~1fontawesome5"
81
+ },
82
+ {
83
+ "kind": "json-pointer",
84
+ "path": "package.json",
85
+ "pointer": "/dependencies/@react-native-vector-icons~1fontawesome6"
86
+ },
87
+ {
88
+ "kind": "json-pointer",
89
+ "path": "package.json",
90
+ "pointer": "/dependencies/@react-native-vector-icons~1ionicons"
91
+ },
92
+ {
93
+ "kind": "json-pointer",
94
+ "path": "package.json",
95
+ "pointer": "/devDependencies/@ankhorage~1ankh"
96
+ },
97
+ {
98
+ "kind": "json-pointer",
99
+ "path": "package.json",
100
+ "pointer": "/devDependencies/@ankhorage~1devtools"
101
+ },
102
+ {
103
+ "kind": "json-pointer",
104
+ "path": "package.json",
105
+ "pointer": "/devDependencies/@types~1bun"
106
+ },
107
+ {
108
+ "kind": "json-pointer",
109
+ "path": "package.json",
110
+ "pointer": "/devDependencies/@types~1culori"
111
+ },
112
+ {
113
+ "kind": "json-pointer",
114
+ "path": "package.json",
115
+ "pointer": "/devDependencies/@types~1react"
116
+ }
117
+ ],
118
+ "requiresExtension": true,
119
+ "reason": "Studio owns generated application package policy for its managed dependency fields."
120
+ }
121
+ ],
122
+ "effects": [],
123
+ "extension": { "export": "./apm" }
124
+ }
package/dist/apm.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ /*** Public headless APM owner extension for the exact installed Studio artifact.
2
+ *
3
+ * Inspect and plan are read-only. Generated package policy uses the same pure transformation as
4
+ * initial authoring; only reviewed Studio-owned JSON fields are materialized, in order. Missing
5
+ * package state is unknown and cannot produce a successful empty plan. Node consumers do not
6
+ * import Studio UI, React, Expo or native peer code through this entrypoint.
7
+ *
8
+ * Supported stored-state history is explicitly declared in apm/update.json. Older unreviewed
9
+ * versions are unsupported, not automatically treated as migration-free. APM updates project
10
+ * sources; deployment, OTA eligibility, native builds and stores are separate follow-up work.
11
+ *
12
+ * Producers run test:apm and the Devtools packed-release gate after Changesets versioning; the
13
+ * exact validated archive is published. The cold packed-host acceptance also imports and verifies
14
+ * this owner under native Node with UI/native imports prohibited.
15
+ * @readme
16
+ */
17
+ export { studioUpdateExtension as default } from './features/project-updates/adapters/inbound/studioUpdateExtension.js';
18
+ //# sourceMappingURL=apm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apm.d.ts","sourceRoot":"","sources":["../src/apm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,qBAAqB,IAAI,OAAO,EAAE,MAAM,sEAAsE,CAAC"}
package/dist/apm.js ADDED
@@ -0,0 +1,18 @@
1
+ /*** Public headless APM owner extension for the exact installed Studio artifact.
2
+ *
3
+ * Inspect and plan are read-only. Generated package policy uses the same pure transformation as
4
+ * initial authoring; only reviewed Studio-owned JSON fields are materialized, in order. Missing
5
+ * package state is unknown and cannot produce a successful empty plan. Node consumers do not
6
+ * import Studio UI, React, Expo or native peer code through this entrypoint.
7
+ *
8
+ * Supported stored-state history is explicitly declared in apm/update.json. Older unreviewed
9
+ * versions are unsupported, not automatically treated as migration-free. APM updates project
10
+ * sources; deployment, OTA eligibility, native builds and stores are separate follow-up work.
11
+ *
12
+ * Producers run test:apm and the Devtools packed-release gate after Changesets versioning; the
13
+ * exact validated archive is published. The cold packed-host acceptance also imports and verifies
14
+ * this owner under native Node with UI/native imports prohibited.
15
+ * @readme
16
+ */
17
+ export { studioUpdateExtension as default } from './features/project-updates/adapters/inbound/studioUpdateExtension.js';
18
+ //# sourceMappingURL=apm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apm.js","sourceRoot":"","sources":["../src/apm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,qBAAqB,IAAI,OAAO,EAAE,MAAM,sEAAsE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ApmUpdateExtension } from '@ankhorage/apm/types';
2
+ /*** Expose Studio's trusted package-policy projection through the public APM extension contract. */
3
+ export declare const studioUpdateExtension: ApmUpdateExtension;
4
+ //# sourceMappingURL=studioUpdateExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studioUpdateExtension.d.ts","sourceRoot":"","sources":["../../../../../src/features/project-updates/adapters/inbound/studioUpdateExtension.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAMV,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAU9B,oGAAoG;AACpG,eAAO,MAAM,qBAAqB,EAAE,kBAKnC,CAAC"}
@@ -0,0 +1,176 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { readFileSync } from 'node:fs';
3
+ import { isRecord, readOwnProperty } from '@ankhorage/utility/object';
4
+ import { applyGeneratedPackagePolicy } from '../../domain/applyGeneratedPackagePolicy.js';
5
+ import { getGeneratedPackagePolicy } from '../outbound/getGeneratedPackagePolicy.js';
6
+ /*** Expose Studio's trusted package-policy projection through the public APM extension contract. */
7
+ export const studioUpdateExtension = {
8
+ protocolVersion: 1,
9
+ descriptorDigest: readDescriptorDigest(),
10
+ migrations: [],
11
+ projections: [createGeneratedPackagePolicyProjection()],
12
+ };
13
+ /*** Build the executable projection handler owned by the exact Studio artifact that exports it. */
14
+ function createGeneratedPackagePolicyProjection() {
15
+ return {
16
+ id: projectionId(),
17
+ inspectAsync: async (input) => {
18
+ const state = await inspectProjectionStateAsync(input);
19
+ return {
20
+ projectionId: projectionId(),
21
+ state: state.manifest === undefined
22
+ ? 'unknown'
23
+ : state.mutations.length === 0
24
+ ? 'current'
25
+ : 'stale',
26
+ inputFingerprint: state.inputFingerprint,
27
+ generatorFingerprint: state.generatorFingerprint,
28
+ evidence: projectionEvidence(state),
29
+ ...(state.manifest === undefined
30
+ ? {
31
+ reason: 'Generated package.json is missing or does not match the Studio package-policy shape.',
32
+ }
33
+ : {}),
34
+ };
35
+ },
36
+ planAsync: async (input) => {
37
+ const state = await inspectProjectionStateAsync(input);
38
+ if (state.manifest === undefined) {
39
+ throw new Error('Cannot plan Studio package policy from missing or malformed package.json.');
40
+ }
41
+ return toProjectionPlan(state);
42
+ },
43
+ materializeAsync: async (input) => {
44
+ // Every mutation targets the same document; preserve reviewed ordering at the I/O boundary.
45
+ for (const { id } of input.plan.mutations) {
46
+ await input.project.applyReviewedMutationAsync(id);
47
+ }
48
+ },
49
+ verifyAsync: async (input) => {
50
+ const state = await inspectProjectionStateAsync(input);
51
+ const generatorMatches = state.generatorFingerprint === input.plan.generatorFingerprint;
52
+ const current = state.manifest !== undefined && state.mutations.length === 0;
53
+ return {
54
+ valid: current && generatorMatches,
55
+ evidence: projectionEvidence(state),
56
+ ...(!current || !generatorMatches
57
+ ? {
58
+ reason: 'Studio package policy projection does not match the reviewed target artifact.',
59
+ }
60
+ : {}),
61
+ };
62
+ },
63
+ };
64
+ }
65
+ /*** Inspect package policy state without mutating the project. */
66
+ async function inspectProjectionStateAsync(input) {
67
+ const snapshot = await input.project.readFileAsync('package.json');
68
+ const policy = getGeneratedPackagePolicy();
69
+ const manifest = parseGeneratedPackageManifest(snapshot);
70
+ const generatorFingerprint = sha256(JSON.stringify({
71
+ owner: input.context.owner,
72
+ targetVersion: input.context.targetVersion,
73
+ integrity: input.context.artifact.integrity,
74
+ descriptorDigest: input.context.artifact.descriptorDigest,
75
+ policy,
76
+ }));
77
+ return {
78
+ snapshot,
79
+ ...(manifest === undefined ? {} : { manifest }),
80
+ inputFingerprint: snapshot.digest ?? sha256(snapshot.content ?? 'missing:package.json'),
81
+ generatorFingerprint,
82
+ mutations: manifest === undefined ? [] : packagePolicyMutations(manifest, policy, snapshot.digest),
83
+ };
84
+ }
85
+ /*** Convert inspected state into the reviewable APM projection plan. */
86
+ function toProjectionPlan(state) {
87
+ return {
88
+ projectionId: projectionId(),
89
+ mutations: state.mutations,
90
+ inputFingerprint: state.inputFingerprint,
91
+ generatorFingerprint: state.generatorFingerprint,
92
+ evidence: projectionEvidence(state),
93
+ };
94
+ }
95
+ /*** Build bounded evidence for package policy inspection and verification. */
96
+ function projectionEvidence(state) {
97
+ return [
98
+ 'package.json',
99
+ `managed-fields:${state.mutations.length}`,
100
+ `generator:${state.generatorFingerprint}`,
101
+ ];
102
+ }
103
+ /*** Parse the minimum package manifest shape owned by Studio's generated package policy. */
104
+ function parseGeneratedPackageManifest(snapshot) {
105
+ if (!snapshot.exists || snapshot.content === undefined)
106
+ return undefined;
107
+ try {
108
+ const value = JSON.parse(snapshot.content);
109
+ if (!isRecord(value) || typeof value.packageManager !== 'string')
110
+ return undefined;
111
+ if (!isStringRecord(value.dependencies) || !isStringRecord(value.devDependencies)) {
112
+ return undefined;
113
+ }
114
+ return {
115
+ packageManager: value.packageManager,
116
+ dependencies: value.dependencies,
117
+ devDependencies: value.devDependencies,
118
+ };
119
+ }
120
+ catch {
121
+ return undefined;
122
+ }
123
+ }
124
+ /*** Return whether every own value of one record is a string. */
125
+ function isStringRecord(value) {
126
+ return isRecord(value) && Object.values(value).every((entry) => typeof entry === 'string');
127
+ }
128
+ /*** Derive reviewed mutations from the same pure package policy used by initial generation. */
129
+ function packagePolicyMutations(manifest, policy, beforeDigest) {
130
+ const target = applyGeneratedPackagePolicy(manifest, policy);
131
+ const packageManagerMutation = manifest.packageManager === target.packageManager
132
+ ? []
133
+ : [stringMutation('/packageManager', target.packageManager, beforeDigest)];
134
+ const sections = [
135
+ { section: 'dependencies', current: manifest.dependencies, desired: target.dependencies },
136
+ {
137
+ section: 'devDependencies',
138
+ current: manifest.devDependencies,
139
+ desired: target.devDependencies,
140
+ },
141
+ ];
142
+ const dependencyMutations = sections.flatMap(({ section, current, desired }) => Object.entries(desired).flatMap(([key, value]) => readOwnProperty(current, key) === value
143
+ ? []
144
+ : [stringMutation(`/${section}/${jsonPointerSegment(key)}`, value, beforeDigest)]));
145
+ return [...packageManagerMutation, ...dependencyMutations];
146
+ }
147
+ /*** Build one reviewed string mutation with the matching narrow JSON-pointer ownership claim. */
148
+ function stringMutation(pointer, value, expectedBeforeDigest) {
149
+ return {
150
+ id: `${projectionId()}:${pointer}`,
151
+ claim: { kind: 'json-pointer', path: 'package.json', pointer },
152
+ kind: 'set-json-pointer',
153
+ path: 'package.json',
154
+ pointer,
155
+ value,
156
+ ...(expectedBeforeDigest === undefined ? {} : { expectedBeforeDigest }),
157
+ };
158
+ }
159
+ /*** Escape one JSON Pointer path segment according to RFC 6901. */
160
+ function jsonPointerSegment(value) {
161
+ return value.replaceAll('~', '~0').replaceAll('/', '~1');
162
+ }
163
+ /*** Return the stable Studio package-policy projection identity. */
164
+ function projectionId() {
165
+ return 'generated-package-policy';
166
+ }
167
+ /*** Read the exact static descriptor bytes shipped with this Studio artifact and hash them. */
168
+ function readDescriptorDigest() {
169
+ const descriptorUrl = new URL('../../../../../apm/update.json', import.meta.url);
170
+ return sha256(readFileSync(descriptorUrl, 'utf8'));
171
+ }
172
+ /*** Return one stable SHA-256 hex digest. */
173
+ function sha256(value) {
174
+ return createHash('sha256').update(value).digest('hex');
175
+ }
176
+ //# sourceMappingURL=studioUpdateExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studioUpdateExtension.js","sourceRoot":"","sources":["../../../../../src/features/project-updates/adapters/inbound/studioUpdateExtension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { GeneratedPackagePolicy } from '../../../../types/project-updates.js';
2
+ /*** Return Studio-owned generated-app dependency policy from this exact package artifact. */
3
+ export declare function getGeneratedPackagePolicy(): GeneratedPackagePolicy;
4
+ //# sourceMappingURL=getGeneratedPackagePolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGeneratedPackagePolicy.d.ts","sourceRoot":"","sources":["../../../../../src/features/project-updates/adapters/outbound/getGeneratedPackagePolicy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAEnF,6FAA6F;AAC7F,wBAAgB,yBAAyB,IAAI,sBAAsB,CAElE"}
@@ -1,12 +1,12 @@
1
1
  import { readFileSync } from 'node:fs';
2
2
  import { createRequire } from 'node:module';
3
3
  import { isRecord, readOwnProperty } from '@ankhorage/utility/object';
4
- /*** Return generated-app dependency ranges from Renovate-managed owner package metadata. */
4
+ /*** Return Studio-owned generated-app dependency policy from this exact package artifact. */
5
5
  export function getGeneratedPackagePolicy() {
6
6
  return GENERATED_PACKAGE_POLICY;
7
7
  }
8
8
  const REQUIRE = createRequire(import.meta.url);
9
- const STUDIO_PACKAGE_JSON_URL = new URL('../../../package.json', import.meta.url);
9
+ const STUDIO_PACKAGE_JSON_URL = new URL('../../../../../package.json', import.meta.url);
10
10
  const COLOR_THEORY_PACKAGE_JSON_PATH = REQUIRE.resolve('@ankhorage/color-theory/package.json');
11
11
  const SEMVER_PATTERN = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/u;
12
12
  const BUN_PACKAGE_MANAGER_PATTERN = /^bun@\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/u;
@@ -19,20 +19,22 @@ function readGeneratedPackagePolicy() {
19
19
  const devDependencies = readRequiredSection(studio, 'devDependencies', 'Studio');
20
20
  const peerDependencies = readRequiredSection(studio, 'peerDependencies', 'Studio');
21
21
  const colorTheoryDevDependencies = readRequiredSection(colorTheory, 'devDependencies', 'Color Theory');
22
+ const ownerVersion = readStudioVersion(studio);
22
23
  return createGeneratedPackagePolicy({
23
24
  dependencies,
24
25
  devDependencies,
25
26
  peerDependencies,
26
27
  typesCulori: readRequiredString(colorTheoryDevDependencies, '@types/culori', 'Color Theory'),
27
- version: readStudioVersion(studio),
28
+ ownerVersion,
28
29
  packageManager: readStudioPackageManager(studio),
29
30
  });
30
31
  }
31
- /*** Build the generated-app package policy from validated owner sections. */
32
+ /*** Build generated package policy from validated owner package sections. */
32
33
  function createGeneratedPackagePolicy(input) {
33
34
  return {
35
+ ownerVersion: input.ownerVersion,
34
36
  packageManager: input.packageManager,
35
- dependencies: readGeneratedRuntimeDependencies(input.dependencies, input.version),
37
+ dependencies: readGeneratedRuntimeDependencies(input.dependencies, input.ownerVersion),
36
38
  devDependencies: {
37
39
  ankh: readRequiredString(input.devDependencies, '@ankhorage/ankh', 'Studio'),
38
40
  devtools: readRequiredString(input.devDependencies, '@ankhorage/devtools', 'Studio'),
@@ -107,4 +109,4 @@ function readRequiredString(record, key, ownerName) {
107
109
  }
108
110
  return value;
109
111
  }
110
- //# sourceMappingURL=generatedPackagePolicy.js.map
112
+ //# sourceMappingURL=getGeneratedPackagePolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGeneratedPackagePolicy.js","sourceRoot":"","sources":["../../../../../src/features/project-updates/adapters/outbound/getGeneratedPackagePolicy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { GeneratedPackageManifest } from '../../../types/project-updates';
2
+ /*** Apply package policy owned by this exact installed Studio artifact. */
3
+ export declare function applyCurrentGeneratedPackagePolicy<T extends GeneratedPackageManifest>(packageJson: T): T;
4
+ //# sourceMappingURL=applyCurrentGeneratedPackagePolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyCurrentGeneratedPackagePolicy.d.ts","sourceRoot":"","sources":["../../../../src/features/project-updates/composition/applyCurrentGeneratedPackagePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAI/E,2EAA2E;AAC3E,wBAAgB,kCAAkC,CAAC,CAAC,SAAS,wBAAwB,EACnF,WAAW,EAAE,CAAC,GACb,CAAC,CAEH"}
@@ -0,0 +1,7 @@
1
+ import { getGeneratedPackagePolicy } from '../adapters/outbound/getGeneratedPackagePolicy';
2
+ import { applyGeneratedPackagePolicy } from '../domain/applyGeneratedPackagePolicy';
3
+ /*** Apply package policy owned by this exact installed Studio artifact. */
4
+ export function applyCurrentGeneratedPackagePolicy(packageJson) {
5
+ return applyGeneratedPackagePolicy(packageJson, getGeneratedPackagePolicy());
6
+ }
7
+ //# sourceMappingURL=applyCurrentGeneratedPackagePolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyCurrentGeneratedPackagePolicy.js","sourceRoot":"","sources":["../../../../src/features/project-updates/composition/applyCurrentGeneratedPackagePolicy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAEpF,2EAA2E;AAC3E,MAAM,UAAU,kCAAkC,CAChD,WAAc;IAEd,OAAO,2BAA2B,CAAC,WAAW,EAAE,yBAAyB,EAAE,CAAC,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { GeneratedPackageManifest, GeneratedPackagePolicy } from '../../../types/project-updates.js';
2
+ /*** Apply one explicit Studio package policy while preserving all user-owned package manifest entries. */
3
+ export declare function applyGeneratedPackagePolicy<T extends GeneratedPackageManifest>(packageJson: T, policy: GeneratedPackagePolicy): T;
4
+ //# sourceMappingURL=applyGeneratedPackagePolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyGeneratedPackagePolicy.d.ts","sourceRoot":"","sources":["../../../../src/features/project-updates/domain/applyGeneratedPackagePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,mCAAmC,CAAC;AAE3C,0GAA0G;AAC1G,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,wBAAwB,EAC5E,WAAW,EAAE,CAAC,EACd,MAAM,EAAE,sBAAsB,GAC7B,CAAC,CAyCH"}
@@ -1,7 +1,5 @@
1
- import { getGeneratedPackagePolicy } from './generatedPackagePolicy';
2
- /*** Apply owner-managed package ranges to one generated app package manifest. */
3
- export function applyGeneratedPackagePolicy(packageJson) {
4
- const policy = getGeneratedPackagePolicy();
1
+ /*** Apply one explicit Studio package policy while preserving all user-owned package manifest entries. */
2
+ export function applyGeneratedPackagePolicy(packageJson, policy) {
5
3
  const dependencies = {
6
4
  ...packageJson.dependencies,
7
5
  '@ankhorage/contracts': policy.dependencies.contracts,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyGeneratedPackagePolicy.js","sourceRoot":"","sources":["../../../../src/features/project-updates/domain/applyGeneratedPackagePolicy.ts"],"names":[],"mappings":"AAKA,0GAA0G;AAC1G,MAAM,UAAU,2BAA2B,CACzC,WAAc,EACd,MAA8B;IAE9B,MAAM,YAAY,GAAG;QACnB,GAAG,WAAW,CAAC,YAAY;QAC3B,sBAAsB,EAAE,MAAM,CAAC,YAAY,CAAC,SAAS;QACrD,yBAAyB,EAAE,MAAM,CAAC,YAAY,CAAC,WAAW;QAC1D,yBAAyB,EAAE,MAAM,CAAC,YAAY,CAAC,WAAW;QAC1D,sBAAsB,EAAE,MAAM,CAAC,YAAY,CAAC,SAAS;QACrD,oBAAoB,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO;QACjD,GAAG,CAAC,mBAAmB,IAAI,WAAW,CAAC,YAAY;YACjD,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE;YACrD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,oBAAoB,IAAI,WAAW,CAAC,YAAY;YAClD,CAAC,CAAC,EAAE,oBAAoB,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;YACvD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,0BAA0B,IAAI,WAAW,CAAC,YAAY;YACxD,CAAC,CAAC,EAAE,0BAA0B,EAAE,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE;YAClE,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,6BAA6B,IAAI,WAAW,CAAC,YAAY;YAC3D,CAAC,CAAC,EAAE,6BAA6B,EAAE,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE;YACxE,CAAC,CAAC,EAAE,CAAC;QACP,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI;QAC3C,6BAA6B,EAAE,MAAM,CAAC,gBAAgB,CAAC,YAAY;QACnE,wCAAwC,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW;QAC7E,yCAAyC,EAAE,MAAM,CAAC,gBAAgB,CAAC,YAAY;QAC/E,yCAAyC,EAAE,MAAM,CAAC,gBAAgB,CAAC,YAAY;QAC/E,qCAAqC,EAAE,MAAM,CAAC,gBAAgB,CAAC,QAAQ;KACxE,CAAC;IACF,MAAM,eAAe,GAAG;QACtB,GAAG,WAAW,CAAC,eAAe;QAC9B,iBAAiB,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI;QAC9C,qBAAqB,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ;QACtD,YAAY,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ;QAC7C,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,WAAW;QACnD,cAAc,EAAE,MAAM,CAAC,eAAe,CAAC,UAAU;KAClD,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE;QACpC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,YAAY;QACZ,eAAe;KAChB,CAAC,CAAC;AACL,CAAC"}
@@ -1,13 +1,13 @@
1
1
  import { readFile, writeFile } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
- import { applyGeneratedPackagePolicy } from './applyGeneratedPackagePolicy';
3
+ import { applyCurrentGeneratedPackagePolicy } from '../../features/project-updates/composition/applyCurrentGeneratedPackagePolicy';
4
4
  /*** Reconcile one generated app package manifest against current owner-managed version ranges. */
5
5
  export async function syncGeneratedPackagePolicyAsync(projectPath) {
6
6
  const packageJsonPath = path.join(projectPath, 'package.json');
7
7
  const source = await readFile(packageJsonPath, 'utf8');
8
8
  const packageJson = JSON.parse(source);
9
9
  assertGeneratedPackageManifest(packageJson);
10
- const synchronized = applyGeneratedPackagePolicy(packageJson);
10
+ const synchronized = applyCurrentGeneratedPackagePolicy(packageJson);
11
11
  const nextSource = `${JSON.stringify(synchronized, null, 2)}\n`;
12
12
  if (source === nextSource)
13
13
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"syncGeneratedPackagePolicyAsync.js","sourceRoot":"","sources":["../../../src/host/orchestrator/syncGeneratedPackagePolicyAsync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,WAAmB;IACvE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,WAAW,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChD,8BAA8B,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IAChE,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO;IAClC,MAAM,SAAS,CAAC,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC;AAQD,2FAA2F;AAC3F,SAAS,8BAA8B,CAAC,KAAc;IACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACxF,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,qDAAqD;AACrD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,yEAAyE;AACzE,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AAC7F,CAAC"}
1
+ {"version":3,"file":"syncGeneratedPackagePolicyAsync.js","sourceRoot":"","sources":["../../../src/host/orchestrator/syncGeneratedPackagePolicyAsync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,kCAAkC,EAAE,MAAM,+EAA+E,CAAC;AAEnI,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,WAAmB;IACvE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,WAAW,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChD,8BAA8B,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,kCAAkC,CAAC,WAAW,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IAChE,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO;IAClC,MAAM,SAAS,CAAC,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC;AAQD,2FAA2F;AAC3F,SAAS,8BAA8B,CAAC,KAAc;IACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACxF,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,qDAAqD;AACrD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,yEAAyE;AACzE,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AAC7F,CAAC"}
@@ -1,8 +1,8 @@
1
- import { applyGeneratedPackagePolicy } from './applyGeneratedPackagePolicy';
1
+ import { applyCurrentGeneratedPackagePolicy } from '../../features/project-updates/composition/applyCurrentGeneratedPackagePolicy';
2
2
  import { getPackageJson as getBasePackageJson } from './templateSources';
3
3
  export { getAndroidRunTs, getAppConfigTs, getEasJson, getMetroConfigJs, getMetroEmptyModuleJs, getTsConfigJson, } from './templateSources';
4
4
  /*** Generate one app package manifest with current owner-managed dependency policy applied. */
5
5
  export function getPackageJson(args) {
6
- return applyGeneratedPackagePolicy(getBasePackageJson(args));
6
+ return applyCurrentGeneratedPackagePolicy(getBasePackageJson(args));
7
7
  }
8
8
  //# sourceMappingURL=templates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/host/orchestrator/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGzE,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,+FAA+F;AAC/F,MAAM,UAAU,cAAc,CAAC,IAA8C;IAC3E,OAAO,2BAA2B,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/host/orchestrator/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,+EAA+E,CAAC;AACnI,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGzE,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,+FAA+F;AAC/F,MAAM,UAAU,cAAc,CAAC,IAA8C;IAC3E,OAAO,kCAAkC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,CAAC"}
@@ -1,4 +1,41 @@
1
1
  import type { ApmApplyCancellationPort, ApmApplyProgressPort, ApmApplyStepPort, ApmPlanProtocolPort, ApmStatusExtensionEvidencePort, ApmVerifyStepPort } from '@ankhorage/apm/types';
2
+ /*** Generated app package shape owned by Studio package policy projection. */
3
+ export interface GeneratedPackageManifest {
4
+ readonly packageManager: string;
5
+ readonly dependencies: Readonly<Record<string, string>>;
6
+ readonly devDependencies: Readonly<Record<string, string>>;
7
+ }
8
+ /*** Studio-owned dependency policy frozen to one exact Studio package artifact. */
9
+ export interface GeneratedPackagePolicy {
10
+ readonly ownerVersion: string;
11
+ readonly packageManager: string;
12
+ readonly dependencies: {
13
+ readonly contracts: string;
14
+ readonly dataSources: string;
15
+ readonly expoRuntime: string;
16
+ readonly navigator: string;
17
+ readonly runtime: string;
18
+ readonly studio: string;
19
+ readonly utility: string;
20
+ readonly supabaseAuth: string;
21
+ readonly supabaseStorage: string;
22
+ readonly zora: string;
23
+ };
24
+ readonly devDependencies: {
25
+ readonly ankh: string;
26
+ readonly devtools: string;
27
+ readonly typesBun: string;
28
+ readonly typesCulori: string;
29
+ readonly typesReact: string;
30
+ };
31
+ readonly peerDependencies: {
32
+ readonly nativePicker: string;
33
+ readonly fontawesome: string;
34
+ readonly fontawesome5: string;
35
+ readonly fontawesome6: string;
36
+ readonly ionicons: string;
37
+ };
38
+ }
2
39
  /*** Optional Studio-owned ports composed around the released APM project update lifecycle. */
3
40
  export interface ProjectUpdateServiceOptions {
4
41
  readonly extensions?: ApmStatusExtensionEvidencePort;
@@ -1 +1 @@
1
- {"version":3,"file":"project-updates.d.ts","sourceRoot":"","sources":["../../src/types/project-updates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,8BAA8B,EAC9B,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAE9B,8FAA8F;AAC9F,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,8BAA8B,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,wBAAwB,CAAC;CAClD"}
1
+ {"version":3,"file":"project-updates.d.ts","sourceRoot":"","sources":["../../src/types/project-updates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,8BAA8B,EAC9B,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAE9B,8EAA8E;AAC9E,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5D;AAED,mFAAmF;AACnF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE;QACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,gBAAgB,EAAE;QACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,8FAA8F;AAC9F,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,8BAA8B,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,wBAAwB,CAAC;CAClD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/studio",
3
- "version": "2.5.7",
3
+ "version": "2.6.1",
4
4
  "description": "Studio authoring package for Ankhorage apps",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/ankhorage/studio#readme",
@@ -19,6 +19,7 @@
19
19
  "types": "./dist/root.d.ts",
20
20
  "sideEffects": false,
21
21
  "files": [
22
+ "apm",
22
23
  "dist",
23
24
  "README.md",
24
25
  "LICENSE"
@@ -28,6 +29,10 @@
28
29
  "types": "./dist/root.d.ts",
29
30
  "import": "./dist/root.js"
30
31
  },
32
+ "./apm": {
33
+ "types": "./dist/apm.d.ts",
34
+ "import": "./dist/apm.js"
35
+ },
31
36
  "./app": {
32
37
  "types": "./dist/app/index.d.ts",
33
38
  "import": "./dist/app/index.js"
@@ -154,11 +159,15 @@
154
159
  "studio.projects.create",
155
160
  "studio.projects.delete",
156
161
  "studio.projects.sync"
157
- ]
162
+ ],
163
+ "apm": {
164
+ "protocolVersion": 1,
165
+ "descriptor": "./apm/update.json"
166
+ }
158
167
  },
159
168
  "scripts": {
160
169
  "build": "tsc -p tsconfig.build.json",
161
- "typecheck": "tsc --noEmit -p tsconfig.json",
170
+ "typecheck": "bun run check-types",
162
171
  "dev": "bun run --no-orphans dev:host & bun run --no-orphans dev:studio",
163
172
  "dev:studio": "bun install --cwd apps/studio --frozen-lockfile && bun run --cwd apps/studio web",
164
173
  "typecheck:studio": "bun install --cwd apps/studio --frozen-lockfile && bun run --cwd apps/studio typecheck",
@@ -187,7 +196,10 @@
187
196
  "version-packages": "ankhorage-changeset version",
188
197
  "dev:host": "bun src/host/http/standalone.ts",
189
198
  "test:host-smoke": "bun test src/host/hostLifecycle.smoke.test.ts",
190
- "knip:check": "ankhorage-knip"
199
+ "knip:check": "ankhorage-knip",
200
+ "test:apm": "bun test src/features/project-updates/adapters/inbound/studioUpdateExtension.test.ts",
201
+ "check-types": "tsc --noEmit -p tsconfig.json",
202
+ "test:apm:consumer": "node scripts/apm-owner-consumer.ts"
191
203
  },
192
204
  "keywords": [
193
205
  "ankhorage",
@@ -251,7 +263,7 @@
251
263
  },
252
264
  "devDependencies": {
253
265
  "@ankhorage/ankh": "^0.8.11",
254
- "@ankhorage/devtools": "^1.14.0",
266
+ "@ankhorage/devtools": "^1.15.0",
255
267
  "@ankhorage/paradox": "^0.1.24",
256
268
  "@types/bun": "^1.4.1",
257
269
  "@types/node": "^24.13.3",
@@ -1,9 +0,0 @@
1
- /*** Apply owner-managed package ranges to one generated app package manifest. */
2
- export declare function applyGeneratedPackagePolicy<T extends GeneratedPackageManifest>(packageJson: T): T;
3
- interface GeneratedPackageManifest {
4
- readonly packageManager: string;
5
- readonly dependencies: Readonly<Record<string, string>>;
6
- readonly devDependencies: Readonly<Record<string, string>>;
7
- }
8
- export {};
9
- //# sourceMappingURL=applyGeneratedPackagePolicy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"applyGeneratedPackagePolicy.d.ts","sourceRoot":"","sources":["../../../src/host/orchestrator/applyGeneratedPackagePolicy.ts"],"names":[],"mappings":"AAEA,iFAAiF;AACjF,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,wBAAwB,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CA0CjG;AAED,UAAU,wBAAwB;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"applyGeneratedPackagePolicy.js","sourceRoot":"","sources":["../../../src/host/orchestrator/applyGeneratedPackagePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,iFAAiF;AACjF,MAAM,UAAU,2BAA2B,CAAqC,WAAc;IAC5F,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC;IAC3C,MAAM,YAAY,GAAG;QACnB,GAAG,WAAW,CAAC,YAAY;QAC3B,sBAAsB,EAAE,MAAM,CAAC,YAAY,CAAC,SAAS;QACrD,yBAAyB,EAAE,MAAM,CAAC,YAAY,CAAC,WAAW;QAC1D,yBAAyB,EAAE,MAAM,CAAC,YAAY,CAAC,WAAW;QAC1D,sBAAsB,EAAE,MAAM,CAAC,YAAY,CAAC,SAAS;QACrD,oBAAoB,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO;QACjD,GAAG,CAAC,mBAAmB,IAAI,WAAW,CAAC,YAAY;YACjD,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE;YACrD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,oBAAoB,IAAI,WAAW,CAAC,YAAY;YAClD,CAAC,CAAC,EAAE,oBAAoB,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;YACvD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,0BAA0B,IAAI,WAAW,CAAC,YAAY;YACxD,CAAC,CAAC,EAAE,0BAA0B,EAAE,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE;YAClE,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,6BAA6B,IAAI,WAAW,CAAC,YAAY;YAC3D,CAAC,CAAC,EAAE,6BAA6B,EAAE,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE;YACxE,CAAC,CAAC,EAAE,CAAC;QACP,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI;QAC3C,6BAA6B,EAAE,MAAM,CAAC,gBAAgB,CAAC,YAAY;QACnE,wCAAwC,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW;QAC7E,yCAAyC,EAAE,MAAM,CAAC,gBAAgB,CAAC,YAAY;QAC/E,yCAAyC,EAAE,MAAM,CAAC,gBAAgB,CAAC,YAAY;QAC/E,qCAAqC,EAAE,MAAM,CAAC,gBAAgB,CAAC,QAAQ;KACxE,CAAC;IACF,MAAM,eAAe,GAAG;QACtB,GAAG,WAAW,CAAC,eAAe;QAC9B,iBAAiB,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI;QAC9C,qBAAqB,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ;QACtD,YAAY,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ;QAC7C,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,WAAW;QACnD,cAAc,EAAE,MAAM,CAAC,eAAe,CAAC,UAAU;KAClD,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE;QACpC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,YAAY;QACZ,eAAe;KAChB,CAAC,CAAC;AACL,CAAC"}
@@ -1,33 +0,0 @@
1
- /*** Return generated-app dependency ranges from Renovate-managed owner package metadata. */
2
- export declare function getGeneratedPackagePolicy(): GeneratedPackagePolicy;
3
- interface GeneratedPackagePolicy {
4
- readonly packageManager: string;
5
- readonly dependencies: {
6
- readonly contracts: string;
7
- readonly dataSources: string;
8
- readonly expoRuntime: string;
9
- readonly navigator: string;
10
- readonly runtime: string;
11
- readonly studio: string;
12
- readonly utility: string;
13
- readonly supabaseAuth: string;
14
- readonly supabaseStorage: string;
15
- readonly zora: string;
16
- };
17
- readonly devDependencies: {
18
- readonly ankh: string;
19
- readonly devtools: string;
20
- readonly typesBun: string;
21
- readonly typesCulori: string;
22
- readonly typesReact: string;
23
- };
24
- readonly peerDependencies: {
25
- readonly nativePicker: string;
26
- readonly fontawesome: string;
27
- readonly fontawesome5: string;
28
- readonly fontawesome6: string;
29
- readonly ionicons: string;
30
- };
31
- }
32
- export {};
33
- //# sourceMappingURL=generatedPackagePolicy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generatedPackagePolicy.d.ts","sourceRoot":"","sources":["../../../src/host/orchestrator/generatedPackagePolicy.ts"],"names":[],"mappings":"AAKA,4FAA4F;AAC5F,wBAAgB,yBAAyB,IAAI,sBAAsB,CAElE;AASD,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE;QACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,gBAAgB,EAAE;QACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"generatedPackagePolicy.js","sourceRoot":"","sources":["../../../src/host/orchestrator/generatedPackagePolicy.ts"],"names":[],"mappings":"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"}