@microteia/console 2.10.0 → 2.18.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.
- package/CONSOLE-VERSIONS.md +49 -0
- package/README.md +1 -1
- package/lib/console/appliedFunctions.d.ts +79 -0
- package/lib/console/appliedFunctions.js +88 -0
- package/lib/console/backendResidue.d.ts +55 -0
- package/lib/console/backendResidue.js +53 -0
- package/lib/console/customFunctions.d.ts +51 -1
- package/lib/console/customFunctions.js +94 -1
- package/lib/console/deploy.js +17 -7
- package/lib/console/environment.d.ts +7 -6
- package/lib/console/firestoreRest.d.ts +27 -0
- package/lib/console/firestoreRest.js +23 -0
- package/lib/console/functionGate.d.ts +198 -0
- package/lib/console/functionGate.js +400 -0
- package/lib/console/provision.d.ts +26 -13
- package/lib/console/provision.js +300 -57
- package/lib/kernel/backendShape.d.ts +27 -0
- package/lib/kernel/backendShape.js +38 -0
- package/lib/shared/paths.d.ts +1 -1
- package/lib/shared/paths.js +1 -1
- package/lib/vendor/packageTemplates.d.ts +12 -1
- package/lib/vendor/packageTemplates.js +42 -2
- package/package.json +1 -1
|
@@ -24,10 +24,21 @@ export const packageFirebaseJson = (hosting) => JSON.stringify({
|
|
|
24
24
|
headers: hosting.headers,
|
|
25
25
|
},
|
|
26
26
|
}, null, 2) + '\n';
|
|
27
|
+
/**
|
|
28
|
+
* O nome do pacote de functions da instalação, e o subcaminho da superfície curada que a Cloud Function
|
|
29
|
+
* do ESCRITÓRIO importa dele: `import { forInstalledExtension } from 'microteia-functions/office'`.
|
|
30
|
+
*
|
|
31
|
+
* O nome é parte do contrato de autoria a partir do momento em que alguém o escreve num import, e por
|
|
32
|
+
* isso ele deixou de ser uma string solta aqui dentro.
|
|
33
|
+
*/
|
|
34
|
+
export const FUNCTIONS_PACKAGE_NAME = 'microteia-functions';
|
|
35
|
+
export const OFFICE_SUBPATH = 'office';
|
|
36
|
+
export const OFFICE_MODULE = `${FUNCTIONS_PACKAGE_NAME}/${OFFICE_SUBPATH}`;
|
|
27
37
|
/**
|
|
28
38
|
* As dependências são copiadas INTACTAS do `functions/package.json` do repositório, para que o
|
|
29
39
|
* `package-lock.json` que viaja junto continue válido. O que muda é só o entrypoint (passa a ser o
|
|
30
|
-
* `index.js` que soma kernel e custom)
|
|
40
|
+
* `index.js` que soma kernel e custom), o `build`, que agora compila apenas `custom/`, e o `exports`,
|
|
41
|
+
* que abre a superfície curada para o `custom/` sem custar uma dependência.
|
|
31
42
|
*/
|
|
32
43
|
/**
|
|
33
44
|
* A `version` não é enfeite: sem ela o npm não consegue formar `nome@versão` e todo aviso dele sobre
|
|
@@ -40,10 +51,29 @@ export const packageFirebaseJson = (hosting) => JSON.stringify({
|
|
|
40
51
|
* o Firebase — o preço errado pela linha de saída.
|
|
41
52
|
*/
|
|
42
53
|
export const packageFunctionsPackageJson = (source, version) => JSON.stringify({
|
|
43
|
-
name:
|
|
54
|
+
name: FUNCTIONS_PACKAGE_NAME,
|
|
44
55
|
version,
|
|
45
56
|
private: true,
|
|
46
57
|
main: 'index.js',
|
|
58
|
+
/**
|
|
59
|
+
* O `exports` está aqui por UMA razão, e ela não é organização: é ele que faz a auto-referência de
|
|
60
|
+
* pacote funcionar. Sem ele, uma Cloud Function do escritório em `custom/` não tem como importar nada
|
|
61
|
+
* da plataforma — não há `node_modules` que a contenha, e um caminho relativo dependeria de onde o
|
|
62
|
+
* arquivo foi montado, que é justamente o que muda entre escrever e deployar.
|
|
63
|
+
*
|
|
64
|
+
* Com ele, `require('${FUNCTIONS_PACKAGE_NAME}/office')` resolve de dentro do próprio pacote. É por
|
|
65
|
+
* isso que não há dependência nova nem alteração no `package-lock.json` que viaja ao lado.
|
|
66
|
+
*
|
|
67
|
+
* O `.` continua sendo o `index.js`: é ele que o Firebase carrega, e restringir os subcaminhos sem
|
|
68
|
+
* declará-lo tiraria a plataforma do ar inteira.
|
|
69
|
+
*/
|
|
70
|
+
exports: {
|
|
71
|
+
'.': './index.js',
|
|
72
|
+
[`./${OFFICE_SUBPATH}`]: {
|
|
73
|
+
types: `./lib/${OFFICE_SUBPATH}/index.d.ts`,
|
|
74
|
+
default: `./lib/${OFFICE_SUBPATH}/index.js`,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
47
77
|
engines: source.engines ?? { node: '22' },
|
|
48
78
|
scripts: {
|
|
49
79
|
build: 'tsc -p custom/tsconfig.json',
|
|
@@ -74,6 +104,16 @@ export const packageCustomTsconfig = () => JSON.stringify({
|
|
|
74
104
|
compilerOptions: {
|
|
75
105
|
module: 'commonjs',
|
|
76
106
|
moduleResolution: 'node',
|
|
107
|
+
/**
|
|
108
|
+
* O `paths` só resolve TIPO; o `require` emitido continua sendo `microteia-functions/office`, e é o
|
|
109
|
+
* `exports` do pacote que o resolve em execução. Os dois lados são necessários porque o
|
|
110
|
+
* `moduleResolution: 'node'` é anterior ao `exports` e não o lê — e trocá-lo por `node16` mudaria,
|
|
111
|
+
* de quebra, como TODO import do escritório resolve.
|
|
112
|
+
*
|
|
113
|
+
* Sem `baseUrl` de propósito: o `paths` relativo ao tsconfig basta desde o TypeScript 4.1, e um
|
|
114
|
+
* `baseUrl` faria qualquer arquivo de `src/` virar um módulo de nome curto por acidente.
|
|
115
|
+
*/
|
|
116
|
+
paths: { [OFFICE_MODULE]: [`../lib/${OFFICE_SUBPATH}/index.d.ts`] },
|
|
77
117
|
target: 'es2022',
|
|
78
118
|
lib: ['ES2022'],
|
|
79
119
|
types: ['node'],
|