@voxgig/sdkgen-infrapack 0.0.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.
- package/.sdk/model/target/seneca-provider.aon +120 -0
- package/.sdk/src/cmp/seneca-provider/Extras_seneca-provider.ts +4362 -0
- package/.sdk/src/cmp/seneca-provider/Gitignore_seneca-provider.ts +161 -0
- package/.sdk/src/cmp/seneca-provider/Main_seneca-provider.ts +1295 -0
- package/.sdk/tm/seneca-provider/CODE_OF_CONDUCT.md +132 -0
- package/.sdk/tm/seneca-provider/LICENSE +21 -0
- package/.sdk/tm/seneca-provider/Makefile +15 -0
- package/.sdk/tm/seneca-provider/src/tsconfig.json +18 -0
- package/.sdk/tm/seneca-provider/test/tsconfig.json +16 -0
- package/.sdk/tm/seneca-provider/tsfmt.json +3 -0
- package/LICENSE +21 -0
- package/README.md +123 -0
- package/package.json +98 -0
- package/sdkgen-package.json +18 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Seneca provider target — a Seneca plugin that exposes this API's entities
|
|
2
|
+
# as Seneca entities (`provider/<name>/<entity>`), layered on the sibling
|
|
3
|
+
# `ts` SDK. It is not a language SDK in its own right, so every standard
|
|
4
|
+
# generation phase is switched off below and Main_seneca-provider emits the
|
|
5
|
+
# whole package, exactly as go-cli / go-mcp / py-data do.
|
|
6
|
+
#
|
|
7
|
+
# Requires the `ts` target in the same SDK project (Main throws when it is
|
|
8
|
+
# absent): the plugin imports the published TypeScript SDK.
|
|
9
|
+
#
|
|
10
|
+
# UNLIKE the other consumer targets, this one generates into ITS OWN REPO.
|
|
11
|
+
# A Seneca provider is an independently released npm package under the
|
|
12
|
+
# @seneca scope, with its own LICENSE, CI workflow and release cadence, and
|
|
13
|
+
# it depends on the SDK as an ordinary published dependency rather than by
|
|
14
|
+
# path. Point it at that repo from the PROJECT model:
|
|
15
|
+
#
|
|
16
|
+
# main: kit: target: 'seneca-provider': output: path: '../../seneca/seneca-acme-provider'
|
|
17
|
+
#
|
|
18
|
+
# Relative to the SDK repo root. Left unset here on purpose — every project's
|
|
19
|
+
# provider repo is somewhere different, and a concrete value here would
|
|
20
|
+
# CONFLICT with the project's rather than yield to it (see the publication
|
|
21
|
+
# note below). Unset means the ordinary in-tree `<sdk-repo>/seneca-provider/`,
|
|
22
|
+
# which is a usable default for a first look at the output.
|
|
23
|
+
|
|
24
|
+
main: kit: target: 'seneca-provider': {
|
|
25
|
+
|
|
26
|
+
title: 'Seneca Provider'
|
|
27
|
+
ext: ts
|
|
28
|
+
comment: line: "//"
|
|
29
|
+
module: name: '$$name$$'
|
|
30
|
+
base: 'BASE'
|
|
31
|
+
srcfeature: false
|
|
32
|
+
|
|
33
|
+
# Per-generation-phase activation. Mirrors py-data: every standard phase is
|
|
34
|
+
# off and Main emits the package. README, docs and tests ARE generated — by
|
|
35
|
+
# Main, not by the standard cmps, which assume an SDK-shaped package and
|
|
36
|
+
# would emit wrong content here.
|
|
37
|
+
phase: {
|
|
38
|
+
entity: { active: false }
|
|
39
|
+
feature: { active: false }
|
|
40
|
+
readme: { active: false }
|
|
41
|
+
agentguide: { active: false }
|
|
42
|
+
test: { active: false }
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
# `kind` is a COMMA-SEPARATED LIST of manifest sections, not a single one.
|
|
46
|
+
# collectDeps deduplicates by package name and this map is keyed by name, so
|
|
47
|
+
# a package belonging in two sections cannot be declared twice — it says so
|
|
48
|
+
# here instead. See `seneca` below for the case that forced it.
|
|
49
|
+
deps: &: {
|
|
50
|
+
kind: *'prod' | string
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
# The Seneca plugin contract. `@seneca/provider` supplies entityBuilder and
|
|
54
|
+
# the keymap message this plugin's `prepare` posts; the rest are the host
|
|
55
|
+
# framework a plugin runs inside and so are PEER deps — a plugin that
|
|
56
|
+
# bundled its own seneca would run against a different instance than the
|
|
57
|
+
# application it is loaded into.
|
|
58
|
+
#
|
|
59
|
+
# The ts SDK dependency is emitted by Main from the model's published
|
|
60
|
+
# package name, so it is not declared here.
|
|
61
|
+
deps: {
|
|
62
|
+
'@seneca/maintain': { active: true, version: '^0.1.0', kind: prod }
|
|
63
|
+
|
|
64
|
+
'@seneca/env': { active: true, version: '>=0.4', kind: peer }
|
|
65
|
+
'@seneca/provider': { active: true, version: '>=4', kind: peer }
|
|
66
|
+
|
|
67
|
+
# PEER *and* DEV. Peer for the reason above — the plugin must attach to
|
|
68
|
+
# the host application's seneca instance. Dev because the generated test
|
|
69
|
+
# suite does `require('seneca')` itself, so a clean `npm install && npm
|
|
70
|
+
# test` in a fresh checkout has to produce one. Relying on npm's automatic
|
|
71
|
+
# peer installation instead is what dropping this from the manifest
|
|
72
|
+
# amounted to, and that is npm-version- and client-specific: pnpm and
|
|
73
|
+
# `--legacy-peer-deps` both leave the suite with no seneca to require.
|
|
74
|
+
'seneca': { active: true, version: '>=3||>=4.0.0-rc2', kind: 'peer,dev' }
|
|
75
|
+
|
|
76
|
+
'seneca-entity': { active: true, version: '>=26', kind: peer }
|
|
77
|
+
'seneca-promisify': { active: true, version: '>=3', kind: peer }
|
|
78
|
+
|
|
79
|
+
'@seneca/doc': { active: true, version: '^8.0.0', kind: dev }
|
|
80
|
+
'@types/node': { active: true, version: '^24.0.0', kind: dev }
|
|
81
|
+
'seneca-msg-test': { active: true, version: '^4.1.0', kind: dev }
|
|
82
|
+
'typescript': { active: true, version: '^5.4.5', kind: dev }
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
# Feature-deps map slot — every target carries this so the same feature can
|
|
88
|
+
# specify per-target dep variants.
|
|
89
|
+
main: kit: feature: &: target: 'seneca-provider': deps: &: {
|
|
90
|
+
kind: *'prod' | string
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
# Publication: npm registry, under the @seneca scope rather than the SDK's
|
|
95
|
+
# own. The package name is NOT derived from the SDK slug the way a language
|
|
96
|
+
# target's is — a provider is `@seneca/<name>-provider` — so Main sets it
|
|
97
|
+
# from the model and a project can pin it like any other.
|
|
98
|
+
#
|
|
99
|
+
# `target add <t>` OVERWRITES this file, so a project must never set its
|
|
100
|
+
# publication values here — voxgig-solardemo-sdk lost its pinned npm package
|
|
101
|
+
# name exactly that way. Set them in the project's own overlay
|
|
102
|
+
# (`model/project.aon`), which create-sdkgen creates once and never
|
|
103
|
+
# overwrites — NOT `model/sdk.aon`, which it rewrites on every scaffold.
|
|
104
|
+
#
|
|
105
|
+
# For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
|
|
106
|
+
# value does not yield to another concrete value, it CONFLICTS, and two
|
|
107
|
+
# defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aon)
|
|
108
|
+
# already defaults `tag.active`, `registry.state`, `registry.active` and
|
|
109
|
+
# `registry.package`, so a project's concrete value wins over the default and
|
|
110
|
+
# repeating them here would only take that away.
|
|
111
|
+
#
|
|
112
|
+
# What remains below is per-target registry IDENTITY, which is not a project
|
|
113
|
+
# choice and stays concrete.
|
|
114
|
+
main: kit: target: 'seneca-provider': publish: {
|
|
115
|
+
registry: {
|
|
116
|
+
name: 'npm'
|
|
117
|
+
url: 'https://registry.npmjs.org'
|
|
118
|
+
vault: { recipe: 'npm', alias: 'npm' }
|
|
119
|
+
}
|
|
120
|
+
}
|